含多行文本、引号及逗号的CSV文件上传MySQL失败求助
MySQL CSV上传含特殊格式文本的解决方法
1. 修正CSV文件的引号转义规则
CSV规范里,字段内的双引号必须用两个双引号转义,你当前的行里"awsome"应该改成""awsome"",修正后该行内容应为:
12345,SomeCoolName,"this is my ""awsome"" comment.
some more text, and dome more.
and some ""more""
2. 配置LOAD DATA命令的正确参数
用LOAD DATA命令上传时,必须明确指定字段分隔符、包围符和转义符,适配你的CSV格式。示例命令如下:
LOAD DATA LOCAL INFILE '/path/to/your/file.csv' INTO TABLE your_table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' -- Windows系统换成'\r\n' (review_id, user, text);
ENCLOSED BY '"':告诉MySQL字段被双引号包围ESCAPED BY '"':指定用双引号转义字段内的双引号LINES TERMINATED BY:根据你的操作系统换行符调整,避免多行文本被误判为新行
3. 使用MySQL Workbench图形化上传(适合非命令行用户)
- 打开Workbench,连接到目标数据库,右键目标表选择Table Data Import Wizard
- 选择你的CSV文件,进入字段映射步骤
- 在Advanced Options里设置:
- Field Separator:
, - Enclosed By:
" - Escape Character:
" - 勾选Allow fields to contain line breaks
- Field Separator:
- 完成后续步骤即可正确导入
4. 批量预处理CSV文件(适合大量数据)
如果有大量需要修正的行,可以用简单脚本批量处理,比如Python示例:
import csv input_path = "input.csv" output_path = "fixed.csv" with open(input_path, 'r', newline='', encoding='utf-8') as infile, \ open(output_path, 'w', newline='', encoding='utf-8') as outfile: reader = csv.reader(infile, quotechar='"', doublequote=True, skipinitialspace=True) writer = csv.writer(outfile, quotechar='"', doublequote=True, quoting=csv.QUOTE_ALL) for row in reader: writer.writerow(row)
这个脚本会自动处理字段内的双引号转义和多行文本,生成符合规范的CSV文件。
内容的提问来源于stack exchange,提问作者james2471993
相关产品推荐
相关产品推荐

