按条件筛选后导出要点
- mysqldump 加 --where="条件",只导出满足条件的行
- SELECT 版直接用 WHERE 子句,写法更直观也更灵活
- 时间范围用 created_at ≥ '某天' 这类条件,避免整表搬运
- --where 里引号容易和 shell 冲突,外层用双引号内层用单引号最稳
- 先不加导出、只跑 SELECT COUNT(*) 确认行数,再决定要不要真正导出
按条件筛选后导出示例
# mysqldump 只导 2026 年以后的订单
mysqldump -u root -p shop_db orders --where="created_at ≥ '2026-01-01'" 用重定向写入 orders_2026.sql
-- SELECT 版:把活跃用户导成文件
SELECT id, username, created_at
INTO OUTFILE '/var/lib/mysql-files/active_users.csv'
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
FROM user
WHERE is_active = 1 AND created_at ≥ '2025-06-01';
避坑提醒:--where 条件写错不会报错,只会安静地导出一个空文件或错误范围。导出前用同样的 WHERE 跑一遍 SELECT 看行数,能省掉很多返工。