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

MySQL 備份與還原完全指南:mysqldump、SELECT INTO OUTFILE、LOAD DATA、mysqlimport 多種方案對比

     編輯:MySQL 綜合教學

1. 數據庫級備份/還原

mysqldump(推薦通用)

# 備份單庫(含 CREATE DATABASE)
mysqldump -u root -p --databases db_name > /backup/db.sql

# 備份單庫(不含 CREATE DATABASE,還原前需手建庫)
mysqldump -u root -p db_name > /backup/db.sql

# 備份單表
mysqldump -u root -p db_name table1 > /backup/table1.sql

# 備份多庫
mysqldump -u root -p --databases db1 db2 > /backup/multi.sql

關鍵差異:--databases 導出包含 CREATE DATABASE,還原無需預建庫;無此參數則需先 CREATE DATABASE 再 USE。

還原

# 未登入 MySQL
mysql -u root -p db_name < /backup/db.sql

# 已登入 MySQL
mysql> USE db_name;
mysql> SOURCE /backup/db.sql;

2. 表級導出/導入(數據遷移、異構同步)

方案 A:登入 MySQL 使用 SQL 語句

-- 導出(可控制格式)
SELECT * FROM table_name
INTO OUTFILE '/tmp/data.txt'
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\r\n' STARTING BY '>';

-- 導入
LOAD DATA INFILE '/tmp/data.txt'
INTO TABLE table_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\r\n' STARTING BY '>';

格式對照表:

選項導出示例導入對應
FIELDS TERMINATED BY','字段分隔符
ENCLOSED BY'"'"字段包裹符
ESCAPED BY'\\'轉義符
LINES TERMINATED BY'\r\n'行結束符
STARTING BY'>'行前綴

方案 B:不登入 MySQL,使用 mysqldump -T

mysqldump -T /tmp/export_dir db_name table_name -u root -p
# 產生 table_name.txt (數據) + table_name.sql (建表)

同樣支援 --fields-terminated-by 等格式參數。

方案 C:mysql 客戶端導出文本/HTML/XML

mysql -u root -p -e "SELECT * FROM table_name" db_name > /tmp/data.txt
mysql -u root -p --html -e "SELECT * FROM table_name" db_name > /tmp/data.html
mysql -u root -p --xml  -e "SELECT * FROM table_name" db_name > /tmp/data.xml

方案 D:mysqlimport 批量導入文本

mysqlimport -u root -p db_name /tmp/data.txt
# 表名 = 文件名(不含擴展名),需預建表結構

支援同 LOAD DATA 的格式參數。

3. 方案選型建議

場景推薦方案理由
全庫備份/遷移mysqldump --databases含 DDL、跨版本兼容、單文件易傳輸
大表增量同步SELECT INTO OUTFILE + LOAD DATA可控格式、並行導入、速度最快
異構數據庫導入mysqldump -T / mysqlimport純文本、易清洗轉換
報表導出給非技術人員mysql --html/--xml直接可讀、無需工具

權限提示

  • SELECT ... INTO OUTFILE 需 FILE 權限,文件寫在 Server 端 secure_file_priv 目錄;
  • LOAD DATA INFILE 同樣受 secure_file_priv 限制;
  • mysqlimport 為客戶端工具,讀取本地文件,無 FILE 權限要求。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved