使用pyodbc模块python sql import export命令错误

时间:2013-08-08 19:24:52

标签: python sql db2 pyodbc

我试图通过python pyodbc模块运行以下db2命令

IBM DB2 Command:“DB2导出到ixf的C:\ file.ixf,从emp_hc中选择*”

我使用python中的pyodbc模块成功连接到DSN,并且对于select语句工作正常

但是当我尝试从Python IDLE 3.3.2

执行以下命令时

cursor.execute(“导出到?of ixf select * from emp_hc”,r“C:\ file.ixf”) pyodbc.ProgrammingError:('42601','[42601] [IBM] [CLI驱动程序] [DB2 / LINUXX8664] SQL0104N在“BEGIN-OF-STATEMENT”后面发现了一个意外的令牌“db2 export to?of”。预期的令牌可能包括:“”。SQLSTATE = 42601 \ r \ n(-104)(SQLExecDirectW)')

或 cursor.execute(“导出到ixf的C:\ file.ixf选择*来自emp_hc”)

追踪(最近一次通话):   文件“”,第1行,in     cursor.execute(“导出到ixf select * from emp_hc的C:\ myfile.ixf”) pyodbc.ProgrammingError:('42601','[42601] [IBM] [CLI驱动程序] [DB2 / LINUXX8664] SQL0007N“导出到C:”后面的字符“\”无效.SQLSTATE = 42601 \ r \ n(n -7)(SQLExecDirectW)')

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

由于EXPORT是一个实用程序而不是SQL语句,因此无法通过普通的SQL接口直接运行它。

幸运的是,IBM提供了SYSPROC.ADMIN_CMD()存储过程,以便您可以实现looking for

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