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

CSV 導入 MySQL 實戰:字符集轉換與 LOAD DATA 快速加載

     編輯:MySQL 綜合教學

CSV 導入 MySQL 實戰:字符集轉換與 LOAD DATA 快速加載

Windows 導出的 CSV 默認 GBK 編碼,MySQL 常配置為 UTF-8,直接導入會導致中文亂碼。本文提供標準化導入流程:編碼轉換 → LOAD DATA INFILE 參數化導入。

步驟 1:字符集轉換(Linux/macOS)

# GBK → UTF-8
iconv -f GBK -t UTF-8 /tmp/source.csv -o /tmp/source_utf8.csv

# 驗證轉換結果
head -n 5 /tmp/source_utf8.csv | cat -A

步驟 2:LOAD DATA INFILE 高效導入

LOAD DATA INFILE '/tmp/source_utf8.csv'
INTO TABLE db1.target_table
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES  -- 跳過標題行
(id, email, password, name, address, dept, mobile);  -- 指定列映射順序

關鍵參數解析

參數說明常見值
FIELDS TERMINATED BY字段分隔符','、'\t'、';'
OPTIONALLY ENCLOSED BY字段包裹符(處理含分隔符的值)'"'"'"、'"'"'"
LINES TERMINATED BY行結束符'\n' (Linux)、'\r\n' (Windows)
IGNORE n LINES跳過前 n 行(通常跳過標題)1
(col1, col2...)目標表列映射,順序對應 CSV 列可選,省略則按表定義順序
REPLACE / IGNORE主鍵/唯一鍵衝突處理REPLACE 覆蓋、IGNORE 跳過

進階技巧

  • 大數據量優化:導入前 SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0;,導入後恢復並 COMMIT
  • 本地文件導入:客戶端機器文件用 LOAD DATA LOCAL INFILE,需服務端開啟 local_infile=ON 且客戶端加 --local-infile
  • NULL 值處理:CSV 中用 \N 表示 NULL,或指定 NULLIF(col, '')
  • 錯誤排查:SHOW WARNINGS 查看導入警告,information_schema.innodb_metrics 監控進度

Windows 環境下的替代方案

# PowerShell 轉碼
Get-Content source.csv -Encoding Default | Set-Content source_utf8.csv -Encoding UTF8

# MySQL Workbench / Navicat / DBeaver 圖形化導入向導(自動處理編碼映射)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved