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

MySQL 向資料表匯入資料三大方法:INSERT、LOAD DATA、mysqlimport 完整指南

     編輯:MySQL 資料庫相關知識

資料表建立後,匯入資料有三種主要方式:SQL INSERT、LOAD DATA INFILE、命令列工具 mysqlimport。本文系統說明語法、參數、權限、檔案定位規則與實務建議。

1. INSERT 語句 (最通用、支援條件/子查詢)

-- 基本單列
INSERT INTO tbl VALUES (val1, val2, ...);
INSERT INTO tbl (col1, col2) VALUES (val1, val2);
INSERT INTO tbl SET col1=val1, col2=val2;

-- 多列批次 (單條 SQL,效能遠優於迴圈)
INSERT INTO tbl VALUES (v11,v12), (v21,v22), (v31,v32);

-- 從另一表複製
INSERT INTO tbl (col1, col2) SELECT col1, col2 FROM tbl2;

2. LOAD DATA INFILE (大量載入最快、伺服器端讀取)

LOAD DATA [LOCAL] INFILE 'filename' INTO TABLE tbl
  [FIELDS
    TERMINATED BY '\t'
    ENCLOSED BY '"'
    ESCAPED BY '\\'
  ]
  [LINES TERMINATED BY '\n']
  [IGNORE n LINES]
  [(col_list)];

參數詳解

子句預設說明
FIELDS TERMINATED BY\t (Tab)欄位分隔符
FIELDS ENCLOSED BY無欄位包裹字元 (如 CSV 雙引號)
FIELDS ESCAPED BY\\跳脫字元
LINES TERMINATED BY\n換行符 (Windows 用 \r\n)
IGNORE n LINES0跳過前 n 列 (如 CSV 標題列)

LOCAL 關鍵字差異

無 LOCAL (伺服器端)有 LOCAL (客戶端)
檔案位置伺服器主機客戶端主機
權限需求FILE 權限無需 FILE 權限
路徑解析絕對路徑:根目錄
相對路徑:datadir
絕對路徑:根目錄
相對路徑:客戶端當前目錄
傳輸方式直接讀取客戶端讀取後經網路傳送

實務範例:匯入 CSV

LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE users
  FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'
  LINES TERMINATED BY '\r\n'
  IGNORE 1 LINES
  (username, email, created_at);

3. mysqlimport 命令列工具 (LOAD DATA 介面封裝)

mysqlimport [options] db_name textfile1 [textfile2...]

# 關鍵選項
--local              # 使用 LOCAL 模式
--fields-terminated-by=,
--fields-enclosed-by=\"
--fields-escaped-by=\\
--lines-terminated-by=\r\n
--ignore-lines=1
--user=root --password
  • 檔案名 (不含副檔名) 對應資料表名
  • 實際執行時會轉換為對應的 LOAD DATA SQL
  • 適合 Shell 腳本自動化、排程匯入

效能對比與選擇建議

大量匯入效能技巧

  1. 匯入前 DISABLE KEYS / 匯入後 ENABLE KEYS (MyISAM) 或 SET FOREIGN_KEY_CHECKS=0 / SET UNIQUE_CHECKS=0 (InnoDB)
  2. SET AUTOCOMMIT=0 + 批次 COMMIT
  3. 調大 bulk_insert_buffer_size (MyISAM) / innodb_buffer_pool_size
  4. 檔案預排序依主鍵順序 (InnoDB 依主鍵聚簇)

結語

LOAD DATA INFILE 是大量匯入王者。掌握 LOCAL 權限模型、欄位/行分隔參數、IGNORE LINES、索引暫停技巧,能將匯入速度提升 10-100 倍。自動化環境配合 mysqlimport 或封裝 LOAD DATA 的 Python/Shell 腳本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方法速度適用場景權限
INSERT (單條)慢少量、條件邏輯、應用程式INSERT
INSERT (批次)中中等量、應用程式組裝INSERT
LOAD DATA最快大量 (萬~億列)、CSV/TSV、ETLFILE (無 LOCAL)
mysqlimport最快自動化排程、Shell 腳本同 LOAD DATA