PostgreSQL(以下、Postgres)をコンソールから操作する際、「あれ、あのコマンドのオプション何だったっけ?」となりがちな操作を自分用の備忘録としてまとめました。
今回は、日々の運用やデータメンテナンスでよく使う3つのテクニックを逆引きで紹介します。
1. 検索結果のページ分割(pager)を一時的にOFFにする
psql で大量のレコードを持つテーブルを SELECT すると、自動的に画面がページ分割(Lessのような状態)になり、スペースキーを押さないと先に進めなくなります。
「一気に全行をコンソールに出力して画面をスクロールして見たい!」という時は、以下のコマンドでページャーを一時的に無効化できます。
コマンド(psql内で実行)
\pset pager off
💡 ここがポイント
この設定は恒久的なものではなく、一度 psql からログアウト(\q)すると自動的に元の設定(デフォルトのページ分割有効)に戻ります。 その場限りの確認をしたいときに非常に便利です。
2. 外部のSQLファイルからコマンドを実行する
あらかじめ作成しておいた .sql ファイルを、Postgresサーバーに対して一括実行(インポート)させるコマンドです。
コマンド(シェルから実行)
psql -h ホスト名 -p 5432 -U ユーザー名 -W DB名 < SQLファイルパス
各オプションの解説
-
-h: 接続先のホスト名(IPアドレスなど) -
-p: ポート番号(デフォルトは5432) -
-U: 接続するユーザー名 -
-W: パスワード入力を求める(コマンド実行後にパスワードを聞かれます) -
DB名: 接続対象のデータベース名 -
<: リダイレクトを使ってSQLファイルを流し込みます
3. pg_dumpで「特定のテーブルだけ」ダンプを取得する
データベース全体ではなく、「特定のテーブル1つだけ」をバックアップ(ダンプ)したいときに使うコマンドです。
コマンド(シェルから実行)
pg_dump -h ホスト名 -p 5432 -U ユーザー名 -c DB名 -t テーブル名 > ダンプファイル名.sql
各オプションの解説
-
-c(–clean): 超重要オプション。 リストア(復元)する際、あらかじめ既存のテーブルを一度削除(DROP TABLE)してから再作成するSQLを含めてくれます。データの上書きトラブルを防ぐために付けておくと安全です。 -
-t(–table): ダンプを取得したい特定のテーブル名を指定します。 -
>: 出力リダイレクトを使って、指定したファイル名でダンプを保存します。
まとめ
-
画面が止まって鬱陶しいときは
\pset pager off -
まとめて実行は
psql ... DB名 < file.sql -
特定テーブルのバックアップは
pg_dump ... -c -t テーブル名 > file.sql
どれも検証環境の構築やデータ修正時によく使うコマンドばかりです。忘れてしまったときは、ぜひこのページをコピペして使ってください!
