python连接oracle批量写⼊_使⽤Python批量更新
SQL(Oracle)
我正在寻⼀些关于如何批量更新Oralce SQL表的帮助,记录最多为250,000。
基本上我有⼀个传递给函数的键列表,然后需要更新Oracle表。该列表最多可以包含250,000⾏,我可以使⽤普通更新语句或使
⽤'executemany'来执⾏此操作,但这两种⽅法效率都太低,因此我需要进⾏批量更新,但我不熟悉如何执⾏此操作。我已经搜索了⼏个⼩时,但我⽆法解决这个问题!
todays_date = w().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""")
connmit()
self.CloseConnection(conn)
except cx_Oracle.DatabaseError, e:
error, = e.args
print(" >> Database error: %s" % format(e))
批量更新sql语句return False
任何帮助将不胜感激。
更新
@abarnert - ⾮常感谢你的建议,你肯定在这⾥做点什么,我设法得到这个⽬标
(key STRING PRIMARY KEY)
on commit delete rows
AS (INSERT INTO TodaysKeys VALUES (:i))
UPDATE TABLE_NAME
SET COLUMN1 = :status,
UPDATE_DATE = :todays_date
WHERE KEY IN (SELECT * FROM TodaysKeys)
TABLE TodaysKeys""", i=keys_list,
status=str(updatestatus),
todays_date=todays_date)
但现在我得到的只是⼀个错误:“ORA-01036:⾮法变量名称/号码”。我确信这是⾮常明显的事情,但我已经检查过并且重新检查了但是在我的⽣活中不能看到我哪⾥出错了!
从对这种⽅法的所有研究中,它似乎是正确的⽅法......如果我能让它正在进⾏测试!
请帮忙。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。