【发布时间】:2011-09-02 03:27:48
【问题描述】:
我有一个函数可以将一大块数据插入到 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。
有时它会说已中止并停止脚本。
知道为什么这个脚本每次使用相同的参数运行时都会有不同的行为吗?
【问题讨论】:
-
除了
if语句之外,chunksize在哪里使用?
标签: python cx-oracle executemany