MySQL 导入资料详细说明

目录

1. 准备工作

2. 常用导入方法

方法 1:使用 LOAD DATA INFILE 命令

方法 2:使用 mysqlimport 命令行工具

方法 3:使用 INSERT 语句(不推荐大量数据)

3. 最佳实践和常见问题

4. 总结


MySQL 导入数据是将外部数据文件(如 CSV、TXT 等)加载到数据库表中的过程。高效导入可提升性能,避免手动插入的低效性。以下是逐步指南,涵盖常用方法、语法、示例和注意事项。所有命令基于 MySQL 8.0+ 版本。


1. 准备工作

在导入前,确保:

  • 数据文件格式正确:如 CSV 文件使用逗号分隔字段,每行以换行符结束。
  • 目标表已创建:表结构与数据文件列匹配。
  • 文件路径可访问:MySQL 需有权限读取文件(本地文件需启用 local_infile 参数)。
  • 备份数据:防止意外覆盖。

2. 常用导入方法

MySQL 支持多种方式,推荐使用 LOAD DATA INFILE(高效批量导入)或 mysqlimport 工具。

方法 1:使用 LOAD DATA INFILE 命令

这是最快速的方法,直接从文件加载到表。

  • 语法
    LOAD DATA INFILE '文件路径'
    INTO TABLE 表名
    FIELDS TERMINATED BY '分隔符'
    ENCLOSED BY '引号字符'
    LINES TERMINATED BY '行结束符'
    IGNORE 1 LINES; -- 忽略标题行

  • 参数说明
    • FIELDS TERMINATED BY:字段分隔符(如 ',' 为 CSV)。
    • ENCLOSED BY:字段包围符(如 '"')。
    • LINES TERMINATED BY:行结束符(如 '\n')。
    • IGNORE n LINES:跳过前 n 行(常用于跳过标题)。
  • 示例:导入 CSV 文件 data.csv 到表 employees
    LOAD DATA INFILE '/path/to/data.csv'
    INTO TABLE employees
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES;

  • 注意事项
    • 文件路径需绝对路径(如 /home/user/data.csv)。
    • MySQL 需启用 local_infile:执行 SET GLOBAL local_infile = 1; 或修改配置文件。
    • 权限问题:确保 MySQL 用户有 FILE 权限。
    • 错误处理:添加 IGNORE 忽略无效行,或使用 REPLACE 覆盖重复记录。
方法 2:使用 mysqlimport 命令行工具

mysqlimportLOAD DATA INFILE 的封装,适合脚本自动化。

  • 语法
    mysqlimport --local --user=用户名 --password=密码 --fields-terminated-by=分隔符 --lines-terminated-by=行结束符 --ignore-lines=n 数据库名 文件路径

  • 参数说明
    • --local:从客户端读取本地文件。
    • --fields-terminated-by:同 FIELDS TERMINATED BY
    • --ignore-lines:跳过前 n 行。
    • 文件路径:文件名需与表名一致(如 employees.txt 导入到 employees 表)。
  • 示例:导入 CSV 文件 employees.csv 到数据库 company
    mysqlimport --local --user=root --password=123456 --fields-terminated-by=',' --lines-terminated-by='\n' --ignore-lines=1 company /path/to/employees.csv

  • 注意事项
    • 文件扩展名需匹配表名(如 employees.csv 对应表 employees)。
    • 需在命令行运行,确保 MySQL 客户端已安装。
    • 密码安全:使用 --password 后不跟密码,手动输入。
方法 3:使用 INSERT 语句(不推荐大量数据)

对小数据集可行,但效率低。

  • 示例
    INSERT INTO employees (id, name, salary) VALUES
    (1, '张三', 5000),
    (2, '李四', 6000);

  • 适用场景:仅适用于少量数据(如 <1000 行),否则性能差。

3. 最佳实践和常见问题
  • 性能优化
    • 批量导入:优先用 LOAD DATA INFILE,速度比 INSERT 快 10-100 倍。
    • 禁用索引:导入前执行 ALTER TABLE 表名 DISABLE KEYS;,导入后 ALTER TABLE 表名 ENABLE KEYS;
    • 事务处理:大文件导入时,用 START TRANSACTION;COMMIT; 避免部分失败。
  • 文件格式处理
    • CSV 文件:确保分隔符一致,特殊字符转义。
    • 编码问题:文件保存为 UTF-8,避免乱码。
  • 错误排查
    • 权限不足:检查 SHOW GRANTS; 确认用户权限。
    • 文件路径错误:使用绝对路径,避免 ~ 符号。
    • 数据类型不匹配:确保文件列与表列类型兼容。
  • 高级选项
    • 指定列导入:在 LOAD DATA INFILE 中添加 (列1, 列2)
    • 设置默认值:用 SET 列名 = DEFAULT

4. 总结
  • 推荐方法LOAD DATA INFILEmysqlimport 高效导入大数据。
  • 关键步骤:准备文件 → 选择方法 → 执行命令 → 验证数据。
  • 工具扩展:对复杂场景,可用 Python 脚本(如 pandas + sqlalchemy)或 GUI 工具(如 MySQL Workbench)。

通过以上步骤,您可安全高效地将数据导入 MySQL。

posted @ 2026-02-04 19:39  yangykaifa  阅读(12)  评论(0)    收藏  举报