Engineering · 1 min read
DB CLI 只在一件事上分岔:有 query flag 就是一次性,沒有就是 REPL
連上之後,DB CLI 只在一件事上分岔:丟一個 query flag 就是一次性、不丟就進 REPL。附 psql/mysql/mongosh 的 flag 與乾淨輸出選項。
連上之後(同樣的五座標),唯一的分岔是你有沒有丟一個 query flag:
| 一次性(留在 shell) | 互動(REPL) | |
|---|---|---|
| psql | -c "…" / -f file | psql <uri> → dbname=#,離開 \q |
| mysql | -e "…" / < file | mysql <flags> → mysql>,離開 exit |
| mongosh | --eval "…" / --file | mongosh <uri> → >,離開 Ctrl-D |
REPL 裡面講的語言不同:psql/mysql 是 SQL(mysql 要結尾 ;;psql 的 \ meta-command 不用 ;);mongosh 是一個接上 db 的 JavaScript REPL。要拿去 scripting,就加乾淨輸出的 flag:psql -tA、mysql -BN、mongosh --quiet。
這次的實例: psql … -c "\dt" 一次性跑了一個 backslash meta-command(不用 ;)就回到 shell——而且 \dt 只列 search-path 那個 schema(public),\dt *.* 才列全部 schema。
連上之後唯一的分岔就是 query flag:有就一次性、沒有就進 REPL。
參考來源
Related: 回到遠端資料庫連線總覽;這一切跑在五個座標上,MySQL 端是內嵌 SQL 的四種餵法。