【问题标题】:cx_OracleTools CopyData.py - using without a PK constraint?cx_OracleTools CopyData.py - 在没有 PK 约束的情况下使用?
【发布时间】:2011-11-07 23:10:57
【问题描述】:

我正在尝试使用 cx_OracleTool 的 CopyData.py 脚本在不同的 Oracle 模式/实例上的两个表之间复制数据:

http://cx-oracletools.sourceforge.net/cx_OracleTools.html

当我对我的表运行它时,我得到了错误:

No primary or unique constraint found on table.

说实话,我对 Oracle 了解不多,但据我所知,这些表似乎没有任何 PK 约束或类似的定义。

撇开它的优点不谈,我认为它只是为了权宜之计而设置的,短期内不太可能改变。

有没有办法让 copyData.py 在没有 PK 约束的情况下在这种情况下运行?

干杯, 维克多

【问题讨论】:

    标签: database oracle copying


    【解决方案1】:

    问题是 CopyData 会检查目标表中是否存在该行,如果没有唯一键,它就无法做到这一点。

    如果可以接受插入所有行而不更新更改的行,请使用 --no-check-exists 选项。根据代码,这将绕过主键检查。

    否则,请使用 --key-columns=COLS 选项手动指定要用作唯一键的列。这也将绕过主键检查。

    【讨论】:

    • 太棒了,谢谢,是的,效果很好 =)。我没有意识到它使用 PK 来检查现有记录 - 这是有道理的。现在,我只需要弄清楚如何直接从另一个 Python 运行 CopyData - 它不是特别面向 OO 甚至不是基于函数的,所以我认为这可能需要一些麻烦。我宁愿不调用 subprocess 只是为了运行另一个 Python 脚本。
    • 不幸的是,它不适合编程使用:一切都是内联的,甚至没有任何函数(!)。除非您想花一些精力重写脚本,否则 subprocess 可能是您最好的方法。
    猜你喜欢
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    相关资源
    最近更新 更多