MySQL 提供多種資料匯出入方式,適用場景各異。本文系統整理 mysqldump 邏輯備份、LOAD DATA INFILE 批量導入、SELECT INTO OUTFILE 文件導出三大核心工具的用法、參數詳解與實戰案例。
cd /usr/local/mysql/binmysqldump -u root -p dbname > backup.sqlUSE dbname; → SOURCE backup.sql;| 場景 | 命令範例 | 說明 |
|---|---|---|
| 整庫備份 | mysqldump -u root -p abc > abc.sql | 含結構與資料 |
| 單表備份 | mysqldump -u root -p abc users > abc_users.sql | 指定表名 |
| 僅結構 | mysqldump -u root -p -d --add-drop-table abc > abc_db.sql | -d 無資料,--add-drop-table 每建表前先 DROP |
| 跨字元集 | mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt db > out.sql | 解決編碼不一致問題 |
cd /usr/local/src /usr/local/mysql/bin/mysqldump -uroot -p123456 cacti > cacti.sql # 導入 /usr/local/mysql/bin/mysql -uroot -p CREATE DATABASE cacti; USE cacti; SOURCE /usr/local/src/cacti.sql
適用於大量資料高速載入,需表結構完全一致。
SELECT * FROM aaa INTO OUTFILE 'e:/a.txt';
LOAD DATA LOCAL INFILE 'e:/a.txt' INTO TABLE aaa;
SELECT * FROM hx_9enjoy INTO OUTFILE '/tmp/9enjoy.txt';
SELECT * FROM hx_9enjoy INTO OUTFILE '/tmp/9enjoy_hx.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
SELECT * FROM hx_9enjoy WHERE id < 100 INTO OUTFILE '/tmp/9enjoy_100.txt';
LOAD DATA INFILE '/tmp/9enjoy.txt' INTO TABLE hx_9enjoy;
LOAD DATA INFILE '/tmp/9enjoy_hx.txt' INTO TABLE hx_9enjoy FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
LOAD DATA INFILE '/tmp/9enjoy.txt' INTO TABLE hx_9enjoy CHARACTER SET gbk;
若資料庫為 GBK/UTF-8 等編碼,必須 指定 CHARACTER SET,否則導入資料會亂碼。
gzipLOCAL 關鍵字:客戶端讀取本地文件並傳送給服務端,不加 LOCAL 則由服務端直接讀取服務器文件系統