我们需要在两个 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 实例或主机上,则需要数据库链接,而且我们并不总是有权创建这些链接。
干杯, 维克多
最佳答案
据我所知,您有两个选择:
使用Popen执行SQL文本/文件,如下所示: Not able to execute sql command through a session created using POPEN in python
打开两个 session ,将数据放入列表/缓冲区并将其插入目标 session (使用绑定(bind))。
https://stackoverflow.com/questions/7963441/
相关文章:
wpf - 如何使用不在代码隐藏中的 XAML 绑定(bind) ListView ItemsSou
ruby-on-rails-3 - Solr/太阳黑子/Rails 3 错误 : undefined
validation - 如何验证电子商务网站的电子邮件地址?
java - 性能 : com. sun.net.httpserver.HttpServer 与 j
html-agility-pack - html 敏捷包和文本中的三角括号
wpf - 从 DataTemplate 中的控件获取 GridViewColumn
drupal - 在 drupal 7 中将表单元素添加到节点以供用户输入