初めに
Qiita Engineer Festa 2024に参加中。完走目指してます。
他のメタコマンドについては以下から読んでください。
【PostgreSQL】メタコマンドを纏めていく
\promptとは
変数
name
に代入するテキストを入力するようにユーザを促します。 プロンプトtext
をオプションで指定することができます。 (複数の単語をプロンプトで使用する場合はそのテキストを単一引用符でくくってください。)
試してみた
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自体を調べているのでスクリプトを用意しておけば実行するだけで対象をそのときに指定できるので、調べる時間が短縮されるかと思ったので早速使っていきたいと思います。