我正在寻找一些关于如何批量更新记录多达250000条的Oralce SQL表的帮助。在
基本上,我有一个键列表,这些键被传递给一个函数,然后需要更新Oracle表。列表最多可以有250000行,我可以使用普通的update语句或使用“executemany”来完成这项工作,但这两种方法的效率都太低,因此我需要进行批量更新,但我不熟悉如何执行此操作。我已经找了好几个小时了,但还是搞不懂!在todays_date = datetime.now().strftime("%d-%b-%Y")
status = str("DONE")
try:
bind_values = {"status" : str(status),
"todays_date" : todays_date,
"keys_list" : list_of_keys}
query = ("""FORALL i IN :keys_list.FIRST .. :keys_list.LAST
UPDATE TABLE_NAME
SET COLUMN1 = :status,
UPDATE_DATE = :todays_date
WHERE KEY = :i""")
cursor.execute(query, bind_values)
conn.commit()
self.CloseConnection(conn)
except cx_Oracle.DatabaseError, e:
error, = e.args
print(" >> Database error: %s" % format(e))
conn.rollback()
return False
任何帮助都将不胜感激。在
更新
@阿巴内特-非常感谢你的建议,你肯定在这里有所收获,我设法做到了这一点
^{pr2}$
但现在我得到的只是一个错误:“ORA-01036:非法变量名/数”。我确信这是很明显的事情,但我已经检查了一遍又一遍,但我一辈子都看不出我的错在哪里!在
从对这种方法的所有研究来看,这似乎是一个正确的方法…如果我能让它工作起来进行测试!
请帮忙。在