日常資料庫維護中,常需將查詢結果匯出分析、批次執行 SQL 腳本、記錄操作過程供審計或除錯。本文詳細說明 MySQL 內建的 tee、重導向、source、SELECT ... INTO OUTFILE 等實用技巧。
mysql -u root -p --tee=C:\log.txt
之後所有互動指令與輸出皆會寫入 log.txt。
mysql> tee C:\log.txt; -- 開始記錄
mysql> notee; -- 停止記錄
mysql -u root -p -e "USE mydb; SELECT * FROM users;" > C:\result.txt
mysql> tee C:\result.txt;
mysql> USE mydb;
mysql> SELECT * FROM users;
mysql> notee;
SELECT * FROM users INTO OUTFILE '/tmp/users.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
注意: 需有FILE權限,檔案路徑在伺服器端,受secure_file_priv限制。
# 基本語法
mysql -u username -p password -D database_name < script.sql
# 範例
D:\mysql\bin\mysql -uroot -p123456 -Dtest < d:\test\ss.sql
USE db; 可省略 -D"C:\Program Files\mysql\bin\mysql"mysql> source d:\test\ss.sql;
-- 或
mysql> \. d:\test\ss.sql;
| 需求 | 建議方式 |
|---|---|
| 審計所有 DDL/DML 操作 | 啟用 General Log 或使用 tee 記錄維護窗口操作 |
| 大量資料匯出給數據分析師 | SELECT INTO OUTFILE 產生 CSV,再壓縮傳輸 |
| 部署上線執行結構變更腳本 | 命令列模式 mysql < deploy.sql,搭配交易控制 |
| 開發環境快速重建測試資料 | source 載入 init_data.sql |
小技巧: 使用 mysql -v (verbose) 可在輸出中看到執行的 SQL 語句,方便除錯腳本執行流程。