导入CSV至DB2执行IMPORT语句时触发SQL0104N错误求助
解决DB2 IMPORT命令触发SQL0104N错误的问题
嘿,这个问题我太熟了——你踩了DB2里一个很容易犯的小坑:IMPORT是DB2命令行工具(CLP)专属的命令,不是标准SQL语句!
你现在的操作应该是在SQL编辑器、JDBC/ODBC连接或者其他只支持执行纯SQL的环境里跑这条IMPORT命令,而SQL解析器根本不认识这个语法,所以才会抛出SQL0104N,提示“意外标记”。
给你两个靠谱的解决办法:
方法一:用DB2官方命令行窗口执行
这是最直接的方式,也是IMPORT命令设计的初衷:
- 打开DB2命令行窗口(Windows搜
db2cmd,Linux/Unix直接在终端里切换到DB2实例用户) - 先连接到目标数据库(如果还没连的话):
db2 connect to 你的数据库名 user 用户名 using 密码 - 直接执行你的IMPORT命令,注意路径可以用双引号包裹避免转义问题:
或者也可以把整段命令用IMPORT FROM "C:\db2\dtest.csv" OF DEL INSERT INTO TEST_DATA.DTEST (CAR, NICKNAME)db2 "..."的形式一键执行:db2 "IMPORT FROM 'C:\db2\dtest.csv' OF DEL INSERT INTO TEST_DATA.DTEST (CAR, NICKNAME)"
方法二:在SQL环境里通过存储过程调用
如果你的场景只能用SQL语句执行(比如应用程序代码、可视化SQL工具),可以用DB2提供的ADMIN_CMD存储过程来间接执行IMPORT操作:
CALL SYSPROC.ADMIN_CMD('IMPORT FROM "C:\db2\dtest.csv" OF DEL INSERT INTO TEST_DATA.DTEST (CAR, NICKNAME)')
⚠️ 这里要注意一个关键点:如果是远程连接数据库,文件路径必须是DB2服务器能访问到的路径(比如服务器本地路径、或者共享给服务器的网络路径),而不是你本地客户端的路径。另外执行这个存储过程需要对应的权限,得确保你的用户有EXECUTE权限在SYSPROC.ADMIN_CMD上,同时对目标表有INSERT权限。
最后补个小提示:Windows路径里的反斜杠有时候会被当成转义字符,遇到问题的话可以把路径改成双反斜杠C:\\db2\\dtest.csv,或者用正斜杠C:/db2/dtest.csv,DB2都能识别。
内容的提问来源于stack exchange,提问作者Mike Pala
相关产品推荐
相关产品推荐

