MySQL 5.x : 透過文字檔載入大量資料
情境:
開發系統常常會遇到要把現有舊系統資料,匯入置新系統內。且新舊資料又常需要經過人工整理彙整,而且若無法透過工具直接線上匯入時。慣用的手法是將資料以特定文字格式來存放,利用資料庫指令來將此外部文字檔載入。因此要如何透過固定格式之文字資料檔,把大量資料快速載入MySQL資料庫中?
步驟:
1.假設我們創建一個叫做country的資料表,其schema如下:
CREATE TABLE IF NOT EXISTS `country` ( `id` INT(10) NOT NULL, `name` VARCHAR(50) NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;
2.手工匯整的文字檔(假設檔案路徑名稱:d:/country.txt)內容如下:
1#Afghanistan 2#Albania 3#Algeria
3.載入指令如下:
load data infile 'd:/country.txt' into table country fields terminated by '#' lines terminated by '\n';
指令說明參考來源:
http://dev.mysql.com/doc/refman/5.5/en/load-data.html
其他:
CREATE TABLE IF NOT EXISTS `country` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NULL , `isoa2` VARCHAR(2) NULL , `isoa3` VARCHAR(3) NULL , `isod3` VARCHAR(3) NULL , `dcc` VARCHAR(10) NULL, `idd` VARCHAR(10) NULL, `ndd` VARCHAR(10) NULL, PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;
Afghanistan#AF#AFG#4#93#0#0 Albania#AL#ALB#8#355#0#0 Algeria#DZ#DZA#12#213#0#7 American Samoa#AS#ASM#16#1#11#1
load data infile 'd:/country1.txt' into table country fields terminated by '#' lines terminated by '\n' (NAME,ISOA2,ISOA3,ISOD3,DCC,IDD,NDD);
















