EXPORT TO myFile.ixf OF ixf SELECT * FROM TABLE_NAME WHERE SSN='DATA' AND EMPLOYER_ID=DATA AND CREATED_TS='DATA'
我正在使用此语句导出几行。出于隐私目的,必要时已插入DATA。但是会产生以下错误。我已经关注了IBM的出口指南,觉得这应该是正确的,但不确定到底是什么问题。错误日志如下
Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=myFile;EXPORT TO ;JOIN, DRIVER=3.53.70
SQLState: 42601
ErrorCode: -104
答案 0 :(得分:1)
正如已经说过的那样,你不能直接从普通的SQL运行Db2命令(例如导入,导出,加载......等),正如你试图通过JDBC那样。
相反,如果你的Db2服务器在Linux / Unix / Windows上运行,你可以使用存储过程,或者(对于任何Db2服务器操作系统)你可以使用命令行。
但是,当您对Db2-LUW使用存储过程SYSPROC.ADMIN_CMD时,存储过程参数中的所有文件名都是相对于Db2-server (而不是您的远程jdbc-client) ,如果你正在远程运行)。 这意味着在通过存储过程成功导出后,如果您确实需要将导出的IXF文件放在工作站上,那么您必须使用您为此目的使用的任何工具将文件传输到工作站。
例如,这显示在Unix上导出到Db2服务器上/ tmp中的IXF文件:
call sysproc.admin_cmd('EXPORT TO /tmp/myFile.ixf OF ixf SELECT * FROM user1.stk1 with ur') ;
如果不想要使用存储过程,则必须使用命令行shell(例如在Windows上,使用db2ntcmd.bat,或在Unix上使用bash或ksh)和连接到shell中的数据库并执行导出。这要求工作站具有Db2客户端,并且首先要对相关数据库和节点进行编目。
如果您指定Db2版本和运行Db2服务器的操作系统,那么您将获得更多详细信息。