首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 匯入匯出完整指南:mysqldump、mysqlimport、LOAD DATA、SELECT INTO OUTFILE 實戰

     編輯:MySQL 資料庫相關知識

mysqldump 邏輯備份

# 完整備份(結構+資料+例程+觸發器+事件)
mysqldump -u root -p \
  --single-transaction \
  --routines --triggers --events \
  --master-data=2 \
  --hex-blob \
  --quick \
  db_name > backup_$(date +%F).sql

# 僅結構
mysqldump -u root -p -d db_name > schema.sql

# 指定表
mysqldump -u root -p db_name tbl1 tbl2 > tables.sql

# WHERE 條件篩選
mysqldump -u root -p --where="created > '2023-01-01'" db_name tbl > recent.sql

# 遠端直接同步
mysqldump -u root -p db_name | mysql -h slave_host -u root -p db_name

mysqldump 關鍵參數對照

匯入還原

# 方式一:mysql 命令(推薦大檔)
mysql -u root -p db_name < backup.sql

# 方式二:source 命令(需進入 mysql>)
mysql -u root -p
mysql> CREATE DATABASE IF NOT EXISTS db_name;
mysql> USE db_name;
mysql> SOURCE /path/backup.sql;

# 方式三:壓縮檔直接導入
zcat backup.sql.gz | mysql -u root -p db_name

mysqlimport / LOAD DATA 高效匯入

# mysqlimport(檔名=表名)
mysqlimport -u root -p --local \
  --fields-terminated-by=, --fields-enclosed-by='"' \
  --lines-terminated-by='\n' \
  --ignore-lines=1 \
  db_name /path/file.txt

# LOAD DATA INFILE(SQL 介面,支援欄位映射)
LOAD DATA LOCAL INFILE '/path/file.csv'
    INTO TABLE tbl
    CHARACTER SET utf8mb4
    FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (col1, col2, col3);  -- 指定欄位順序,CSV 欄位可不同順序

SELECT INTO OUTFILE 匯出

-- 僅資料,可指定格式
SELECT col1, col2, col3
INTO OUTFILE '/tmp/export.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM tbl WHERE created > '2023-01-01';

-- 結合報表產生
USE db;
SELECT 'ID','Name','Email'
UNION ALL
SELECT id, name, email FROM users WHERE status=1
INTO OUTFILE '/tmp/report.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"';

Linux 權限管理速查

參數作用建議
--single-transactionInnoDB 一致性快照InnoDB 必加
--quick流式讀取,不緩存全表大表必加
--master-data=2註解記錄 Binlog 位置主從同步基準
--hex-blob二進位欄位十六進位避免編碼問題
--routines/triggers/events包含存儲過程/觸發器/事件完整備份必加
--compress網路傳輸壓縮遠端備份加速
--no-create-info僅資料,無 CREATE TABLE資料遷移
--no-data僅結構結構同步
chmod 700 /backup/mysql          # 單目錄
chmod -R 700 /backup/mysql       # 遞歸
chown mysql:mysql /backup/mysql  # 歸屬 mysql 用戶

常見問題排查

符號數字含義
rwx------700擁有者全權
rwxr--r--744擁有者全權,其他讀
rw-rw-r-x665擁有者/群組讀寫,其他讀執行
drwx--x--x711目錄:擁有者全權,其他進入
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
問題解決
導入亂碼mysqldump --default-character-set=utf8mb4 / 導入前 SET NAMES utf8mb4
ERROR 2006max_allowed_packet 過小,調大至 64M+
SELECT INTO OUTFILE 權限需 FILE 權限,目錄需 mysql 寫入權限
LOAD DATA LOCAL 禁止客戶端 --local-infile=1,伺服端 local_infile=ON
備份檔過大分表備份、壓縮、或用 Percona XtraBackup 物理備份