Traffine I/O

日本語

2023-03-09

PostgreSQLチートシート

はじめに

この記事では、PostgreSQLの操作時に便利なコマンドやクエリをまとめたPostgreSQLチートシートを紹介します。頻繁に使用されるコマンドやクエリを簡単に参照できます。

ターミナルで使用するコマンド

このセクションでは、PostgreSQLデータベースを操作するためのターミナル(またはコマンドラインインタフェース)でよく使用されるコマンドについて詳しく説明します。

サーバーの起動

PostgreSQLサーバーを起動するには、pg_ctl startコマンドを使用し、データが格納されているディレクトリを指定するために-Dオプションを使用します。

bash
$ pg_ctl start -D /usr/local/var/postgres

サーバーの停止

PostgreSQLサーバーを停止するには、pg_ctl stopコマンドを使用し、停止するデータのディレクトリを指定するために再度-Dオプションを使用します

bash
$ pg_ctl stop -D /usr/local/var/postgres

サーバーの実行状態の確認

PostgreSQLサーバーが実行中かどうかを確認するには、ps aux | grep postgresコマンドを使用します。このコマンドはPostgreSQLに関連する全ての現在のプロセスをリストアップします。

bash
$ ps aux | grep postgres

データベースの接続

PostgreSQLデータベースに接続するには、psqlコマンドを使用し、-d(データベース名)、-U(ユーザー名)、-h(ホスト名)のオプションを指定します。これらのオプションが指定されていない場合、デフォルトでログインユーザーとlocalhostが使用されます。

bash
$ psql -d database -U user -h host

データベースのリスト表示

データベースのリストを表示するには、psql -lコマンドを使用します。

bash
$ psql -l

PostgreSQLのバージョンの表示

現在使用しているPostgreSQLのバージョンを確認するには、psql -Vコマンドを実行します。

bash
$ psql -V

PostgreSQLコマンド

次に、PostgreSQLのコマンドラインインタフェースでよく使用されるコマンドに焦点を当てます。

切断

PostgreSQLインタフェースから切断する場合は、\qまたは\!コマンドを使用します。

postgres=# \q
postgres=# \!

ユーザー

ユーザー管理はデータベース管理の重要な部分です。ここでは、ユーザー操作に関連するコマンドを見ていきます。

PostgreSQLでは、ロールという概念を使用してデータベースへのアクセス権限を管理しています。PostgreSQLでユーザーのリストを表示するには、次のコマンドを使用します。

postgres=# \du

データベースへのアクセス権限の管理には、ロールの概念が使用されています。全てのロールをリストするには、次のクエリを使用します。

postgres=# SELECT rolname FROM pg_roles;

データベース

データベースの操作は、PostgreSQLでの日常的なタスクです。ここでは、これらの操作に関連するコマンドを見ていきます。

接続されているデータベースの情報を表示するには、\conninfoコマンドを使用します。

postgres=# \conninfo

全てのデータベースをリストするには、\lコマンドを使用します。

postgres=# \l

異なるデータベースに接続するには、\c <database_name>コマンドを使用します。

postgres=# \c <database_name>

現在接続しているデータベースを表示するには、SELECT current_database();コマンドを使用します。

postgres=# SELECT current_database();

新しいデータベースを作成するには、CREATE DATABASE <database_name>;コマンドを使用します。

postgres=# CREATE DATABASE <database_name>;

テーブル

テーブル関連の操作は、PostgreSQLデータベースの中核をなすものです。

テーブルの説明(列名とデータ型を含む)を取得するには、\d <table>コマンドを使用します。

postgres=# \d <table>

テーブルの詳細な説明(ストレージ統計や列のコメントなどの追加情報を含む)を取得するには、\d+ <table>コマンドを使用します。

postgres=# \d+ <table>

現在のスキーマから全てのテーブルをリストするには、\dtコマンドを使用します。

postgres=# \dt

全てのスキーマのテーブルをリストするには、\dt *.*コマンドを使用します。

postgres=# \dt *.*

特定のスキーマのテーブルをリストするには、\dt <schema>.*コマンドを使用します。

postgres=# \dt <schema>.*

全てのテーブルのアクセス権限をリストするには、\dpコマンドを使用します。

postgres=# \dp

スキーマ

スキーマは名前空間であり、他のスキーマに存在する他のオブジェクト(テーブル、データ型、関数、演算子)と重複する可能性のある名前のオブジェクトが含まれています。PostgreSQLはスキーマを使用して、複数のユーザーが互いに干渉せずに1つのデータベースを共有するのに役立ちます。

現在のデータベース内の全てのスキーマをリストするには、\dnコマンドを使用します。

postgres=# \dn

ビュー

ビューは仮想テーブルと考えることができます。つまり、クエリの出力をテーブルとして扱うことができる保存されたクエリです。したがって、ビューは1つ以上の既存のベーステーブルから派生したオブジェクトです。

現在のデータベース内の全てのビューをリストするには、\dvコマンドを使用します。

postgres=# \dv

CSVのインポート/エクスポート

PostgreSQLは、CSVなどのさまざまな形式でデータをインポートおよびエクスポートするための強力なメカニズムを提供しています。

テーブルをCSVファイルにエクスポートするには、\copyコマンドを使用します。以下にいくつかの例を示します。

postgres=# \copy table TO '<path>' CSV
postgres=# \copy table(col1,col1) TO '<path>' CSV
postgres=# \copy (SELECT...) TO '<path>' CSV

CSVファイルからテーブルにデータをインポートするには、\copyコマンドを使用します。以下にいくつかの例を示します。

postgres=# \copy table FROM '<path>' CSV
postgres=# \copy table(col1,col1) FROM '<path>' CSV

履歴

以前に実行したコマンドの履歴を追跡することは、タスクの繰り返しやセッションで行われた操作の理解に非常に役立ちます。PostgreSQLでは、コマンドライン履歴を表示するために\sコマンドを使用することができます。

postgres=# \s

\sの後にファイル名を指定すると、コマンド履歴がそのファイルに書き込まれます。

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!