複数の 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)
データが 4000 バイトを超える CLOB 列を持つテーブルに挿入しようとすると、「ValueError: string data too large」というメッセージが表示されます。Executemany は、テーブルに CLOB 列がない場合にうまく機能します。executemany を実行するときに、適切な列を CLOB として扱うように cx_Oracle に指示する方法はありますか?