首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 匯入匯出命令大全:mysqldump、SELECT INTO OUTFILE、LOAD DATA INFILE

     編輯:MySQL 綜合教學

MySQL 匯入匯出命令大全:mysqldump、SELECT INTO OUTFILE、LOAD DATA INFILE

MySQL 資料遷移、備份還原、異構同步的三大核心工具完整指南,含參數詳解、壓縮管道、格式控制、權限需求。

一、mysqldump:邏輯備份標準工具

三種調用模式

# 1. 單庫/指定表
mysqldump [options] db_name [table1 table2...]

# 2. 多庫
mysqldump [options] --databases db1 db2 db3...

# 3. 所有庫
mysqldump [options] --all-databases

常用參數

參數說明
-u, --user用戶名
-p, --password密碼 (命令列不安全,建議配置檔)
-h, --host主機 (預設 localhost)
-P, --port連接埠 (預設 3306)
--single-transactionInnoDB 一致性備份 (不鎖表)
--master-data=2輸出 CHANGE MASTER TO 註解 (主從同步用)
-d, --no-data僅結構
-t, --no-create-info僅資料
--routines包含存儲過程/函數
--triggers包含觸發器
--events包含事件
-e, --extended-insert多行 INSERT (預設開啟,加速匯入)
--max-allowed-packet客戶端緩衝區大小
--net-buffer-length網路緩衝區大小
--hex-blob二進位欄位用十六進位
--default-character-set連線字元集

實戰範例

# 1. 完整備份 (含結構+資料+主從資訊)
mysqldump -uroot -p --single-transaction --master-data=2 --routines --triggers --events db_name > backup_$(date +%F).sql

# 2. 僅結構
mysqldump -uroot -p -d db_name > structure.sql

# 3. 壓縮管道備份
mysqldump -uroot -p db_name | gzip > backup_$(date +%F).sql.gz

# 4. 加速匯入參數 (需與目標庫配置一致)
mysqldump -uroot -p db_name -e --max_allowed_packet=1048576 --net_buffer_length=16384 > fast_import.sql

# 5. 遠端備份
mysqldump -h 10.0.0.1 -uroot -p db_name > remote_backup.sql

還原方式

# 1. 進入 mysql 後 source
mysql -uroot -p db_name
SOURCE /path/backup.sql;

# 2. 管道導入
mysql -uroot -p db_name < backup.sql

# 3. 解壓管道導入
gunzip -c backup.sql.gz | mysql -uroot -p db_name

二、SELECT ... INTO OUTFILE:資料導出文字檔

權限:需 `FILE` 權限,檔案生成在伺服器端,不可覆蓋既有檔案。

SELECT * 
FROM mysql.user
INTO OUTFILE '/tmp/user_export.txt'
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
  • 僅導出資料,不含結構
  • 常搭配 `LOAD DATA INFILE` 異構遷移
  • 安全目錄限制:`secure_file_priv` 變數限制可讀寫路徑

三、LOAD DATA INFILE:高速資料導入

權限:需 `FILE` 權限,`LOCAL` 關鍵字表示從客戶端讀取檔案。

LOAD DATA LOCAL INFILE '/tmp/user_export.txt'
INTO TABLE test.user
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;  -- 跳過標題行

格式控制參數對照

子句導出 (INTO OUTFILE)導入 (LOAD DATA)
FIELDS TERMINATED BY欄位分隔符欄位分隔符
FIELDS ENCLOSED BY欄位包圍字元欄位包圍字元
FIELDS ESCAPED BY跳脫字元 (預設 \\)跳脫字元
LINES TERMINATED BY行結束符行結束符
LINES STARTING BY不支援行開頭前綴
IGNORE n LINES不支援跳過前 n 行

四、大資料量遷移最佳實務

場景推薦方案關鍵參數
單庫 < 10GBmysqldump + 壓縮管道--single-transaction -e | gzip
單庫 10-100GBmysqldump 分表並行 + 並行導入--tables, mydumper/myloader
單庫 > 100GB物理備份 (xtrabackup) 或 CSV 並行載入xtrabackup --parallel, LOAD DATA 並行
異構遷移 (MySQL→PG/Oracle)CSV 中間格式 + 目標端工具INTO OUTFILE + COPY/Loader
線上同步 (CDC)Binlog 解析 (Canal/Debezium/Flink CDC)--master-data=2 獲取位點

加速匯入參數調優 (針對 mysqldump 產出檔案)

-- 目標庫臨時調大 (匯入期間)
SET GLOBAL max_allowed_packet = 1G;
SET GLOBAL net_buffer_length = 1M;
SET GLOBAL innodb_flush_log_at_trx_commit = 2;
SET GLOBAL sync_binlog = 0;
SET GLOBAL unique_checks = 0;
SET GLOBAL foreign_key_checks = 0;

-- 匯入完成後恢復
SET GLOBAL innodb_flush_log_at_trx_commit = 1;
SET GLOBAL sync_binlog = 1;
SET GLOBAL unique_checks = 1;
SET GLOBAL foreign_key_checks = 1;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved