0
0

初めに

Qiita Engineer Festa 2024に参加中。完走目指してます。
他のメタコマンドについては以下から読んでください。

【PostgreSQL】メタコマンドを纏めていく

\iとは

filenameファイルから入力を読み取り、キーボードから入力された場合と同じように実行します。

filename-(ハイフン)の場合、EOFを示すもの、または\qメタコマンドが読まれるまで標準入力から読み込みます。 これは対話的な入力とファイルからの入力を混在させるために使うことができます。 Readlineと同じ挙動は、それが最も外部のレベルで動作している場合にのみ利用されることに注意してください。

\iについて

試してみた

以下のようなSQLのファイルを作成(仮にscript.sqlとする)

CREATE TABLE test (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100)
);

INSERT INTO test (name) VALUES ('Alice'), ('Bob'), ('Carol');

psqlでセッションを開始した後に以下を実行する

\i script.sql

エラーなく完了したらselectで確認

select * from test;
 id | name  
----+-------
  1 | Alice
  2 | Bob
  3 | Carol
(3 rows)

\i -という使い方もある。
以下のように最後の行に追加してみる。

CREATE TABLE test (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100)
);

INSERT INTO test (name) VALUES ('Alice'), ('Bob'), ('Carol');

\i -

-fでファイルを実行する

psql -f script.sql

すると\i -がなければpsqlセッションを終了するはずが、継続してSQLを入力、実行ができるようになる。

まとめ

\iは複数のSQLを1アクションで実行することができるのでよく活用します。

\i -について今回初めて知りましたが、すぐに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