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

Shell 腳本中執行 MySQL SQL 語句實戰指南

     編輯:MySQL 綜合教學

核心原理

Shell 本身無資料庫連線能力,必須透過 MySQL 客戶端程式 mysql 執行 SQL。前提:機器已安裝 MySQL 客戶端工具。

基本語法

mysql -h<host> -P<port> -u<user> -p<password> <database> -e "<SQL語句>"

實戰腳本範例

#!/bin/sh

# 設定區
BIN="/usr/local/mysql/bin"
USERNAME="root"
PASSWORD=""          # 空密碼時不加 -p 參數
HOSTNAME="localhost"
PORT="3306"
DATABASE="loongdisk"
TABLE="userio"

# 密碼參數處理
if [ "$PASSWORD" = "" ]; then
    INPUT_PWD=""
else
    INPUT_PWD="-p$PASSWORD"
fi

# 動態生成資料表名(按月分表)
YEAR=$(date +%Y)
MONTH=$(date +%m)
HEAD="${DATABASE}.${TABLE}_${YEAR}${MONTH}"

# 要執行的 SQL:新增 login 欄位
SQL="ALTER TABLE $HEAD ADD COLUMN login INT(10) UNSIGNED NOT NULL DEFAULT 0"

# 執行
$BIN/mysql -h$HOSTNAME -P$PORT -u$USERNAME $INPUT_PWD $DATABASE -e "$SQL"

關鍵要點解析

  • 密碼處理:空密碼時不可寫 -p(會等待標準輸入),需條件判斷
  • SQL 注入風險:變數插值直接進 SQL,生產環境建議用預處理或嚴格驗證變數內容
  • 錯誤處理:生產腳本應檢查 $? 回傳碼,失敗時記錄日誌並告警
  • 批次執行:多條 SQL 可寫入 .sql 檔,用 mysql ... < file.sql 執行,避免命令列長度限制

進階應用場景

  • 定時備份腳本搭配 crontab
  • 分表維護:自動建立月分表、清理舊分表
  • 資料同步:從主庫查詢寫入從庫
  • 監控告警:查詢慢查詢、連線數、磁碟空間並推送通知
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved