0

我正在尝试通过 python pyodbc 模块运行以下 db2 命令

IBM DB2 命令:“DB2 导出到 C:\file.ixf of ixf select * from emp_hc”

我已使用 python 中的 pyodbc 模块成功连接到 DSN,并且适用于 select 语句

但是当我尝试从 Python IDLE 3.3.2 执行以下命令时

cursor.execute("export to ? of ixf select * from emp_hc",r"C:\file.ixf") pyodbc.ProgrammingError: ('42601', '[42601] [IBM][CLI Driver][DB2/LINUXX8664 ] SQL0104N 在“BEGIN-OF-STATEMENT”之后发现了意外的标记“db2 export to ? of”。预期的标记可能包括:“”。SQLSTATE=42601\r\n (-104) (SQLExecDirectW)')

或 cursor.execute("export to C:\file.ixf of ixf select * from emp_hc")

回溯(最后一次调用):文件“”,第 1 行,在 cursor.execute("export to C:\myfile.ixf of ixf select * from emp_hc") pyodbc.ProgrammingError: ('42601', '[42601] [IBM][CLI Driver][DB2/LINUXX8664] SQL0007N "export to C:" 后面的字符 "\" 无效。SQLSTATE=42601\r\n (-7) (SQLExecDirectW)')

难道我做错了什么 ?任何帮助将不胜感激。

4

2 回答 2

1

db2 export是在 shell 中运行的命令,而不是通过 odbc 的 SQL。

可以使用 python 和 pyodbc 将数据库查询结果写入文件,但db2 export如果您需要导入文件格式,几乎可以肯定会更快、更轻松地处理文件格式。

于 2013-08-08T20:02:27.760 回答
1

由于EXPORT是实用程序而不是 SQL 语句,因此您无法通过普通 SQL 界面直接运行它。

幸运的是,IBM 提供了SYSPROC.ADMIN_CMD()存储过程,让您可以做您正在寻找的事情。

但是请注意,使用SYSPROC.ADMIN_CMD()只能将导出的数据写入数据库服务器上的某个位置。(这与使用db2 export ...which 将文件写入您正在启动该实用程序的任何机器(无论是数据库服务器还是通过网络连接的客户端)相反。

于 2013-08-09T06:10:12.333 回答