我们需要在两个 Oracle 数据库模式之间复制记录。
手动,我们可以使用 SQL*PLUS COPY 命令执行此操作:
http://www.oracleutilities.com/SQLPLus/copy.html
但是,如果可能,我们希望使用 cx_Oracle 自动执行此操作(我们还需要做一些其他事情 - 例如 SSH 交互,因此使用 Python 和 cx_Oracle)。
但是,如果我尝试在 cx_Oracle 中执行 COPY,它似乎不喜欢该命令:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cx_Oracle.DatabaseError: ORA-00900: invalid SQL statement
我猜这是因为 COPY 是 SQL*PLUS 特定命令,而不是标准 SQL 规范的一部分?
无论如何,有没有办法让 COPY 命令(或任何其他 SQL*PLUS 特定扩展)在 cx_Oracle 下工作?
我相信可以使用 INSERT INTO...SELECT 来实现类似的效果,但是如果有问题的两个数据库位于不同的 Oracle 实例或主机上,则需要一个数据库链接,并且我们并不总是有权创建这些链接。
干杯,维克多