#contents
**ユーザー一覧の表示 [#i5da61d7]
 psql# select usename from pg_user;

**パスワード設定 [#d6d1dd02]
 =# ALTER USER username PASSWORD 'password';

**CSVデータのデータ入出力 [#k9b46bbe]
入力
 psql# \copy table from ./data.csv

出力
 psql# \copy table to ./data.csv

**テーブル構造を確認 [#da65d3fd]
 psql# \d TableName

**ファイルからテーブル作成 [#vfef243f]
 $ psql -e -f ./maketable.sql

**バックアップと復元 [#f53ed6ad]
***データベースまるごとバックアップ [#gbfd8167]

COPY形式でdump

 $ pg_dump データベース名 > 任意のファイル名

INSERT形式でdump

 $ pg_dump --inserts データベース名 > 任意のファイル名

***データを復元 [#s292006d]
 $ createdb データベース名
 $ psql -e データベース名 < 保存したファイル名
***テーブルをバックアップ [#g1b87744]
 $ pg_dump -t テーブル名 データベース名 > 任意のファイル名
***テーブルデータを復元(テーブルはdropされている必要あり) [#a2cb1105]
 $ psql -e データベース名 < 保存したファイル名
**権限確認 [#e3ce809d]
 => \z

**ユーザーのロールを確認・変更する [#ce8ef738]

 $ psql template1

権限確認

 # \du

DB作成権限を付与

 # ALTER ROLE user WITH CREATEDB;

DB作成権限をはく奪

 # ALTER ROLE user WITH NOCREATEDB;

**psqlコマンドのみでSELECT結果をファイルへ出力 [#c3cd54ad]
 db=> \o output.txt   [出力先をoutput.txtへ変更]
 db=> \a   [桁揃えをやめ]
 db=> \pset fieldsep '\t'   [デリミタをタブに変更]
 db=> select * from table;   [SELECT文発行]
 db=> \o   [出力先を戻す]

**PRIMARY KEYの変更 [#ia977e20]
PRIMARY KEYの削除
 ALTER TABLE table DROP CONSTRAINT table_pkey;

PRIMARY KEYの作成
 ALTER TABLE table ADD CONSTRAINT table_pkey PRIMARY KEY (field1, field2);

**NOT NULL制約の追加と削除 [#k2640b2f]

追加
 ALTER TABLE table ALTER COLUMN column SET NOT NULL;

削除
 ALTER TABLE table ALTER COLUMN column DROP NOT NULL;

**\dコマンド [#of1cc845]
テーブルの確認
 \dt
テーブルとSEQUENCEの確認
 \dts
SCHEMAの確認
 \dn
SCHEMAに関するテーブルとSEQUENCEの確認
 \dts SCHEMA.
ユーザー一覧
 \du
コメントも表示
 \d+

*接続中ユーザーの表示 [#t5b3ae6b]

 =# SELECT * FROM pg_stat_activity;

実行中問い合わせ内容を見るには設定変更が必要

 stats_command_string true

*実行されたSQL文を自動的に記録 [#vdf8b196]

 # vi /usr/local/pgsql/data/postgresql.conf
 log_statement = 'mod'
 # /etc/rc.d/init.d/postgresql reload

-none~
記録しない
-ddl~
CREATE、ALTER、DROPなどのデータ定義文
-mod~
ddl + INSERT、UPDATE、DELETなどデータに変更を加えるもの
-all~
すべて

*シーケンス値の変更 [#p56b5185]
次は101からカウントしたい場合
 SELECT SETVAL('usr_seq', 100);
確認
 SELECT last_value FROM usr_seq;

*特定のテーブルのレコード数を知る [#c4eb6273]

レコード数が少ない場合は、以下で事足りる。

 SELECT count(id) FROM TABLE;

ただし、レコード数が多いと極端に時間がかかるので、以下で代用できそう。

 SELECT n_live_tup FROM pg_stat_user_tables WHERE relname = 'TABLE' and schemaname = 'public';

countでのレコード数 12947413、n_live_tupでのレコード数 12947459。~
微妙に数が異なるけどおおよそでいいのでこれで行こう。

*PostgreSQLでの複数キーワード検索の方法 [#p03b5f49]

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13115026123


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS