У меня есть функция, которая вставляет порцию данных в базу данных Oracle. Я пытаюсь добиться этого с помощью executemany.
Моя функция выглядит так:
def InsertChunk(self):
try:
if len(self.list_dict_values) >= self.chunksize:
self.db.cursor.executemany(
str(self.insert_sql),
self.list_dict_values
)
self.list_dict_values = []
except cx_Oracle.Error, e:
print e
Эта функция используется многими таблицами и прекрасно работает, если в этих таблицах нет столбца CLOB. Он работает с таблицами со столбцами CLOB, только если для chunksize задано значение 1 или 2. Иногда он работает с 3, но в большинстве случаев это не так. Я даже работал один раз, когда размер фрагмента был 4. Я использую эту функцию, чтобы установить размер фрагмента около 1000, чтобы ускорить процесс.
Когда размер фрагмента равен 3, иногда возвращается следующая ошибка:
ORA-24813: невозможно отправить или получить неподдерживаемый большой объект.
А иногда он говорит, что прерван и останавливает сценарий.
Есть идеи, почему этот скрипт имеет разное поведение при каждом запуске с одинаковыми параметрами?