You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LOAD DATA LOCAL INFILE导入数据时触发Bash语法错误求助

解决LOAD DATA LOCAL INFILE执行时的bash语法错误

这个错误的根源很明确——bash把你SQL语句里的(当成了shell的特殊语法(比如用于创建子shell),直接解析导致语法出错。要解决这个问题,你只需要把整个SQL语句用引号包裹起来,让bash把它当作一个完整的参数传递给mysql命令,而不会去解析里面的特殊字符。

修正后的命令

推荐用单引号包裹SQL语句(这样里面的双引号不需要转义,更简洁):

mysql -u user -p<pwd> -h <server> --local-infile bsm -sse 'LOAD DATA LOCAL INFILE "/tmp/file.txt" INTO table test_jan2 FIELDS terminated by "|" LINES terminated by "\n" (value1,value2,value3) set id = NULL;'

如果你偏好双引号,记得转义里面的双引号:

mysql -u user -p<pwd> -h <server> --local-infile bsm -sse "LOAD DATA LOCAL INFILE \"/tmp/file.txt\" INTO table test_jan2 FIELDS terminated by \"|\" LINES terminated by \"\n\" (value1,value2,value3) set id = NULL;"

额外注意事项

  1. 安全提示:直接在命令行写密码-p<pwd>会导致密码留在shell的命令历史里,建议改成只写-p,然后交互式输入密码,更安全。
  2. 字段处理:你的表结构里还有date_created字段,当前语句没有对它做任何处理,因为它允许为NULL,所以导入时会自动设为NULL。如果需要给这个字段赋值(比如设置为当前时间),可以在set子句里加上date_created = NOW(),修改后的SQL部分如下:
    LOAD DATA LOCAL INFILE "/tmp/file.txt" INTO table test_jan2 FIELDS terminated by "|" LINES terminated by "\n" (value1,value2,value3) set id = NULL, date_created = NOW();
    

内容的提问来源于stack exchange,提问作者noob_coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:53:13