PostgreSQL コマンドの備忘録

Database

PostgreSQL、「The World’s Most Advanced Open Source Relational Database」だそうです。ソースが公開されているデータベースの内、現状商業用に多く使われているRelational Databaseの一つ。

よく使うコマンド、よく使う割にすぐ忘れてしまうので備忘録。
環境はMACです。

ターミナルでのコマンド

まずはターミナルで実行するコマンドから。
データベースを作ったり、破棄したり。
カレントディレクトリがどこであっても処理できると言う理解。

$ createdb <データベース名>
$ dropdb <データベース名>
$ dropdb <データベース名> && createdb <データベース名>

createdb〜はデータベースを作る(Create a database)
dropdb〜はデータベースを破棄する(Destroy a database)
dropdb〜 && createdb〜はデータベースをリセットする(Reset a database)。今ある物を破棄して新たなものを作る。このdrop & createはデータベースやテーブルを作る時の決まり文句の様だ。

ターミナルからはこの他にもデータベースサーバーを起動(start)、停止(stop)させたりもするが、このエントリの主眼ではないので一旦置いといて、psqlと言うデータベースを扱うターミナル(PostgreSQL interactive terminal)を起動してデータベースを操作します。

psqlを起動

$ psql <データベース名>
psql (13.4)
Type "help" for help.

plantsdb=#

ユーザー名を設定していたらデータベース名の後に入れる様だが、データベース名だけでも起動できる。
デフォルトのデータベース名はpostgres。

行頭に[データベース名=#]が付くのでpsqlが起動したと分かる。

psql内でのコマンド

以降[データベース名=#]の#以降を記載。
“\”はMacなら[option] + [¥]で出せる。

# \l
サーバーにある全てのデータベース一覧を出力。一覧にはデータベース名、オーナー名、アクセスレベルの情報が含まれる。

# \c <dbname>
指定した名前のデータベースにアクセス=>操作するデータベースを変更する。

# \dt
そのデータベースが持つテーブル一覧(database tables)を出力

# \d
tables, views, and sequencesの一覧を出力

# \d <tablename>
\dの後にテーブル名を続けると、指定したテーブルの仕様(schema : コラム名、データタイプ等の詳細)を出力

# \i ファイル名
指定したファイルを実行する。
この場合、ファイル名はフルパス。ルートからファイル名まで書き込む。

# \ir ファイル名
interactive terminalで打ち込む分には\i同様フルパスで書いてファイル実行。
だが、script(fileと同義)から実行する場合はscriptの場所からの相対パスで書く事が出来る。

# \q
psqlから出てターミナルに戻る

# \?
ヘルプ コマンドリストの出力

\iの利用例

sampledb_setup.sqlの名前で下記ファイルを作成

DROP DATABASE IF EXISTS plantsdb;
DROP USER IF EXISTS student;
CREATE DATABASE plantsdb;
CREATE USER student WITH ENCRYPTED PASSWORD 'student';
GRANT ALL PRIVILEGES ON DATABASE plantsdb TO student;
ALTER USER student CREATEDB;
ALTER USER student WITH SUPERUSER;

以下のコマンドでファイルを実行する。

postgres=# \ir /Users/MBPro/dbfile/sample/sampledb_setup.sql
DROP DATABASE
DROP ROLE
CREATE DATABASE
CREATE ROLE
GRANT
ALTER ROLE
ALTER ROLE
postgres=# 

DatabaseとUSERが作られた。

憶えておきたいコマンドがあればまた追加します。

コメント

  1. […] PostgreSQL コマンドの備忘録 […]

  2. […] PostgreSQL コマンドの備忘録 […]

タイトルとURLをコピーしました