Skip to content
All writing Part 08 of 09 · 從筆電連上遠端資料庫
Engineering · 1 min read

MySQL CLI:內嵌 SQL 的四種餵法

不進互動 session,把 SQL 餵給 mysql 的四種方式:單一 -e、分號隔開多句、引號起分隔符的 heredoc,或從 .sql 檔;要 pipe 就加 --batch。

不進互動 session,把 SQL 餵給 mysql 的四種方式:

1. 單一句內嵌-e):

mysql -e "SELECT * FROM asset WHERE uploaded_package_id = 100"

2. 多句:在同一個 -e 裡用分號隔開:

mysql -e "USE app_production; SELECT COUNT(*) FROM asset; SELECT NOW();"

3. Heredoc:多行最乾淨;把分隔符引號起來('SQL'),shell 才不會去展開 $/backtick:

mysql -D app_production <<'SQL'
SELECT a.asset_id, a.`size`
FROM   asset AS a
WHERE  uploaded_package_id = 100;
SQL

4. 從 .sql

mysql app_production < query.sql      # shell redirect
mysql -e "source query.sql"           # MySQL 自己的 source 指令
  • 要機器可解析的輸出:加 --batch(tab 分隔)+ --skip-column-names(去掉表頭),再 pipe 給 jq/Python。

這次的實例:--batch --skip-column-names 的輸出 pipe 進 Python,用 prod query 的結果組出一份 per-asset_id 的 JSON config。

一句用 -e、多行用 heredoc(引號起分隔符)、要 pipe 就加 --batch --skip-column-names


參考來源

Related: 回到遠端資料庫連線總覽;搭配一次性 vs REPLMySQL 連線參數

Tags #mysql #databases #cli
// connect

Be brave | Be wise | Be grateful

21 BreakinCode

// elsewhere
LinkedInMedium (lang: en)Youtube
wh:~$William Hung· © 2026 Taipei · GMT+8 · Available for collaboration