MySQL LOAD DATA导入含嵌入引号的^分隔CSV参数配置咨询
解决方案
针对你的CSV导入需求,正确的配置如下(以MySQL的LOAD DATA INFILE为例):
LOAD DATA INFILE '/path/to/your/csv/file.csv' INTO TABLE your_target_table FIELDS TERMINATED BY '^' ENCLOSED BY '' ESCAPED BY '"';
配置说明:
FIELDS TERMINATED BY '^':保留该设置,这是匹配你CSV文件的正确字段分隔规则ENCLOSED BY '':关闭字段包裹功能,避免系统误将字段内的双引号或脱字符当作字段包裹符,解决之前的死循环和报错问题ESCAPED BY '"':将双引号设为转义符,字段内的""会被解析为单个字面量双引号,满足你导入嵌入引号的需求
如果你的需求是完全保留字段内的""作为字面量(不转义为单个双引号),则将ESCAPED BY设为空字符串:
LOAD DATA INFILE '/path/to/your/csv/file.csv' INTO TABLE your_target_table FIELDS TERMINATED BY '^' ENCLOSED BY '' ESCAPED BY '';
之前配置出错的原因:
- 同时设置
ENCLOSED BY '"'和ESCAPED BY '"':系统会尝试寻找被双引号包裹的字段,但你的字段实际由^分隔,字段开头是"",不符合双引号包裹的规则,因此触发报错 - 设置
ENCLOSED BY '^':脱字符同时作为分隔符和包裹符,逻辑冲突,导致系统陷入死循环 - 设置
ESCAPED BY '~'但未关闭包裹功能:系统仍然会错误解析字段内的引号,或因包裹符配置错误引发死循环
内容的提问来源于stack exchange,提问作者Bill Parker
相关产品推荐
相关产品推荐

