我正在尝试使用 cx_Oracle 将转储文件导入 Oracle。我能够按命令执行命令。任何人都可以建议如何做到这一点?
我目前正在使用:
imp servicely/tiger@ubuntu file=/home/hemalatha/hemalatha_data/test_data/oracle/schema_only.sql full=y.
但是,我收到了错误:IMP-00037: Character set marker unknown
我认为您对自己实际拥有的东西感到困惑。
你说
我能够按命令执行命令
而且您假定的导入文件也有.sql
扩展名。我认为您有一个充满 SQL 语句的脚本。您没有导出文件,它是由exp
或生成的二进制文件expdp
。 imp
和impdp
分别用于导入 和 生成的exp
文件expdp
。如果你给他们一个 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