- 追加された行はこの色です。
- 削除された行はこの色です。
#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