使用者工具

網站工具


database:mysql:exportandimport

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 名為ballTest

mysql> 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;第二個欄位對應ClubName

mysql>load data infile "AAA.txt"
    -> replace
    -> into table ballTest
    -> fields terminated by ','
    -> (ClubChineseName,ClubName);

參考資料

database/mysql/exportandimport.txt · 上一次變更: 2013/12/24 15:49 由 ali88