Я пытаюсь проанализировать несколько CSV и вставить их данные в таблицы с помощью cx_Oracle. У меня нет проблем с вставкой в таблицы с использованием execute, но когда я пытаюсь выполнить ту же процедуру с executemany, я получаю сообщение об ошибке. Мой код с использованием execute, который работает
with open(key,'r') as file:
for line in file:
data = data.split(",")
query = "INSERT INTO " + tables[key] + " VALUES ("
for col in range(len(data)):
query += ":" + str(col) + ","
query = query[:-1] + ")"
cursor.execute(query, data)
но когда я заменяю его на
with open(key,'r') as file:
list = []
for line in file:
data = data.split(",")
list.append(data)
if len(list) > 0:
query = "INSERT INTO " + tables[key] + " VALUES ("
for col in range(len(data)):
query += ":" + str(col) + ","
query = query[:-1] + ")"
cursor.prepare(query)
cursor.executemany(None,list)
Я получаю «ValueError: слишком большие строковые данные» при попытке вставить в таблицу, в которой есть столбцы CLOB и размер данных превышает 4000 байтов. Executemany прекрасно работает, когда в таблице нет столбца CLOB. Есть ли способ, которым я могу сказать cx_Oracle обрабатывать соответствующие столбцы как CLOB, когда он выполняется во многих случаях?