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

MySQL 匯出指定條件或部分資料的三種方法

     編輯:MySQL 綜合教學

場景

需匯出符合特定條件的資料子集,而非整張表。

方法一:建立中間表 + INSERT SELECT

-- 1. 建立目標結構表
CREATE TABLE new_table (a INT, b VARCHAR(50), c DATE);

-- 2. 篩選資料寫入
INSERT INTO new_table (a, b, c)
SELECT a, b, c FROM old_table WHERE id > 1000 AND status = 'active';

-- 3. 匯出中間表
mysqldump -u root -p dbname new_table > subset.sql

方法二:SELECT INTO OUTFILE (推薦,效能最佳)

SELECT a, b, c
INTO OUTFILE '/tmp/result.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM old_table
WHERE id > 1000 AND status = 'active';

注意:

  • 需 FILE 權限
  • 輸出目錄需 MySQL 進程寫入權限 (通常受 secure_file_priv 限制)
  • 檔案不可覆蓋,需先刪除或換檔名

方法三:mysqldump --where 參數 (最便捷)

mysqldump -u root -p dbname tablename --where="id > 1000 AND status = 'active'" > subset.sql

優點:單指令完成,無需建表、無檔案權限煩惱。
缺點:複雜條件需注意引號轉義;超大結果集記憶體壓力較大。

進階技巧

  • 匯出多表關聯資料:先建 VIEW,再用方法三匯出 View
  • 定時匯出腳本化:結合 crontab + 日期變數自動化
  • 跨庫匯出:mysqldump db1 table1 --where="..." | mysql db2 table2

安全提醒

匯出含敏感欄位 (身分證、手機、密碼雜湊) 時,務必脫敏或加密傳輸,符合 GDPR/個資法規範。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved