PostgreSQL(別名Postgres)はオープンソースのオブジェクトリレーショナルデータベースシステムです。データベースへのアクセスを支える言語であるSQLを使用し、用途を拡張することができます。

Postgresデータベースサーバーを効果的に管理するには、環境とサーバーが何を保存しているかを熟知している必要があります。時には、サーバー上で稼動しているデータベースを一覧表示し、データベースに関する情報を取得した上で接続するといった操作が必要になるかもしれません。PostgreSQLのインターフェースやAdminerのようなグラフィカルツールを使用することで、そのような情報を簡単に表示、操作することができます。

Postgresサーバー上に複数のデータベースがあり、そのうちのひとつを見つけるために一覧を確認することもあるでしょう。そして、そのデータベースが格納するデータの概要が必要になることが多く、その場合にはテーブルの一覧表示が有効になります。今回の記事では、Postgresでデータベースとテーブルを一覧表示する方法をご紹介します。

前提条件

この説明を読み進めるには、以下が必要になります。

  • 1つ以上のデータベースがインストールされたPostgresデータベースサーバー
  • データベースサーバー上のアカウントのスーパーユーザーアクセス資格情報
  • SELECT文やWHERE節などの基本的なSQLコマンドに精通していること

また、複数のデータベースとテーブルを用意しておく必要があります。

PostgreSQLデータベースサーバーへの接続方法

PostgreSQLデータベースサーバーに接続するには、インストール後のコンピュータで利用可能なSQLシェルを通して、psqlと呼ばれる独自のSQLバージョンにアクセスします。

psqlとSQLシェルを使用して、データベース環境を管理することができます。ほとんどのSQLコマンドはデータやテーブルを操作しますが、psqlのメタコマンドはデータベース管理タスクを処理します。たとえば、メタコマンドを使用してデータベースを作成または削除し、SQLコマンドを使用してテーブルを追加したりデータを取得したりできます。

Psqlのメタコマンドはバックスラッシュ(\)の接頭辞で区別され、多くの短いバージョンがあります。例えば、\help\h は同じ機能を実行します。

SQLステートメントとメタコマンドを実行するには、SQLシェルからサーバーにログインします。次のようなプロンプトが表示されます。

  • 対象のデータベース名
  • ユーザー名
  • パスワード

情報を入力するとプロンプトが表示され、SQLコマンドとメタコマンドを入力できるようになります。

psqlでログインに成功したところ
psqlでログインに成功

接続が完了したら、以下のことができます。

  • 利用可能なデータベースの一覧
  • 特定のデータベースへの接続
  • データベース一覧のフィルタリング
  • データベースを切り替える
  • データベース内のテーブルを一覧表示する

データベースの表示方法

Postgresサーバーでは、複数のデータベースを管理することが標準的なプラクティスです。各データベースは一意のディレクトリに存在し、サーバー内で別々に保存されます。

データベースサーバーを効率的に管理するために、サーバーのデータベースの一覧や関連する特定の情報を取得する必要性が生じるかもしれません。psqlを使用してPostgresサーバー内のデータベースを一覧表示するには、SQL ShellでPostgres環境にログインしてください。

ログインしたら、コマンドラインでメタコマンド\listを入力します。これにより、SQL Shellは以下の画像のように環境に存在するデータベースの概要を表示します。

psqlのデータベース一覧
psqlのデータベース一覧

より素早くコマンドを実行したい場合は、\lという省略形を使用することもできます。

Postgres環境におけるデータベースのフィルタリング

多数のデータベースが存在する環境では、特定のデータベースを特定することが不可欠になります。SQL Shellでは、データベースの特性をコマンドに組み込むことで、これを実現することができます。

Postgres環境では、データベース情報はpg_databaseテーブル内に格納されます。例えば、「test」という語を含むデータベースを検索し、フィルタリングすることを目的とする場合、以下のクエリを実行します。

SELECT * FROM pg_database WHERE datname = 'test_data';

SQL Shellにより条件に該当するデータベースが表示されます。

testという文字列を含む名前を持つデータベースのリスト
testという文字列を含む名前のデータベースを一覧表示

データベースをリストアップし、結果をフィルタリングするこの方法はSQLに基づいているため、フィルタリングを用いたデータベースのリスト作成のために複雑なクエリを利用することができます。しかし、そのためにはSQLとPostgresのメタデータに精通している必要があります。

データベースへの接続と切り替え方法

SQL ShellとPSQLを使用してデータベース内を移動する際には、対象のデータベース名を知っていれば、データベースへの接続やデータベース間の切り替えを簡単に行うことができます。

データベースの接続または切り替えを行うには、SQL ShellでPostgres環境にログインします。

そして、コマンドラインでメタコマンド\connect、その後に接続先のデータベース名を入力します。例えば、test_dataという名前のデータベースに接続するには、\connect test_dataというコマンドを使用します。

SQL Shellがデータベースに接続した後、以下のメッセージが表示されます。

データベースtest_dataへの接続に成功したところ
データベースtest_dataへの接続に成功

あるいは、\cという短いコマンドを使っても同じ結果を得ることができます。

データベーステーブルの一覧表示方法

データベースに接続したら、そのデータベースに含まれるテーブルを一覧表示することができます。これを行うには、\dtコマンドを入力します。

SQL Shellによりデータベース内のすべてのテーブルが一覧表示されます。

現在のデータベース内のテーブルを示したリスト
対象のデータベース内のテーブル一覧

Adminerによるデータベースとテーブルへのアクセス

SQL ShellはPostgresデータベースを管理する1つのツールに過ぎません。他のツールとしてAdminerがあり、シンプルなグラフィカルユーザーインターフェース(GUI)を使って、データベースサーバーを管理することができます。さらに、AdminerはPHPがインストールされている環境であればどこでも動作します。

Adminerを単独でインストールして実行することもできますが、DevKinstaで(その他の多くの機能とあわせて)使うことも可能です。

Adminerをインストールしたら実行し、Postgres環境の認証情報を入力します。

Adminerのログインページ
Adminerのログインページ

Adminerを使用して、Postgres環境のデータベース一覧を取得することができます。データベースサーバーにログインすると、データベースの一覧が表示されます。

全データベースのリストを表示(Adminerの画面)
Adminerで全データベースの一覧を表示

目的のデータベースに接続するには、一覧からデータベースを選択します。Adminerに、選択したデータベースのテーブル、ビュー、ルーチン、シーケンス、およびユーザータイプの一覧が表示されます。

test_dataデータベースの情報
test_dataデータベースの情報

または、ページの左側にあるDBドロップダウンからデータベースを選択することもできます。

利用可能なデータベースを示すドロップダウン
利用可能なデータベースを示すドロップダウン

まとめ

Postgres環境のデータベースをうまく管理するためには、最小限の労力でデータを表示、フィルタリング、操作できる必要があります。SQL Shellコマンドラインを選択することもできますが、AdminerのようなGUIツールの方がよりシームレスにワークフローに統合できるかもしれません。

WordPress開発者にとって、DevKinstaは強力な味方です。データベース管理を合理化する数々の(Adminerも対応)機能が組み込まれています。Postgresデータベースを簡単に管理する術として、是非ともDevKinstaをお試しください。

Jeremy Holcombe Kinsta

Kinstaのコンテンツ&マーケティングエディター、WordPress開発者、コンテンツライター。WordPress以外の趣味は、ビーチでのんびりすること、ゴルフ、映画。高身長が特徴。