10月 29, 2014

匯入「100萬筆」記錄至 MySQL 資料庫

手上的樣本檔有150萬筆資料量,檔案(csv格式)大小約100MB,用 phpMyAdmin 匯入當然是失敗!硬著頭皮看有什麼指令可用...

(1) 因為安全考量 MySQL 預設關閉從檔案匯入資料,所以先調整 my.ini 設定檔:
[mysql]
local-infile=1
[mysqld]
local-infile=1
(2) 建立資料庫(parkDB)後,再建立表格(parkTable)存放記錄:
'第一欄位序號(SN)作為主鍵並具遞增性質
CREATE TABLE parkTable
( SN integer AUTO_INCREMENT PRIMARY KEY ,
  PARK_DATE varchar(10), PARK_TIME varchar(10),
  CAR_NO varchar(10), BRAND varchar(20),
  COLOR varchar(20) );
(3) 從檔案匯入資料庫
# mysql -u root -p
mysql> use parkDB
mysql> LOAD DATA LOCAL INFILE 'SOURCE.csv' INTO TABLE parkTable
    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'
    -> (PARK_DATE, PARK_TIME, CAR_NO, BRAND, COLOR);
參數相關說明:
  • 從檔案 SOURCE.csv 匯入資料到表格(parkTable)
  • 欄位區分是以逗號(,)來作識別。例如資料 A,B,C 看作三欄。
  • 每欄資料是用雙引號(")圍起來。例如資料 "XYZ-123"。
  • 換行符號是 "\n"
  • 匯入資料對應欄位為 (PARK_DATE, PARK_TIME ...)
(4) 資料量很大時,為加快查詢請記得建立索引。
'索引欄位 CAR_NO
CREATE INDEX idx_CAR_NO ON parkTable (CAR_NO);

沒有留言:

張貼留言