======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]]