======MySQL資料匯出(Export)====== 有一個美國大聯盟Baseball隊名的資料mysql> select * from Ball; +----+--------------+--------------------------+ | id | ClubName | ClubChineseName | +----+--------------+--------------------------+ | 1 | Diamondbacks | 亞歷桑那響尾蛇 | | 2 | Braves | 亞特蘭大勇士 | | 3 | Orioles | 巴爾地摩金鶯 | | 4 | Red Sox | 波士頓紅襪 | | 5 | Cubs | 芝加哥小熊 | | 6 | Reds | 辛辛那堤紅人 | | 7 | Indians | 克里夫蘭印地安人 | | 8 | Rockies | 科羅拉多落磯山 | | 9 | White Sox | 芝加哥白襪 | | 10 | Tigers | 底特律老虎 | | 11 | Marlins | 佛羅里達馬林魚 | | 12 | Astros | 休士頓太空人 | | 13 | Royals | 堪薩斯皇家 | | 14 | Angels | 洛杉磯天使 | | 15 | Dodgers | 洛杉磯道奇 | | 16 | Brewers | 密爾瓦基釀酒人 | | 17 | Twins | 明尼蘇達雙城 | | 18 | Mets | 紐約大都會 | | 19 | Yankees | 紐約洋基 | | 20 | Athletics | 奧克蘭運動家 | | 21 | Phillies | 費城費城人 | | 22 | Pirates | 匹茲堡海盜 | | 23 | Padres | 聖地牙哥教士 | | 24 | Mariners | 西雅圖水手 | | 25 | Giants | 舊金山巨人 | | 26 | Cardinals | 聖路易紅雀 | | 27 | Rays | 坦帕灣光芒 | | 28 | Rangers | 德州遊騎兵 | | 29 | Blue Jays | 多倫多藍鳥 | | 30 | Nationals | 華盛頓國民 | +----+--------------+--------------------------+ 30 rows in set (0.00 sec) 將此MySQL select出的資料匯出成一個名為AAA.txt純文字檔。mysql> select * into outfile 'AAA.txt' fields terminated by ',' lines terminated by '\n' from Ball; Query OK, 30 rows affected (0.01 sec) 關鍵字及注意事項書明 * into outfile ===>匯出一個名為AAA.txt純文字資料檔 * fields terminated by ',' ===>定義欄位與欄位之間以","分開(忽略不寫,預設以"tab"分開) * lines terminated by '\n' ===>定義以"\n"換行(列)(忽略不寫,預設以"\n"分開,另外windows 是以 \r\n來換行) * 此table 是以utf8存成資料頁,匯出來的資料就是utf8編碼 * 以此範例若沒指定匯出路徑,AAA.txt是匯在/var/lib/mysql/test/AAA.txt(table: Ball ,資料庫DB: test) 用下指令方式mysqldump -uroot -p --tab=/tmp --fields-terminated-by=',' test Ball結果ls /tmp Ball.sql --->屬Table 資料結構 Ball.txt --->屬Table 資料檔 ======MySQL資料匯入(Import)====== 為了試驗匯入,先建立一個Table 名為ballTestmysql> create table ballTest(id int primary key, -> ClubName varchar(30) DEFAULT NULL, -> ClubChineseName varchar(20) DEFAULT NULL)engine=myisam default charset=utf8; 開始匯入AAA.txt 資料 to ballTest(資料表)mysql> load data infile 'AAA.txt' -> replace -> into table ballTest -> fields terminated by ','; 另外,也可以用指令方式執行(AAA.txt必須更名為ballTest.txt)mysqlimport -uroot -p -r --fields-terminated-by=',' --lines-terminated-by='\n' test ballTest.txt Enter password: test.ballTest: Records: 30 Deleted: 0 Skipped: 0 Warnings: 0 注意事項 * 匯入的資料 AAA.txt 若是以UTF8編碼,就必須將一個MySQL變數作改變 mysql> set character_set_database=utf8 也可以查詢目前語系 mysql> show variables like 'char%'; =====MySQL 指定欄位資料匯入===== 若要顯示以下結果+----+--------------------------+-----------------+ | id | ClubName | ClubChineseName | +----+--------------------------+-----------------+ | 1 | 亞歷桑那響尾蛇 | Diamondbacks | | 2 | 亞特蘭大勇士 | Braves | | 3 | 巴爾地摩金鶯 | Orioles | | 4 | 波士頓紅襪 | Red Sox | | 5 | 芝加哥小熊 | Cubs | | 6 | 辛辛那堤紅人 | Reds | | 7 | 克里夫蘭印地安人 | Indians | | 8 | 科羅拉多落磯山 | Rockies | | 9 | 芝加哥白襪 | White Sox | | 10 | 底特律老虎 | Tigers | ~略~ 指令可以這樣下。這個(ClubChineseName,ClubName)表示從"AAA.txt"資料檔裡,第一個欄位對應ClubChineseName;第二個欄位對應ClubNamemysql>load data infile "AAA.txt" -> replace -> into table ballTest -> fields terminated by ',' -> (ClubChineseName,ClubName); ======參考資料====== * [[http://www.dedecms.com/web-art/shujuku/Mysql/20070118/37610.html|MySQL數據導入導出工具mysqlimport簡介]] * [[http://dev.mysql.com/doc/refman/5.1/en/mysqldump-delimited-text.html|Mysqldump For Text]] * [[http://dev.mysql.com/doc/refman/5.1/en/load-data.html|LOAD DATA INFILE Syntax]]