0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Postgres: Psql Meta-Commands で複数のSQL Files を実行する

Posted at

背景

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 になる為

image.png

";"

複数コマンドを繋げる為
image.png

"\cd {target folder}"

Current Directory を変える為

image.png

\! pwd は、Windows 上では、\! dir

"\i {executable sql filename}"

あとは、実行したいファイルを羅列
image.png

あとがき

対象フォルダを列挙して、パイプで繋げて実行したかったが、Meta-Commands でのパイプ方法が分からず・・
\! をパイプ('|') で繋げると、Dos Commands でのパイプになってしまう。
そこで psql を書く道はあるかもだが・・それするくらいなら、bat 書けよって思えて・・

ところで・・
スクラッチパッドって・・機能向上はしないんですかねぇ
image.png

正直、以下のようなことが出来るようになると便利なのになぁ・・と

  • インタラクティブウィンドウとして SQL 簡易テスト
  • 一時保存領域で、pgAdmin を落としてもそのまま記憶してくれている

ずいぶん昔からずっと存在してるらしい・・

参考

  • Meta-Commands

keyword

Execute multiple Sql files by Psql Meta-Commands in PSQL Tool in Postgres

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?