【发布时间】:2019-03-16 17:55:41
【问题描述】:
在这里,我想批量更新记录。就像我的程序应该将初始 50k 记录更新为 null 并提交并更新每个记录。它应该再次选择下一个 50k 记录并执行相同操作。
>>> import cx_Oracle
>>> con = cx_Oracle.connect('ods/odss@dwdb3.test.com/DWdb3')
>>> cur = con.cursor()
>>> statement = ('UPDATE dumy_uvcredit set CCNUMBEREXT=null')
>>> cur.execute(statement)
>>> con.commit()
【问题讨论】:
-
您想从 python 执行此操作并运行批量更新的任何具体原因?它看起来像一次更新操作。为什么不简单地运行一次语句呢?或者您可以查看用于此类批量更新的 ctas 技术asktom.oracle.com/pls/asktom/…
-
这里我们的表中有大量数据,当我们通过触发 sql 语句一次性在任何列上运行更新语句时,它会创建巨大的日志文件,并且会在生产中的现有作业中产生问题。
-
所以我想用python来做,只给commit的阈值50k。意味着代码将在50k之后执行语句并提交。这里我们没有任何标识符,只有3个需要从表中更新列。所有值都没有过滤器。
-
是否有一些日期列可用于一次更新一周或一天一次?您可以在每次更新后提交。
-
什么巨大的日志文件? 生产中现有工作存在什么问题?如果它少于一百万或两行,我会一次性完成更新,也许使用并行 DML 来加速它。如果您的数据库不能一次更新一百万行,那么您可能需要一台更好的笔记本电脑。
标签: python oracle oracle-sqldeveloper cx-oracle