python - 从 cx_Oracle 内部使用 SQL*PLUS COPY?

我们需要在两个 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 实例或主机上,则需要数据库链接,而且我们并不总是有权创建这些链接。

干杯, 维克多

最佳答案

据我所知,您有两个选择:

  1. 使用Popen执行SQL文本/文件,如下所示: Not able to execute sql command through a session created using POPEN in python

  2. 打开两个 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 中将表单元素添加到节点以供用户输入

.net - 有没有人使用 DbEnumerator

xml - 为什么没有 XMLNS 前缀的 XML 属性不等于具有相同本地名称的前缀属性?

hibernate - 在 Java 构建路径中添加 jar 之前,无法通过在 pom.xml 中添