Передача массива длинных строк (> 4000 байт) в хранимую процедуру Oracle (11gR2) с использованием cx_Oracle - PullRequest
0 голосов
/ 29 июля 2010

Нам нужно выполнить массовую загрузку многих длинных строк (> 4000 байт, но <10000 байт), используя cx_OracleТип данных в таблице - CLOB.Нам нужно будет загрузить> 100 миллионов этих строк.Делать это один за другим - это отстой.Делать это массовым способом, то есть с помощью cursor.arrayvar () было бы идеально.Однако CLOB не поддерживает массивы.BLOB, LOB, LONG_STRING LONG_RAW тоже нет.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 30 июля 2010

В интересах того, чтобы сделать дерьмо, которое достаточно хорошо, мы злоупотребили CLOB, который я упомянул в своем комментарии.Потребовалось менее 30 минут, чтобы закодировать, быстро работает и работает.

0 голосов
/ 29 июля 2010

Не подходите к стене, но поскольку вы используете 11gR2, посмотрите на DBFS С точки зрения «загрузки», вы просто копируете файлы, и они «отображаются» как большие объекты.Вы можете сделать то же самое со встроенным FTP-сервером, но обработка файлов намного проще.

Вы просто пишете процедуру, которая извлекает их из представления dbfs_content и передает их в вашу процедуру.

Другое, если все они имеют размер менее 12 000 байт, разделите их на три части и обработайте их как три отдельные строки VARCHAR2 (4000) и снова соедините их на стороне PL / SQL.

...