当前位置:首页 > 数据库 > 正文

MySQL如何快速导入CSV文件?

使用LOAD DATA INFILE命令导入CSV文件到MySQL数据库,需指定文件路径、目标表名,并确保列顺序或名称匹配,也可通过MySQL Workbench等工具的图形界面导入,注意文件权限和分隔符设置。

准备工作

  1. CSV文件规范

    • 文件必须是标准CSV格式(逗号分隔,文本用双引号包裹)
    • 列顺序需与目标表字段一致(或通过命令指定映射)
    • 示例文件 data.csv 内容:
      id,name,email
      1,"张三","zhangsan@example.com"
      2,"李四","lisi@test.org"
  2. 数据库端准备

    • 创建目标表(字段类型匹配CSV数据):
      CREATE TABLE users (
          id INT PRIMARY KEY,
          name VARCHAR(50),
          email VARCHAR(100)
      );
    • 确保MySQL用户有 FILE 权限(检查权限命令):
      SHOW GRANTS FOR 'your_user'@'localhost';

通过MySQL命令行导入(高效推荐)

步骤:

MySQL如何快速导入CSV文件?  第1张

  1. 登录MySQL:

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

    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导入(图形化操作)

  1. 右键点击目标表 → Table Data Import Wizard
  2. 选择CSV文件 → 配置选项:
    • Format: CSV
    • Field Separator:
    • Text Qualifier:
    • 勾选 Ignore first line
  3. 匹配列映射:确保CSV列与表字段对应
  4. 点击 NextApply 执行导入

常见错误及解决方案

错误类型 原因 解决方法
ERROR 1290 文件不在安全目录 移动文件至 secure_file_priv 指定路径
ERROR 1062 主键/唯一键冲突 删除重复数据或添加 IGNORE 关键字
中文乱码 文件编码非UTF-8 用文本编辑器将CSV另存为UTF-8格式
列数不匹配 CSV与表结构不一致 调整CSV列或使用SET手动映射字段
(例:LOAD DATA ... (col1,col2)

安全与优化建议

  1. 必做备份:导入前备份表防止误操作
    CREATE TABLE users_backup AS SELECT * FROM users;
  2. 性能提升:大文件导入时临时禁用索引
    ALTER TABLE users DISABLE KEYS;
    -- 执行导入命令 --
    ALTER TABLE users ENABLE KEYS;
  3. 防注入风险:避免直接导入来源不可信的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

0