我试图通过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)')
我做错了什么?任何帮助将不胜感激。答案 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 ...
相反,后者将文件写入启动实用程序的任何计算机上(无论是数据库服务器还是通过网络连接的客户端)。