2015-09-29

mysql 匯入資料時使用 LOAD DATA

MySQL 官方解說

我們很常用 csv 這種文字檔來匯入至資料表中,如果是透過 phpmyadmin 這種工具,其實過程是簡單的…但如果我們要在 php 中來使用 csv 匯入的方式咧?

MySQL 在 5.1 時有加入了匯入實體檔案的方式來匯入資料,就是 Load Data Local Infile ,對於直接匯入來說,會比載入 csv 檔,一行一行的丟去執行 SQL command 來的方便…但也是有一些參數要注意

我以簡單的來呈現一下(細的就自己看官方手冊)
1 LOAD DATA LOCAL INFILE  '檔案'
2 INTO TABLE  `表`
3 FIELDS TERMINATED BY  ',' [OPTIONALLY] ENCLOSED BY  '"' ESCAPED BY  '"'
4 LINES TERMINATED BY  '\r\n'
5 IGNORE 1 LINES
 一行一行來解釋
1) 是"載入本機檔案"
2) 要被匯入的"表"
3) 欄位格式設定
    分隔符號:csv 大部份都是半型逗號,但有的會用 \t
    每一欄的包裝符號:OPTIONALLY 沒加上的話,每一欄都會使用半形雙引號包起來;但如果加上了 OPTIONALLY ,那只會是文字表現的欄位才會用包裝符號包起來,其他就不會包。
    跳脫字元:指的就是如果欄位資料中的原始內容就有使用到「包裝符號」,那就要在原始內容前加上跳脫字元,告知系統跳脫字元後的字元是屬除資料,而不是「包裝符號」,沒特別設定的話,預設是 \
4) 一行資料的結尾符號:如果我們是使用 excel 匯出 csv,一般都是 \r\n 為行尾符號,但要注意有時會是只有 \n
5) 跳過幾行:當我們用 excel 匯出 csv 時,大部份第一行都會是「欄位名稱」,這對匯入資料時,這首行是無用的,所以可以設定跳過 1 行。