背景
pgAdmin 上で複数の SQL ファイルを実行したかった。
以下のようなイメージを、pgAdmin 上で実現したくなった。
find sql/ -name *.sql -exec psql -U user -f {} ;
環境
pgAdmin4 v6.10
制約
- pgAdmin 上でやりたい
- 試行用で database 名は一定ではない為、bat などにして database 名をその都度変更は面倒。PSQL Tool なら、対象の database 上で開けば、同一 Meta-Commands で実行できるってのが利点。
結論
現状見つからず。
script 組むと、Database 名を追従するのは面倒だし・・
現状は以下 Meta-Commands を解としてみた。
\encoding utf-8; \cd '{target folder}'; \i {executable sql filename}; [...]
例)
\encoding utf-8; \cd 'c:/temp/sqls'; \i select1.sql; \i select2.sql;
解説
"\encoding utf-8"
PSQL Tool を起動するたびに、SJIS になる為
";"
"\cd {target folder}"
Current Directory を変える為
\! pwd は、Windows 上では、\! dir
"\i {executable sql filename}"
あとがき
対象フォルダを列挙して、パイプで繋げて実行したかったが、Meta-Commands でのパイプ方法が分からず・・
\! をパイプ('|') で繋げると、Dos Commands でのパイプになってしまう。
そこで psql を書く道はあるかもだが・・それするくらいなら、bat 書けよって思えて・・
ところで・・
スクラッチパッドって・・機能向上はしないんですかねぇ
正直、以下のようなことが出来るようになると便利なのになぁ・・と
- インタラクティブウィンドウとして SQL 簡易テスト
- 一時保存領域で、pgAdmin を落としてもそのまま記憶してくれている
ずいぶん昔からずっと存在してるらしい・・
参考
- Meta-Commands
keyword
Execute multiple Sql files by Psql Meta-Commands in PSQL Tool in Postgres