#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。~ 微妙に数が異なるけどおおよそでいいのでこれで行こう。 *並び替え時のNULL行の制御 [#xee041b1] ORDER BY id id --- 0 0 0 1 1 1 NULL NULL のようになる場合、 ORDER BY id NULLS FIRST とすると、 id --- NULL NULL 0 0 0 1 1 1 のように表示できます。 最後に表示したい場合は ORDER BY id NULLS LAST *コマンドラインでの「続ける(more)」表示をやめたい [#x1687d0b] 1つのフィールドに大量の文字列が詰め込まれていたりする場合はページ送りがとても面倒。~ 一気に表示されるように切り替えることができます。 => \pset pager off ページ送りにする場合は \pset pager on *PostgreSQLでの複数キーワード検索の方法 [#p03b5f49] http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13115026123