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

Access 數據導入 MySQL 完整指南:文本導出 → LOAD DATA INFILE → 字符集/分隔符精準控制

     編輯:MySQL 資料庫相關知識

導出階段:Access → 文本文件

  1. Access → 右鍵表 → **匯出** → 文本文件
  2. 關鍵設置:
    • **字段分隔符**:逗號 , 或製表符 \t (避免數據中含分隔符)
    • **文本限定符**:雙引號 " (包裹含分隔符/換行的字段)
    • **編碼**:UTF-8 (Access 2007+ 支援),舊版導出 ANSI 再 iconv -f GBK -t UTF-8
    • **每行一記錄**:檢查無換行符穿透,必要時手工/腳本清洗
  3. 另存為 c:\samp_table.txt

導入階段:MySQL LOAD DATA INFILE

方法一:mysqlimport 命令行 (推薦大文件)

mysqlimport -u root -p \
  --fields-terminated-by=',' \
  --fields-enclosed-by='"' \
  --fields-escaped-by='\\' \
  --lines-terminated-by='\r\n' \
  --local \
  dbname samp_table.txt
  • --local:客戶端讀取文件並發送給服務端,**無需服務端 FILE 權限、文件可在客戶端機器**
  • 文件名 **必須與表名一致** (samp_table.txt → 表 samp_table)

方法二:SQL 語句 (靈活控制)

LOAD DATA LOCAL INFILE 'c:/samp_table.txt'
INTO TABLE samp_table
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;  -- 跳過標題行

方法三:phpMyAdmin 圖形界面 (小文件、可視化)

  • 表 → 導入 → 選擇文件 → 格式 CSV → 設置分隔符/引號/轉義/編碼 → 執行

參數詳細說明

參數含義常用值注意
FIELDS TERMINATED BY列分隔符','、'\t'、'|'單字符,不可為空
FIELDS ENCLOSED BY列包裹符'"'"可選,建議加上
FIELDS ESCAPED BY轉義符'\\\\' (實際為反斜杠)處理包裹符/分隔符/換行
LINES TERMINATED BY行終止符'\r\n' (Win)、'\n' (Linux)可多字符
IGNORE n LINES跳過前 n 行1 (標題行)
CHARACTER SET文件編碼utf8mb4必須與文件實際編碼一致

常見失敗場景與修復

現象原因修復
Row import failed / Column count doesn't match分隔符衝突、引號未閉合、換行穿透檢查文件樣本;改用製表符分隔;啟用 ENCLOSED BY
Incorrect string value / 亂碼文件編碼與 CHARACTER SET 不符file -bi samp_table.txt 確認編碼;統一 UTF-8
Duplicate entry for key 'PRIMARY'數據含重複主鍵、或表已有數據REPLACE/IGNORE 關鍵字;或清空表再導
ERROR 1290: The MySQL server is running with the --secure-file-priv option服務端禁用 LOCAL INFILE / 限制目錄客戶端加 --local-infile=1;服務端 local_infile=ON;文件放入 secure_file_priv 目錄
大文件導入慢/超時單線程、自動提交、索引維護開銷導入前 SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0; SET autocommit=0; 導入後恢複;或分割文件並行導入

進階技巧

  • 虛擬列轉換:LOAD DATA ... SET created_at = STR_TO_DATE(@var, '%m/%d/%Y')
  • 分區表並行導入:按分區拆分文件,多會話並行 LOAD DATA
  • CDC 同步**:Access 無 Binlog,僅支援全量/定時增量 (對比時間戳/觸發器)

結語

LOAD DATA INFILE 是 MySQL **最高吞吐** 的導入方式 (可達 100MB/s+),但對 **分隔符、引號、轉義、編碼、行終止符** 極度敏感。**標準化導出格式 (UTF-8、CSV RFC4180、製表符分隔) + 參數精準匹配 + 關閉檢查加速** 是穩定大規模導入的鐵律。小文件用 phpMyAdmin 可視化,大文件必用命令行 + 並行優化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved