首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL LOAD DATA INFILE 批量導入文本數據完整指南

     編輯:MySQL 綜合教學

語法速查

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE] INTO TABLE tbl_name
[CHARACTER SET charset_name]
[FIELDS
  [TERMINATED BY 'string']
  [[OPTIONALLY] ENCLOSED BY 'char']
  [ESCAPED BY 'char']
]
[LINES
  [STARTING BY 'string']
  [TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var, ...)]
[SET col_name = expr, ...]

核心參數對照

子句默認值說明
FIELDS TERMINATED BY\t (Tab)字段分隔符
FIELDS ENCLOSED BY空字段包圍字符(如雙引號)
FIELDS ESCAPED BY\\轉義字符
LINES TERMINATED BY\n行結束符(Windows 用 \r\n)
LINES STARTING BY空行前綴(罕用)
IGNORE n LINES0跳過前 n 行(如 CSV 標題行)
REPLACE—主鍵/唯一鍵衝突時覆蓋舊行
IGNORE—衝突時跳過新行

實戰範例

1. 導入單列數據(城市名列表)

文件 city.txt(每行一城市):

北京
上海
深圳
廣州

SQL:

LOAD DATA LOCAL INFILE 'C:/Users/XXX/Desktop/city.txt'
INTO TABLE sys_sensitiveword_t (cityname);

2. 導入多列完整表數據

表結構:

CREATE TABLE stu_other (
  id INT AUTO_INCREMENT PRIMARY KEY,
  stu_name VARCHAR(50),
  age INT
);

文件 stu.txt(Tab 分隔,順序與建表一致):

100001	FLB100001	20
100002	FLB100002	21
100003	FLB100003	22

SQL:

LOAD DATA LOCAL INFILE 'C:/stu.txt'
INTO TABLE stu_other
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\r\n';  -- Windows 文件

3. 指定列順序/轉換/賦值


導出配合:SELECT ... INTO OUTFILE

注意: 導出目錄需 MySQL 服務進程寫權限(受 secure_file_priv 限制),文件不能預存。

常見坑與避坑指南

  1. secure_file_priv: SHOW VARIABLES LIKE 'secure_file_priv'; 只能讀寫該目錄下文件,或設置為空解除限制(需重啟)。
  2. LOCAL 關鍵字: LOCAL INFILE 表示客戶端讀文件並發送給服務端,無需服務端文件權限,但需客戶端與服務端均啟用 local_infile=1。
  3. 字符集不匹配: 文件為 GBK、表為 UTF8 → 指定 CHARACTER SET gbk 或預先轉碼。
  4. 主鍵衝突: 根據業務選 REPLACE(覆蓋)或 IGNORE(跳過)。
  5. 大文件分批: 單文件超 1GB 建議拆分,避免長事務、主從延遲。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved