我有一个函数可以将一大块数据插入到 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 列,则可以正常工作。只有当 chunksize 设置为 1 或 2 时,它才适用于具有 CLOB 列的表。有时它适用于 3,但大多数时候它不适用。当块大小为 4 时,我什至让它工作了一次。我正在使用这个函数将块大小设置为 1000 左右以加快进程。
当 chunksize 设置为 3 时,有时会返回以下错误:
ORA-24813: 无法发送或接收不受支持的 LOB。
有时它说中止并停止脚本。
知道为什么这个脚本每次使用相同的参数运行时都会有不同的行为吗?