powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возможен ли параметрический insert all?
9 сообщений из 9, страница 1 из 1
Возможен ли параметрический insert all?
    #39970788
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно синхронизироваться с внешней системой, которая отдает данные в JSON (несколько тысяч записей).
Я перепробовал несколько разных способов, в которых смог разобраться, и самым оптимальным получилось загружать данные без обработки в temp-таблицу (буфер), а затем работать с буфером.
Загружаю я данные построчно, с помощью insert into ... values (?, ?, ...).
В принципе скорость работы меня устраивает, все загружается за пару секунд.
Но мне кажется, что если заменить несколько тысяч insert на один большой insert all, то это бы ускорило работу и снизило нагрузку на сервер.
Но в этом случае мне нужно будет динамически формировать огромный SQL и экранировать в нем спецсимволы, чего я стараюсь избегать.
Не подскажите, можно ли в подобных случаях передавать в запрос коллекцию или массив с данными?
...
Рейтинг: 0 / 0
Возможен ли параметрический insert all?
    #39970792
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

forall?
...
Рейтинг: 0 / 0
Возможен ли параметрический insert all?
    #39970793
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
Не подскажите, можно ли в подобных случаях передавать в запрос коллекцию или массив с данными?

Да.

https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/forall_statement.htm
...
Рейтинг: 0 / 0
Возможен ли параметрический insert all?
    #39970795
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forall это ведь PL/SQL?
А не подскажите, как воспользоваться этим с клиента?
Я никак не могу сообразить. Если на клиенте формировать блок PL/SQL, то это мало чем будет отличаться, все тот же большой сгенерированный SQL и необходимость экранирования спецсимволов. А вот чтобы передать с клиента на сервер массив/коллекцию (в виде параметра) — я примеры видел только для Java EE, и они сильно отличаются от привычных.
...
Рейтинг: 0 / 0
Возможен ли параметрический insert all?
    #39970796
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.

А не подскажите, как воспользоваться этим с клиента?

Читать документацию по клиенту

OCI и JDBC - точно поддерживают

А что у Вас за клиент, кроме Вас никто не знает. Кофе закончилось. Погадать на кофейной гуще не могу.
...
Рейтинг: 0 / 0
Возможен ли параметрический insert all?
    #39970803
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жаль.
Клиент Perl+DBI, но в нем видимо эти возможности (коллекции и рекордсеты) не реализованы.
В нем есть метод execute_array, в который можно передать массив значений для каждого параметра, но судя по тому, как он выполняется, это просто оптимизированный внутри цикл с последовательным выполнением обычного запроса.
...
Рейтинг: 0 / 0
Возможен ли параметрический insert all?
    #39970815
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

с клиента "несколько тысяч записей" за пару секунд, как на меня неплохо

forall/вставка массивом по идее должна быть быстрее

пробуйте

но если устраивает то ...

.....
stax
...
Рейтинг: 0 / 0
Возможен ли параметрический insert all?
    #39970847
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторс внешней системой это db link?
Тогда forall как говорится нельзя использовать можно заменить на ...
...
Рейтинг: 0 / 0
Возможен ли параметрический insert all?
    #39970870
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
с клиента "несколько тысяч записей" за пару секунд, как на меня неплохо

Это вообще весь скрипт столько выполняется.
Если исключить получение внешних данных и посчитать только время "заливки" данных в БД, то там меньше секунды.

K790
это db link?

Нет, это веб-сервис с REST-интерфейсом, который возвращает JSON.
Он не предназначен для интенсивной нагрузки, поэтому БД выполняет роль промежуточного кеша.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возможен ли параметрический insert all?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]