Как я могу вызвать процедуру Oracle с параметрами массива, используя Delphi / Ado для массовой вставки? - PullRequest
1 голос
/ 14 января 2011

Мне нужно добавить миллионы строк в одну таблицу в базе данных Oracle.После некоторых исследований я обнаружил, что использование массовой вставки даст лучшую производительность.Программа Delphi читает и подготавливает строки для вставки.Как я могу вызвать процедуру с параметрами массива для выполнения массовой вставки?

Ответы [ 3 ]

3 голосов
/ 15 января 2011

С Oracle вы можете использовать функцию Array DML или Direct Path API. В прошлом Direct Path API был в несколько раз быстрее, чем Array DML, но в современных версиях Oracle Array DML всего на несколько процентов медленнее, чем Direct Path API. Но Array DML гораздо более гибок и имеет меньше ограничений, чем Direct Path API! Итак, я предлагаю рассмотреть функцию Array DML.

Стандартные библиотеки доступа к данным Delphi - BDE, dbExpress, dbGo не поддерживают Oracle Array DML и Direct Path API. Итак, вы должны заглянуть в сторонние библиотеки. Я предложу попробовать AnyDAC . Он реализует Array DML не только для Oracle, но и для всех поддерживаемых СУБД. Для получения дополнительной информации о Array DML и его скорости проверьте статьи:

1 голос
/ 14 января 2011

Я не думаю, что вы можете сделать это с помощью ADO.Массовая вставка из варианта массива зависит от Oracle и требует функциональности в клиенте Oracle;ADO намеренно достаточно универсален по своей природе.

Это можно сделать с помощью сторонних компонентов для Oracle Data Access.Их несколько, но единственный, с которым я лично могу порекомендовать для вставки массива массивов, - Direct Oracle Access (DOA). .

0 голосов
/ 14 января 2011

Если у вас есть такие потребности и вы не можете использовать SQL * Loader, лучше всего использовать OCI напрямую (сложный ...) или библиотеку Delphi, которая его оборачивает.Один - DOA (см. Белый ответ), другой - ODAC .Они используют OCI напрямую (ODAC может даже общаться с Oracle напрямую) и позволяет вам использовать расширенные функциональные возможности Oracle.Полученный код может быть не переносимым, но он быстрый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...