LoginSignup
0
0

初めに

Qiita Engineer Festa 2024に参加中。完走目指してます。
他のバックスラッシュコマンドについては以下から読んでください。
【PostgreSQL】バックスラッシュコマンドを纏めていく

\promptとは

変数nameに代入するテキストを入力するようにユーザを促します。 プロンプトtextをオプションで指定することができます。 (複数の単語をプロンプトで使用する場合はそのテキストを単一引用符でくくってください。)

引用元:PostgreSQL 15.4

試してみた

psqlでpostgresにログインする

$ psql

\promptを使用する

\prompt 'Please enter your name: ' user_name

すぐに入力が求められる

# \prompt 'Please enter your name: ' user_name
Please enter your name: daichi
# \echo :user_name
daichi

なるほど、\setと何が違うんだ?

\promptを活用してみる

再利用可能なスクリプトで利用すると有効活用できそうです。
例えば以下のようなテーブルがあったとします。

# select * from users;
 id |  name   | age 
----+---------+-----
  1 | Alice   |  30
  2 | Bob     |  25
  3 | Charlie |  35
  4 | Diana   |  30
(4 )

prompt_test.sqlというファイルを作り以下の内容を記載します。

\prompt 'Please enter the table name: ' table_name
\prompt 'Please enter the column name to filter by: ' column_name
\prompt 'Please enter the value to filter: ' filter_value

SELECT * FROM :table_name WHERE :column_name = :'filter_value';

作成できたら実行してみましょう。

$ psql -f prompt_test.sql 
ユーザ postgres のパスワード: 
Please enter the table name: users
Please enter the column name to filter by: age
Please enter the value to filter: 30
 id | name  | age 
----+-------+-----
  1 | Alice |  30
  4 | Diana |  30
(2 行)

結果が返ってきました。
最終的には以下のSQLが実行されて結果が返ってきました。

SELECT * FROM users WHERE age = '30';

まとめ

\promptについて実際に使ってみました。
自分も初めて触ってみたのですが、実務の中で活用できそうなシーンが浮かびました。

例えば特定のユーザーの権限を確認するコマンドですが、いつもSQL自体を調べているのでスクリプトを用意しておけば実行するだけで対象をそのときに指定できるので、調べる時間が短縮されるかと思ったので早速使っていきたいと思います。

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