\`table\` 或單引號 'value'。cmd.exe 直接執行報語法錯誤。^、&、|、<、>、"、' 等在批處理上下文有特殊含義。mysql -u root -p < script.sql:標準輸入讀取,**不經 cmd 解析**,原樣傳給 MySQL,**推薦此方式**。mysql -u root -p -e "SQL 语句":SQL 字符串先經 cmd 解析,**需雙重轉義**。'abc' 若放在 -e " ... ' 中,外層雙引號與內層單引號在 cmd 中可能被誤判為字符串結束。| 方式 | 命令示例 | 適用場景 | 注意點 |
|---|---|---|---|
| **文件重定向(最穩)** | mysql -u root -p db_name < script.sql | 長腳本、含任意引號/特殊字符 | 文件編碼需與 MySQL charset 一致(建議 UTF-8) |
| **交互模式 source** | mysql -u root -p db_name → source /path/script.sql; | 需先進入交互、多腳本順序執行 | 路徑用正斜杠或雙反斜杠 |
| **參數 -e(簡短語句)** | mysql -u root -p -e "SELECT * FROM \`t\` WHERE c='a'" | 單條/極短語句 | **外層雙引號,內層反引號/單引號**;含雙引號時外層改單引號並轉義 |
# cmd 轉義字符:^
# 例:在 -e 雙引號字符串中包含雙引號
mysql -e "SELECT 'He said ^\"Hi^\"'"
# PowerShell 另一套規則:` 為轉義
mysql -e "SELECT 'He said `\"Hi`\"'"
source 執行,避開 Shell 轉義地獄。--default-character-set=utf8mb4。cmd 下直接粘貼含引號 SQL 失敗是 **Shell 轉義層級不匹配** 導致。**用文件重定向** 是最省心、最兼容、最易維護的方式。