首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL LOAD DATA 导入 CSV 与 SELECT INTO OUTFILE 导出实战模板

     編輯:MySQL 資料庫相關知識

大数据量 CSV 导入导出:LOAD DATA 与 OUTFILE 标准化模板

客户端工具导入百万行极慢,服务端 LOAD DATA INFILE 与 SELECT INTO OUTFILE 直读写文件系统,速度提升 10-100 倍。

导入模板

LOAD DATA INFILE 'D:\\data\\top-1m.csv'
INTO TABLE `site`
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;  -- 若有表头

关键参数说明:

  • FIELDS TERMINATED BY ',':字段分隔符
  • OPTIONALLY ENCLOSED BY '"':字符串可选双引号包裹
  • ESCAPED BY '"':双引号转义为双双引号(RFC 4180)
  • LINES TERMINATED BY '\n':行结束符,Windows 生成文件常为 \r\n
  • IGNORE 1 LINES:跳过表头行

导出模板

SELECT * FROM `site`
INTO OUTFILE 'D:\\data\\top-1m.csv'
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '"'
LINES TERMINATED BY '\n';

权限与路径要求

  1. MySQL 进程用户需有目标目录读写权限
  2. secure_file_priv 变量限制允许路径(SHOW VARIABLES LIKE 'secure_file_priv';)
  3. 若为 NULL 禁用导入导出,需修改配置重启
  4. 建议统一使用 /var/lib/mysql-files/ 目录

性能对比

方式100万行耗时适用场景
Navicat/DataGrip 导入30-60 分钟小表、临时调试
LOAD DATA INFILE10-30 秒生产大表、ETL、初始化

提示:CSV 编码必须与表字符集一致(如 utf8mb4),否则中文乱码。导入前用 head -5 file.csv 核对格式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved