Friday, September 7, 2018

MySQL 搬移大量資料 (import/export)

工作上會需要做 MySQL 搬移大量資料,因為 development 環境沒有足夠的測試資料,我必須從 production 的資料庫搬過去。

本來打算用 MySQL Workbench 的 export/import 功能。但是,由於需要搬的資料多達 3 MB 。匯出還可以使用 MySQL Workbench ,匯入的話,就非常非常慢,完全是慢到我受不了。所以我決定改用 LOAD DATA LOCAL INFILE

真的操作指令時,還是遇到了一些問題:
沒有仔細去計較 CSV 檔的 FIELDS TERMINATED BY CHARACTER 或是 FIELDS ENCLOSED BY CHARACTER 。資料就是無法匯入成功。

最後實驗成功的指令記錄如下:

參考資料

mysql> LOAD DATA LOCAL INFILE 'network_app_report.csv' INTO TABLE ce.network_app_report
       FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' IGNORE 1 LINES;
mysql> LOAD DATA LOCAL INFILE 'network_ad_report.csv' INTO TABLE ce.network_ad_report 
       FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' IGNORE 1 LINES;

Note: If you specify no FIELDS or LINES clause, the defaults are the same as if you had written this:

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''
view raw SQL_tips.md hosted with ❤ by GitHub