「psql」コマンドのまとめ
【環境条件】
win10
psql (PostgreSQL) 9.5.7
■psqlコマンドについて
PostgreSQLに付属されているツールで、データベースの管理をしたり、SQL文を実行したりすることが出来るPostgreSQL の会話型ターミナル
1)確認の仕方
C:\Users\hiromi>psql --help
使用方法:
psql [オプション]... [データベース名 [ユーザ名]]
一般的なオプション:
-c, --command=コマンド (SQLまたは内部の)単一コマンドを一つだけ実行して終了
-d, --dbname=DB名 接続するデータベース名を指定(デフォルト: "")
-f, --file=ファイル名 ファイルからコマンドを読み込んで実行後、終了
-l(エル), --list 使用可能なデータベース一覧を表示して終了
-v, --set=, --variable=NAME=VALUE
set psql variable NAME to VALUE
(e.g., -v ON_ERROR_STOP=1)
-V, --version バージョン情報を表示し、終了します
-X, --no-psqlrc 初期化ファイル (~/.psqlrc) を読みこまない
-1(数字の1), --single-transaction
単一のトランザクションとして実行(対話式でない場合)
-?, --help[=options] show this help, then exit
--help=commands list backslash commands, then exit
--help=variables list special variables, then exit
入出力オプション:
-a, --echo-all スクリプトからのすべての入力を表示
-b, --echo-errors echo failed commands
-e, --echo-queries サーバーへ送信したコマンドを表示
-E, --echo-hidden 内部コマンドが生成した問い合わせを表示
-L, --log-file=ファイル名 セッションログをファイルに書き込む
-n, --no-readline 拡張コマンドライン編集機能(readline)を無効にする
-o, --output=ファイル名 問い合わせ結果をファイル(または |パイプ)に送る
-q, --quiet 静かに実行(メッセージなしで、問い合わせの出力のみ)
-s, --single-step シングルステップモード(各問い合わせごとに確認)
-S, --single-line 単一行モード(行末を SQL コマンドの終了とみなす)
出力フォーマットオプション:
-A, --no-align 桁揃えなしのテーブル出力モード
-F, --field-separator=文字列
桁揃えなしの出力でのフィールド区切り文字(デフォルト: "|")
-H, --html HTML テーブル出力モード
-P, --pset=変数[=値] 表示オプション '変数' を '値' にセット (\pset コマンドを参照)
-R, --record-separator=文字列
桁揃えなしの出力でのレコード区切り文字(デフォルト:改行)
-t, --tuples-only 行のみを表示
-T, --table-attr=TEXT HTMLテーブルのタグ属性をセット(width, border等)
-x, --expanded 拡張テーブル出力を有効にする
-z, --field-separator-zero
桁揃えなしの出力でのフィールド区切り文字をゼロバイトに設定
-0, --record-separator-zero
桁揃えなしの出力でのレコード区切り文字をゼロバイトに設定
接続オプション:
-h, --host=ホスト名 データベースサーバーのホストまたはソケットのディレクトリ(デフォルト: "ローカルソケット")
-p, --port=ポート番号 データベースサーバーのポート番号(デフォルト: "")
-U, --username=ユーザー名 データベースのユーザ名(デフォルト: "")
-w, --no-password パスワード入力を要求しない
-W, --password パスワードプロンプトを強制表示する
(本来は自動的に表示されるはずです)
詳細は psql の中で "\?" (内部コマンドの場合) または "\help"
(SQL コマンドの場合) をタイプするか、PostgreSQL ドキュメントの psql の
セクションを参照のこと。
不具合は
例文
C:\Users\hiromi>psql -V
psql (PostgreSQL) 9.5.7
1)PostgreSQLへ接続
C:\Users\hiromi>psql -U postgres
ユーザ postgres のパスワード:
成功すると下記のように成る
postgres=#
2)データーベース一覧表示
postgres=# ¥l
データベース一覧
名前 | 所有者 | エンコーディング |
-----------+----------+------------------+--------------------+---
postgres | postgres | UTF8
sample1 | postgres | UTF8 |
sample2 | testuser | UTF8 |
template0 | postgres | UTF8 |
template1 | postgres | UTF8 |
(5 行)
3)データーベース「sample1」の作成
postgres=# create database sample;←SQL文
CREATE DATABASE
4)データーベース「sample1」の削除
postgres=# drop database sample;←SQL文
DROP DATABASE
5)データーベース「sample1」と接続
postgres=# ¥c sample1
データベース "sample1" にユーザ"postgres"として接続しました。
sample1=#←接続したデーターベース名に変わる
6)テーブルの一覧
sample1=# ¥d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+---------+----------+----------
public | sample | テーブル | postgres
public | sample1 | テーブル | postgres
public | sample2 | テーブル | postgres
public | sample3 | テーブル | postgres
public | sample4 | テーブル | postgres
public | test | テーブル | postgres
7)テーブル「test2」の作成
sample1=# create table test2(id integer,name text);←SQL文
CREATE TABLE
8)データ入力
sample1=# insert into test2(id,name) values(1,'yamada');
INSERT 0 1
sample1=# insert into test2(id,name) values(2,'sato');
INSERT 0 1
9)データ表示
sample1=# select * from test2;
id | name
----+--------
1 | yamada
2 | sato
(2 行)
10)データ削除(whereが無いとまるごと消える)
sample1=# delete from test2 where id=2;
DELETE 1
sample1=# select * from test2;
id | name
----+--------
1 | yamada
11)テーブル削除
sample1=# drop table test2;
DROP TABLE
sample1=# ¥d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+---------+----------+----------
public | sample | テーブル | postgres
public | sample1 | テーブル | postgres
public | sample2 | テーブル | postgres
public | sample3 | テーブル | postgres
public | sample4 | テーブル | postgres
public | test | テーブル | postgres
(6 行)
後はグーグルで調べてね!
■終了
postgres=# ¥q
C:\Users\hiromi>
【クエリ(SQL文)の発行】
C:\Users\hiromi>psql -U postgres
ユーザ postgres のパスワード:
psql (9.5.7)
"help" でヘルプを表示します.
postgres=# ¥?
・クエリの一覧
一般
\copyright PostgreSQL の使い方と配布条件を表示
\g [ファイル] または ';' 問い合わせを実行(し、結果をファイルまたは |パイプ へ書き出す)
\gset [PREFIX] 問い合わせを実行し結果をpsql変数に格納
\q psql を終了する
\watch [SEC] SEC秒毎に問い合わせを実行する
Help
\? [commands] show help on backslash commands
\? options show help on psql command-line options
\? variables show help on special variables
\h [名前] SQL コマンドの文法ヘルプ、* で全コマンド
問い合わせバッファ
\e [ファイル] [行番号] 現在の問い合わせバッファ(やファイル)を外部エディタで編集する
\ef [関数名 [行番号]] 関数定義を外部エディタで編集する
\p 問い合わせバッファの内容を表示する
\r 問い合わせバッファをリセット(クリア)する
\w ファイル 問い合わせバッファの内容をファイルに書き出す
入出力
\copy ... クライアントホストに対し、データストリームを使ってSQLコピーを行う
\echo [文字列] 文字列を標準出力に書き出す
\i ファイル ファイルからコマンドを読み込んで実行する
\ir ファイル \iと同じ。ただし現在のスクリプトの場所からの相対パス
\o [ファイル] すべての問い合わせの結果をファイルまたは |パイプ へ送る
\qecho [文字列] 文字列を問い合わせ出力ストリームに出力(\o を参照)
情報
(修飾子: S = システムオブジェクトを表示 + = 付加情報)
\d[S+] テーブル、ビュー、シーケンスの一覧を表示する
\d[S+] 名前 テーブル、ビュー、シーケンス、インデックスの説明を表示する
\da[S] [パターン] 集約関数の一覧を表示する
\db[+] [パターン] テーブルスペースの一覧を表示する
\dc[S+] [パターン] 変換ルールの一覧を表示する
\dC[+] [パターン] キャストの一覧を表示する
\dd[S] [パターン] 他では表示されないオブジェクトの説明を表示する
\ddp [パターン] デフォルト権限の一覧を表示する
\dD[S+] [パターン] ドメインの一覧を表示する
\det[+] [パターン] 外部テーブルの一覧を表示する
\des[+] [パターン] 外部サーバーの一覧を表示する
\deu[+] [パターン] ユーザマッピングの一覧を表示する
\dew[+] [パターン] 外部データラッパーの一覧を表示する
\df[antw][S+] [パターン] 関数(集約/通常/トリガー/ウィンドウのみ)の一覧を表示する
\dF[+] [パターン] テキスト検索設定の一覧を表示する
\dFd[+] [パターン] テキスト検索用辞書の一覧を表示する
\dFp[+] [パターン] テキスト検索用パーサーの一覧を表示する
\dFt[+] [パターン] テキスト検索用テンプレートの一覧を表示する
\dg[+] [パターン] ロールの一覧を表示する
\di[S+] [パターン] インデックスの一覧を表示する
\dl ラージオブジェクトの一覧を表示する。\lo_list と同じ。
\dL[S+] [パターン] 手続き言語の一覧を表示する
\dm[S+] [パターン] マテリアライズドビューの一覧を表示する
\dn[S+] [パターン] スキーマの一覧を表示する
\do[S] [名前] 演算子の一覧を表示する
\dO[S+] [パターン] 照合順序の一覧を表示する
\dp [パターン] テーブル、ビュー、シーケンスのアクセス権一覧を表示する
\drds [パターン1 [パターン2]] データベース毎のロール(ユーザー)設定の一覧を表示する
\ds[S+] [パターン] シーケンスの一覧を表示する
\dt[S+] [パターン] テーブルの一覧を表示する
\dT[S+] [パターン] データ型の一覧を表示する
\du[+] [パターン] ロールの一覧を表示する
\dv[S+] [パターン] ビューの一覧を表示する
\dE[S+] [パターン] 外部テーブルの一覧を表示する
\dx[+] [パターン] 拡張の一覧を表示する
\dy [パターン] イベントトリガの一覧を表示する
\l[+] [パターン] データベースの一覧を表示する
\sf[+] 関数名 関数定義を表示する
\z [パターン] \dp と同じ
書式設定
\a 出力モードの 'unaligned' / 'aligned' を切り替える
\C タイトル テーブルのタイトルを設定する。指定がなければ解除
\f [文字列] 桁揃えを行わない(unaligned)問い合わせ出力におけるフィールド区切り文字を表示または設定
\H HTML の出力モードを切り替える(現在: オフ)
\pset [NAME [VALUE]] set table output option
(NAME := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|
numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|
unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})
\t [on|off] 行のみを表示するか? (現在: オフ)
\T [文字列] HTML の
※コメント投稿者のブログIDはブログ作成者のみに通知されます