Postgresデータベースの管理に関しては、SQL Workbench/JやpgAdminIIIなどのさまざまなサードパーティツールを利用できます。ただし、Postgres自体には、psql
と呼ばれる強力なコマンドラインツールがバンドルされています。 これは、ターミナルに精通している人や、スクリプト管理タスクを探している人に最適です。データベース管理者が実行する最も一般的なタスクの1つは、単に環境に慣れることです。これには、「このサーバーにはどのデータベースが存在するか」などの質問が含まれます。または「このサーバーの特定のデータベースに保存されているテーブルは何ですか?」このチュートリアルでは、psql
を使用してコマンドラインからこれらの重要な質問に答える方法を学習します。 。
psql
を介して生のSQLクエリをサーバーに送信できることに加えて psql
を利用することもできます サーバーから情報を取得するためのメタコマンド。メタコマンドは、psql
によって評価されるコマンドです。 多くの場合、サーバー上のシステムテーブルに対して発行されるSQLに変換されるため、管理者は日常的なタスクを実行する時間を節約できます。それらは円記号で示され、その後にコマンドとその引数が続きます。以下にその例をいくつか示します。
単一のPostgresサーバープロセスで複数のデータベースを同時に管理できます。各データベースは、サーバーのデータディレクトリ内の独自のディレクトリに個別のファイルセットとして保存されます。サーバー上で定義されたすべてのデータベースを表示するには、\list
を使用できます。 メタコマンドまたはそのショートカット\l
。
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
sales | ubuntu | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
ほとんどのPostgresサーバーには、デフォルトで3つのデータベースが定義されています:template0
、template1
およびpostgres
。 template0
およびtemplate1
CREATE DATABASE
で使用されている、または使用できるスケルトンデータベースです。 指図。 postgres
は、他のデータベースを作成する前に接続するデフォルトのデータベースです。別のデータベースを作成したら、テーブルを作成してデータを挿入するために、そのデータベースに切り替える必要があります。多くの場合、複数のデータベースを管理するサーバーを使用する場合、データベース間を頻繁に移動する必要があります。これは、\connect
を使用して実行できます メタコマンドまたはそのショートカット\c
。
postgres=# \c sales
You are now connected to database "sales" as user "ubuntu".
sales=#
データベースに接続したら、そこで作成されたテーブルを確認する必要があります。これは、\dt
を使用して実行できます メタコマンド。ただし、テーブルがない場合は出力されません。
sales=# \dt
No relations found.
sales=#
テーブルを作成すると、作成されたテーブルの表形式のリストに返されます。
sales=# CREATE TABLE leads (id INTEGER PRIMARY KEY, name VARCHAR);
CREATE TABLE
sales=# \dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+--------
public | leads | table | ubuntu
(1 row)
sales=#