使用cx_Oracle将oracle转储文件导入Oracle

时间:2014-05-26 11:02:12

标签: python oracle oracle11g cx-oracle dmp

我正在尝试使用cx_Oracle将转储文件导入Oracle。我能够通过命令执行命令。任何人都可以建议如何做到这一点吗?

我目前正在使用:

imp servicely/tiger@ubuntu file=/home/hemalatha/hemalatha_data/test_data/oracle/schema_only.sql full=y. 

但是,我收到错误: IMP-00037:字符集标记未知

1 个答案:

答案 0 :(得分:0)

我认为你对自己的实际情况感到困惑。

你说

  

我可以通过命令执行命令

并且您所谓的导入文件也有.sql扩展名。我认为你有一个充满SQL语句的脚本。您没有导出文件,该文件是由expexpdp生成的二进制文件。 impimpdp分别用于导入由expexpdp生成的文件。如果你给他们一个SQL脚本来运行,他们会感到困惑。

如果要对数据库运行SQL脚本,请使用SQL * Plus。这是一个简单的SQL * Plus脚本,它没有做太多的事情:

PROMPT Hello, we are in SQL*Plus

SELECT * FROM DUAL;

这是一个简单的Python脚本,用于在SQL * Plus中运行此脚本并显示输出:

import subprocess

script = subprocess.Popen(["sqlplus", "-L", "user/password", "@script.sql"],
                          stderr=subprocess.STDOUT, stdin=subprocess.PIPE,
                          stdout=subprocess.PIPE)
script.stdin.close()  # Force SQL*Plus to exit after reading script.
for line in script.stdout:
    print line.rstrip()

请注意,我们需要连接到SQL * Plus的输入并关闭它,否则SQL * Plus将不会退出并且脚本将挂起。

当我运行它时,我得到以下输出:

SQL*Plus: Release 11.2.0.2.0 Production on Mon May 26 14:22:34 2014

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production

Hello, we are in SQL*Plus

D
-
X

SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production