INSERT INTO tbl VALUES (v1, v2, ...);
INSERT INTO tbl (c1, c2) VALUES (v1, v2);
INSERT INTO tbl SET c1=v1, c2=v2;
INSERT INTO tbl (c1, c2) SELECT c1, c2 FROM tbl2;
INSERT INTO tbl VALUES (v1,v2), (v3,v4), (v5,v6);
單條 SQL 寫入多列,大幅減少網路往返與解析開銷,建議每批 1000-5000 列。
FILE 權限,檔案需伺服器可讀LOCAL 關鍵字:從客戶端讀取傳送,不需 FILE 權限| 模式 | 絕對路徑 | 相對路徑 |
|---|---|---|
| 無 LOCAL | 伺服器根目錄起 | 資料目錄起 |
| LOCAL | 客戶端根目錄起 | 客戶端當前目錄起 |
LOAD DATA [LOCAL] INFILE 'file.txt'
INTO TABLE tbl
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(col1, col2, @var1, col3)
SET col3 = TRIM(@var1);
TERMINATED BY:欄位分隔符(預設 Tab)ENCLOSED BY:欄位包圍字元(預設無)ESCAPED BY:跳脫字元(預設 \)LINES TERMINATED BY:列結束符(預設 \n)IGNORE n LINES:跳過前 n 列(如標題列)SET 子句支援匯入時轉換LOAD DATA LOCAL INFILE 'sample.txt'
INTO TABLE sample
FIELDS TERMINATED BY ',' ENCLOSED BY '"';
本質是 LOAD DATA 的封裝,適合腳本自動化:
mysqlimport [options] db_name file.txt
# 範例:CSV 格式、本地檔案
mysqlimport -u root -p --local \
--fields-terminated-by=',' --fields-enclosed-by='"' \
samp_db samp_table.txt
samp_table.1.txt, samp_table.2.txt| 方式 | 適用場景 | 效能 | 備註 |
|---|---|---|---|
| INSERT | 少量、應用邏輯內 | 低 | 批次化可提升 |
| LOAD DATA | 大量初始化、ETL、遷移 | 極高 | 繞過 SQL 解析、索引延遲維護 |
| mysqlimport | 定時排程、跨伺服器 | 極高 | 同 LOAD DATA,命令列友善 |