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

CSV 檔案匯入 MySQL 完整指南:編碼、建表與 LOAD DATA 實戰

     編輯:MySQL 綜合教學

將 CSV 匯入 MySQL 是常見的資料遷移與初始化任務,掌握編碼統一、欄位對應與 LOAD DATA INFILE 參數調校,能避免 90% 的匯入失敗。

前置準備:統一 UTF-8 編碼

  1. CSV 檔案另存為 UTF-8 (無 BOM)。
  2. Excel 中日期欄位務必設為「日期」格式,而非文字,否則匯入會變成 0000-00-00。

建立對應資料表

CREATE TABLE `target_table` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) NOT NULL,
  `created_at` DATE NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

核心指令:LOAD DATA INFILE

LOAD DATA INFILE '/path/to/file.csv'
INTO TABLE `target_table`
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(`name`, `created_at`);

關鍵參數詳解

參數說明
LOCAL若指定,客戶端讀取檔案並傳送給伺服器;否則伺服器直接讀取伺服器端路徑 (需 FILE 權限)
FIELDS TERMINATED BY欄位分隔符,CSV 固定為 ','
OPTIONALLY ENCLOSED BY欄位包圍字元,通常為雙引號 '"'"'"
LINES TERMINATED BY換行符,Linux '\n'、Windows '\r\n'
IGNORE 1 LINES跳過標題列
(col_list)指定對應欄位順序,CSV 欄位順序與資料表不同時必須指定

常見坑點與對策

  • 中文亂碼:確認 CHARACTER SET utf8mb4、資料表 DEFAULT CHARSET=utf8mb4、連線 SET NAMES utf8mb4 三者一致。
  • ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option:將 CSV 放入 secure_file_priv 指定目錄,或啟用 LOCAL 由客戶端讀取。
  • 日期格式錯誤:CSV 日期需為 YYYY-MM-DD;若為其他格式,先匯入暫存表再用 STR_TO_DATE 轉換。

大量資料效能提示

  • 匯入前 SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0; 匯入後恢復並 COMMIT。
  • InnoDB 表建議先匯入無索引表,匯入完畢再 CREATE INDEX。
  • 超大檔案 (GB 級) 可用 pt-fifo-split 或自行切分多檔平行匯入。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved