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

MySQL 批處理模式完全指南:腳本執行、輸出控制與自動化實戰

     編輯:MySQL 綜合教學

MySQL 批處理模式完全指南:腳本執行、輸出控制與自動化實戰

交互式模式適合調試,但生產環境的定時任務、部署腳本、大批量操作,必須使用批處理模式。本文系統梳理 MySQL 批處理的啟動方式、參數控制、輸出格式差異、腳本複用等核心知識。

一、 批處理模式啟動方式

1. Linux/Unix 標準重定向

mysql < batch-file
# 帶連接參數
mysql -h host -u user -p < batch-file
Enter password: ********

2. Windows 特殊字符處理

mysql -e "source batch-file"
# 或
mysql -e "source C:/scripts/batch-file.sql"

Windows 下文件路徑含空格/特殊字符時,source 命令比重定向更穩健。

3. MySQL 客戶端內部執行

mysql> SOURCE filename;
mysql> \. filename

適用於已登入客戶端後動態執行腳本。

二、 核心命令行參數

參數作用典型場景
--force遇錯繼續執行,不中斷大腳本部署,部分語句可失敗
-t / --table輸出表格格式(同交互模式)人工查看報表
-v / --verbose顯示執行的 SQL 語句調試腳本、審計日誌
-vvv更詳細輸出(含元數據)深度調試
-s / --silent表格格式輸出,制表符分隔程序解析、管道傳輸
-r / --raw原始輸出,不轉義特殊字符二進制數據導出
-N / --skip-column-names不輸出列名純數據導出

三、 輸出格式差異:交互 vs 批處理

交互模式(默認表格)

+---------+
| species |
+---------+
| bird    |
| cat     |
| dog     |
+---------+

批處理模式(默認制表符分隔)

species
bird
cat
dog

獲取交互表格格式

mysql -t < batch-file | more

四、 輸出重定向與管道應用

1. 保存結果到文件

mysql < batch-file > mysql.out
# 結合參數
mysql -t -v < batch-file > execution.log 2>&1

2. 管道分頁查看

mysql < batch-file | more
mysql < batch-file | less

3. 程序化處理(制表符分隔)

mysql -s -N < batch-file | while read col1 col2; do
    echo "Processing: $col1 - $col2"
done

五、 批處理腳本優勢總結

  1. 可重複執行:日/週/月定時任務,免去手工輸入
  2. 版本控制:SQL 腳本納入 Git,變更可追溯、可回滾
  3. 易於修正:修改腳本文件即可,無需重新輸入長 SQL
  4. 多語句序列支持:複雜存儲過程、多表關聯變更,單次執行
  5. 非交互環境必備:Cron、Jenkins、K8s Job 等自動化流程
  6. 分發共享:腳本文件可分發給團隊/客戶統一執行

六、 實戰最佳實踐

1. 腳本文件規範

-- batch-script.sql
-- 版本:v1.2
-- 作者:DBA Team
-- 說明:月度數據歸檔

SET NAMES utf8mb4;
SET time_zone = '+08:00';

-- 安全檢查
SELECT 'Starting archive at ', NOW();

-- 核心業務邏輯
DELETE FROM logs WHERE create_time < DATE_SUB(NOW(), INTERVAL 1 YEAR) LIMIT 10000;

-- 驗證
SELECT 'Archive completed at ', NOW(), ROW_COUNT() AS deleted_rows;

2. 錯誤處理模式

#!/bin/bash
# run_batch.sh
mysql --force -h $HOST -u $USER -p$PASS -D $DB < batch-script.sql > result.log 2>&1
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
    echo "Batch execution failed, check result.log"
    # 發送告警
    exit 1
fi
echo "Batch completed successfully"

3. 事務控制

批處理模式下默認 AUTOCOMMIT=1。需事務保證一致性時,在腳本中顯式控制:

START TRANSACTION;
UPDATE account SET balance = balance - 100 WHERE id = 1;
UPDATE account SET balance = balance + 100 WHERE id = 2;
COMMIT;
-- 或遇錯回滾
-- ROLLBACK;

七、 總結

批處理模式是 MySQL 從「開發工具」走向「生產級組件」的關鍵能力。掌握 </source 兩種執行入口、-t/-v/-s/-N 輸出控制參數、錯誤處理與事務控制模式,配合 Shell/Python 自動化腳本,可構建穩健、可審計、可擴展的數據庫運維體系。

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