上一篇                     
               
			  MySQL如何快速导入CSV文件?
- 数据库
 - 2025-06-27
 - 4389
 
 使用LOAD DATA INFILE命令导入CSV文件到MySQL数据库,需指定文件路径、目标表名,并确保列顺序或名称匹配,也可通过MySQL Workbench等工具的图形界面导入,注意文件权限和分隔符设置。
 
准备工作
-  
CSV文件规范
- 文件必须是标准CSV格式(逗号分隔,文本用双引号包裹)
 - 列顺序需与目标表字段一致(或通过命令指定映射)
 - 示例文件 
data.csv内容:id,name,email 1,"张三","zhangsan@example.com" 2,"李四","lisi@test.org"
 
 -  
数据库端准备
- 创建目标表(字段类型匹配CSV数据): 
CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) ); - 确保MySQL用户有 
FILE权限(检查权限命令):SHOW GRANTS FOR 'your_user'@'localhost';
 
 - 创建目标表(字段类型匹配CSV数据): 
 
通过MySQL命令行导入(高效推荐)
步骤:

-  
登录MySQL:
mysql -u root -p
 -  
执行导入命令(关键参数说明):

LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users FIELDS TERMINATED BY ',' -- 分隔符为逗号 OPTIONALLY ENCLOSED BY '"' -- 文本引号为双引号 LINES TERMINATED BY 'n' -- 换行符(Windows需设为'rn') IGNORE 1 LINES; -- 忽略首行标题
路径问题处理:
- 如果报错 
ERROR 1290,需将CSV文件移至MySQL安全目录:SHOW VARIABLES LIKE 'secure_file_priv'; -- 查询允许路径
将文件复制到返回的目录(如
/var/lib/mysql-files/)后重试。
 
 - 如果报错 
 
通过MySQL Workbench导入(图形化操作)
- 右键点击目标表 → Table Data Import Wizard
 - 选择CSV文件 → 配置选项: 
  
- Format: CSV
 - Field Separator:
 - Text Qualifier:
 - 勾选 
Ignore first line) 
 - 匹配列映射:确保CSV列与表字段对应
 - 点击 Next → Apply 执行导入
 
常见错误及解决方案
| 错误类型 | 原因 | 解决方法 | 
|---|---|---|
ERROR 1290 |  
   文件不在安全目录 | 移动文件至 secure_file_priv 指定路径 |  
  
ERROR 1062 |  
   主键/唯一键冲突 | 删除重复数据或添加 IGNORE 关键字 |  
  
| 中文乱码 | 文件编码非UTF-8 | 用文本编辑器将CSV另存为UTF-8格式 | 
| 列数不匹配 | CSV与表结构不一致 | 调整CSV列或使用SET手动映射字段(例: LOAD DATA ... (col1,col2)) |  
  
安全与优化建议
- 必做备份:导入前备份表防止误操作 
CREATE TABLE users_backup AS SELECT * FROM users;
 - 性能提升:大文件导入时临时禁用索引 
ALTER TABLE users DISABLE KEYS; -- 执行导入命令 -- ALTER TABLE users ENABLE KEYS;
 - 防注入风险:避免直接导入来源不可信的CSV(可能含反面SQL)
 
- 命令行适合批量处理大文件,需注意文件路径和权限
 - Workbench适合初学者,可视化操作更直观
 - 始终验证数据完整性:导入后执行 
SELECT COUNT(*) FROM users核对行数 
引用说明:本文操作基于MySQL 8.0官方文档[1],安全规范参考OWASP数据注入防护指南[2]。
[1] MySQL LOAD DATA Syntax: https://dev.mysql.com/doc/refman/8.0/en/load-data.html
[2] OWASP Data Validation: https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html
			