需匯出符合特定條件的資料子集,而非整張表。
-- 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 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 權限secure_file_priv 限制)mysqldump -u root -p dbname tablename --where="id > 1000 AND status = 'active'" > subset.sql
優點:單指令完成,無需建表、無檔案權限煩惱。
缺點:複雜條件需注意引號轉義;超大結果集記憶體壓力較大。
crontab + 日期變數自動化mysqldump db1 table1 --where="..." | mysql db2 table2匯出含敏感欄位 (身分證、手機、密碼雜湊) 時,務必脫敏或加密傳輸,符合 GDPR/個資法規範。