使用指令匯出及匯入 MySQL 數據庫

MySQL

本教學示範使用指令匯出及匯入 MySQL 數據庫。

匯出數據庫

使用以下指令可以匯出數據庫。當中 localhost 是數據庫的主機名字、 3306 是通訊埠、 UserName 是用戶名、 UserPassword 是密碼、 DatabaseName 是需要匯出的數據庫和 OutputFileName.sql 是匯出的檔案名。

--hex-blob 選項可以將二進制欄位以十六進制字符輸出。 --single-transaction 選項可以確保匯出的數據一致。--routines 選項可以將 procedures 和 functions 一起匯出。

1
2
3
mysqldump --hex-blob --single-transaction --routines \
  –h localhost –P 3306 -u UserName -p UserPassword \
  DatabaseName > OutputFileName.sql

如果因為二進制欄位太大而不能夠將數據庫匯出,請打開 MySQL 的 my.cnf 並加入以下內容,然後重新啟動 MySQL 。

[mysqld]
max_allowed_packet=1024M

匯入數據庫

使用以下指令可以匯入數據庫。當中 localhost 是數據庫的主機名字、 3306 是通訊埠、 UserName 是用戶名、 UserPassword 是密碼、 DatabaseName 是需要匯入的數據庫和 InputFileName.sql 是匯入的檔案名。

1
2
mysql –h localhost –P 3306 -u UserName -p UserPassword \
  DatabaseName < InputFileName.sql

取消外鍵 (Foreign Key) 檢查

在特別的情況下,匯入數據庫時可能因為外鍵的問題而出現錯誤。如果出現問題,可以在出現問題的 SQL 上下加入以下內容。

-- Do not check referential constraints
SET FOREIGN_KEY_CHECKS = 0;

-- PUT YOUR SQL STATEMENTS HERE

-- Specify to check referential constraints
SET FOREIGN_KEY_CHECKS = 1;

匯入 CSV 檔案

如果想將 CSV 內容匯入數據庫,可以使用以下指令。

LOAD DATA LOCAL INFILE 'import.csv' INTO TABLE TargetTableName
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
IGNORE 1 LINES ( uid, name, sex, passport );
Made in Hong Kong