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

MySQL LOAD DATA INFILE 曾正常运行后突然报ENCLOSED BY语法错误

问题根因

你的报错是LOAD DATA INFILE语句的参数顺序不符合MySQL语法规则导致的,和ENCLOSED BY本身功能无关:
MySQL要求FIELDS相关的所有配置项(TERMINATED BY、ENCLOSED BY、ESCAPED BY)必须作为连续子句放在一起,不能把LINES相关的配置插在FIELDS的两个参数中间。
你报错的语句存在顺序错误:

mysql> LOAD DATA INFILE "C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\earthquakes.csv"
    -> INTO TABLE sql_earthquakes.tremblor2
    -> FIELDS TERMINATED BY ','
    -> LINES TERMINATED BY '\n' -- 此处错误将LINES子句插入到FIELDS子句的两个参数中间
    -> ENCLOSED BY '"'
    -> IGNORE 1 LINES;

而后续执行成功的语句,是将ENCLOSED BY '"'放回了FIELDS子句内、LINES子句放在FIELDS子句之后,符合语法要求,因此可以正常运行。
至于复制粘贴相同语句也报错的问题,大概率是复制时不小心错乱了行序,或粘贴时多插入了换行导致参数顺序被打乱。


解决方法

  • 严格遵循LOAD DATA INFILE的固定语法顺序编写语句,核心顺序如下:
    1. LOAD DATA INFILE + 文件路径
    2. INTO TABLE + 目标表名
    3. 可选的字符集配置
    4. 所有FIELDS相关配置(连续编写,不要插入其他子句)
    5. 所有LINES相关配置(连续编写,放在FIELDS配置之后)
    6. IGNORE N LINES + 可选的列映射规则
  • 日常使用时可以固定把FIELDS的常用参数连在一起写,比如固定格式为FIELDS TERMINATED BY ',' ENCLOSED BY '"',写完后再编写LINES相关配置,避免顺序错乱。

另外你后续成功执行时出现的27759条警告,是因为表中occurred_on字段为date类型,如果CSV中该列存储的是带时分秒的时间格式,导入时会自动截断导致警告,将字段类型改为datetime或导入时增加格式转换逻辑即可消除警告。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:36:04