|
Возможен ли параметрический insert all?
|
|||
---|---|---|---|
#18+
Мне нужно синхронизироваться с внешней системой, которая отдает данные в JSON (несколько тысяч записей). Я перепробовал несколько разных способов, в которых смог разобраться, и самым оптимальным получилось загружать данные без обработки в temp-таблицу (буфер), а затем работать с буфером. Загружаю я данные построчно, с помощью insert into ... values (?, ?, ...). В принципе скорость работы меня устраивает, все загружается за пару секунд. Но мне кажется, что если заменить несколько тысяч insert на один большой insert all, то это бы ускорило работу и снизило нагрузку на сервер. Но в этом случае мне нужно будет динамически формировать огромный SQL и экранировать в нем спецсимволы, чего я стараюсь избегать. Не подскажите, можно ли в подобных случаях передавать в запрос коллекцию или массив с данными? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 10:58 |
|
Возможен ли параметрический insert all?
|
|||
---|---|---|---|
#18+
Alibek B., forall? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 11:12 |
|
Возможен ли параметрический insert all?
|
|||
---|---|---|---|
#18+
Alibek B. Не подскажите, можно ли в подобных случаях передавать в запрос коллекцию или массив с данными? Да. https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/forall_statement.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 11:12 |
|
Возможен ли параметрический insert all?
|
|||
---|---|---|---|
#18+
forall это ведь PL/SQL? А не подскажите, как воспользоваться этим с клиента? Я никак не могу сообразить. Если на клиенте формировать блок PL/SQL, то это мало чем будет отличаться, все тот же большой сгенерированный SQL и необходимость экранирования спецсимволов. А вот чтобы передать с клиента на сервер массив/коллекцию (в виде параметра) — я примеры видел только для Java EE, и они сильно отличаются от привычных. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 11:18 |
|
Возможен ли параметрический insert all?
|
|||
---|---|---|---|
#18+
Alibek B. А не подскажите, как воспользоваться этим с клиента? Читать документацию по клиенту OCI и JDBC - точно поддерживают А что у Вас за клиент, кроме Вас никто не знает. Кофе закончилось. Погадать на кофейной гуще не могу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 11:20 |
|
Возможен ли параметрический insert all?
|
|||
---|---|---|---|
#18+
Жаль. Клиент Perl+DBI, но в нем видимо эти возможности (коллекции и рекордсеты) не реализованы. В нем есть метод execute_array, в который можно передать массив значений для каждого параметра, но судя по тому, как он выполняется, это просто оптимизированный внутри цикл с последовательным выполнением обычного запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 11:31 |
|
Возможен ли параметрический insert all?
|
|||
---|---|---|---|
#18+
Alibek B., с клиента "несколько тысяч записей" за пару секунд, как на меня неплохо forall/вставка массивом по идее должна быть быстрее пробуйте но если устраивает то ... ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 12:01 |
|
Возможен ли параметрический insert all?
|
|||
---|---|---|---|
#18+
авторс внешней системой это db link? Тогда forall как говорится нельзя использовать можно заменить на ... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 12:56 |
|
Возможен ли параметрический insert all?
|
|||
---|---|---|---|
#18+
Stax с клиента "несколько тысяч записей" за пару секунд, как на меня неплохо Это вообще весь скрипт столько выполняется. Если исключить получение внешних данных и посчитать только время "заливки" данных в БД, то там меньше секунды. K790 это db link? Нет, это веб-сервис с REST-интерфейсом, который возвращает JSON. Он не предназначен для интенсивной нагрузки, поэтому БД выполняет роль промежуточного кеша. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 13:37 |
|
|
start [/forum/topic.php?fid=52&fpage=43&tid=1881134]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 317ms |
total: | 450ms |
0 / 0 |