PostgreSQLのクエリーバッファについて
クエリーバッファとは
PostgreSQLでは、クエリーバッファという概念があります。これは、実行するSQLクエリが一時的に格納される場所です。 コマンドラインでクエリを実行する際、クエリはまずクエリーバッファに格納され、そこから実行されます。 クエリーバッファを操作することにより、クエリの内容を確認したり編集したりすることができます。
クエリーバッファを表示する(\p)
`\p`コマンドは、現在のクエリーバッファの内容を表示します。このコマンドは、入力したSQLクエリが正しくクエリーバッファに格納されているかを確認するのに役立ちます。 例えば、誤ってクエリを途中で入力した場合でも、`\p`を使ってその内容を確認できます。
例:
postgres=# SELECT * FROM employees; postgres=# \p SELECT * FROM employees;
上記の例では、`SELECT * FROM employees;`がクエリーバッファに格納されており、`\p`を実行することでその内容が表示されます。
クエリーバッファを編集する(\e)
`\e`コマンドは、現在のクエリーバッファをエディタで開くコマンドです。これを使うと、クエリーバッファに格納されているクエリを テキストエディタ(デフォルトでは`vi`や`nano`)で編集することができます。これにより、長いクエリや複雑なクエリをより見やすく、編集しやすくすることができます。
例:
postgres=# SELECT * FROM employees WHERE age > 30; postgres=# \e
上記のコマンドを実行すると、エディタが開き、`SELECT * FROM employees WHERE age > 30;`というクエリを確認および編集できます。 エディタを閉じると、変更したクエリがクエリーバッファに反映され、再実行できます。
ヒストリを表示する(\s)
`\s`コマンドは、PostgreSQLのセッションで実行したSQLコマンドの履歴を表示します。このコマンドは、過去に実行したクエリを振り返りたいときに便利です。 ヒストリには、セッションが終了するまで実行したすべてのコマンドが記録されます。
例:
postgres=# SELECT * FROM employees WHERE age > 30; postgres=# INSERT INTO employees (name, age) VALUES ('John', 28); postgres=# \s -- 出力: -- 2025-02-06 10:00:01: SELECT * FROM employees WHERE age > 30; -- 2025-02-06 10:01:00: INSERT INTO employees (name, age) VALUES ('John', 28);
上記の例では、`\s`を実行すると、過去に実行した`SELECT`と`INSERT`コマンドが表示されます。 履歴を利用することで、同じクエリを繰り返し実行することが簡単にできます。