アトム-サイト
[ アトム-サイト ] - 管理人さんのページです。
feed-icon RSS2.0   feed-icon Atom
[ データベース ] 一覧へ
postgres
管理人さんのブログ 2009-07-15 12:02:57

postgresユーザになる
root@ubuntu-atsu01:~# id
uid=0(root) gid=0(root) groups=0(root)
root@ubuntu-atsu01:~# su - postgres

psqlでデータベースをいじれます
postgres@ubuntu-atsu01:~$ psql -l
List of databases
Name | Owner | Encoding
------------+----------+------

DBユーザ登録
postgres@ubuntu-atsu01:~$ createuser -P test
ここでパスワード設定。
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y
CREATE ROLE

確認は
$ psql
# select usename from pg_user;

DBユーザ削除
postgres@ubuntu-atsu01:~$ dropuser test
DROP ROLE

DB生成
createdb -O www-data(オーナー指定) -E UTF-8 dbname

DB削除
dropdb dbname

↓こんなエラーが出てdropdb出来ない時は、
dropdb: database removal failed: ERROR: database "dbname" is being accessed by other users
データベースへの接続が残っている為。
再起動
# /etc/init.d/postgres restart
すれば、dropdb出来る様になります。

DBに入る
psql DB名

テーブル一覧表示
# select * from pg_tables;
# \d ←コレが楽

ユーザ毎のアクセス制御
/var/lib/pgsql/data/pg_hba.conf の一番下。
host all all 127.0.0.1/32 password
環境に応じて変えてやって、リスタート。
# /etc/init.d/postgresql restart
※上の行から順番に判定するので、同じ様な制御はキチンと無効化する事(コメントアウトする)。

DBのバックアップと取り込み
pg_dump dbname > backupdata
で、取り込む所に移動して
psql -d dbname < backupdata
オーナーを合わせて入れてあげる。また、テーブルのオーナーの違いでアクセスできない時はGRANTでアクセス許可してあげる。

SERIAL値と取り出し
テーブルを作ります
# CREATE TABLE test_tbl ( id SERIAL PRIMARY KEY, name text);
NOTICE: CREATE TABLE will create implicit sequence "test_tbl_id_seq" for serial column "test_tbl.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_tbl_pkey" for table "test_tbl"
CREATE TABLE
出来たテーブルを見る
# \d
List of relations
Schema | Name | Type | Owner
--------+--------------------------+----------+------
public | test_tbl | table | postgres
public | test_tbl_id_seq | sequence | postgres
(15 rows)
SERIAL値はINSERT等でセッションが確立された後のでないと見れない様になっている(自分がINSERTしたSERIAL値を得る事が出来る)
# SELECT CURRVAL('test_tbl_id_seq');
ERROR: currval of sequence "test_tbl_id_seq" is not yet defined in this session
実際にデータを入れてみる
# INSERT INTO test_tbl(name) VALUES('atsu');
INSERT 0 1
# INSERT INTO test_tbl(name) VALUES('hoge');
INSERT 0 1
# SELECT * FROM test_tbl;
id | name
----+--
1 | atsu
2 | hoge
(2 rows)
入れたデータのSERIAL値を得る事ができます
# SELECT CURRVAL('test_tbl_id_seq');
currval
-----
2
(1 row)
SERIAL値を自分で設定するには
# SELECT SETVAL('test_tbl_id_seq', 10);
setval
----
10
(1 row)

TIMESTAMP
小数点の付かないタイムスタンプ
CREATE TABLE test_tbl (
 ……
 ……
 write_time TIMESTAMP(0)
);

1日前表示
postgres=# select now() + INTERVAL '-1 day';
?column?
---------------------------
2008-02-20 20:14:47.475886+09
(1 row)

高速化
EXPLAINを付けてSELECTする。
-> Seq Scan on... と書かれていたら全検索。
Index Scan using... と書かれていたらインデックスが使われている。
cost=0.00..xxx.xx部分が検索時間(少ない程良い)。
インデックスを作るのは
CREATE INDEX index_name ON table_name (fieldname1, fieldname2);



※ 『データベース』に繋がる関連物を 視覚的に探しだせるサイトを作ってみました(よろしければクリックしてみてくださいね)。

 コメント記入者:

 リンク元:
(2) : http://www.google.com/search?q=postgres+dump+%E5%8F%96%E3%82%8A%E8%BE%BC%E3%81%BF&rls=p,com.microsoft:ja:IE-SearchBox&ie=UTF-8&oe=UTF-8&sourceid=ie7&rlz=1I7DAJP
(1) : http://www.google.co.jp/search?source=ig&hl=ja&rlz=&q=postgres+%E3%83%AA%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88&btnG=Google+%E6%A4%9C%E7%B4%A2&meta=lr%3D&aq=f&oq=
(1) : http://www.google.co.jp/search?hl=ja&q=ubuntu+postgresql+create+role+drop+role&btnG=%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
(1) : http://www.google.co.jp/search?source=ig&hl=ja&rlz=1G1GGLQ_JAJP278&=&q=database+removal+failed%3A+ERROR%3A&btnG=Google+%E6%A4%9C%E7%B4%A2&meta=lr%3D&aq=f&oq=
(1) : http://www.google.co.jp/search?hl=ja&q=postgresql+dropdb+accessed+by+other+users&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja&aq=f&oq=
(1) : http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla%3Aja%3Aofficial&hs=Pcb&q=currval+of+sequence+is+not+yet+defined+in+this+session+s2jdbc&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja&aq=f&oq=
(1) : http://www.google.co.jp/search?hl=ja&client=firefox&rls=org.mozilla%3Aja%3Aofficial&hs=9gM&q=postgresql+sequence+is+not+yet+defined+in+this+session+currval&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja&aq=f&oq=
(1) : http://www.google.co.jp/search?hl=ja&q=postgres+now()+%E4%B8%80%E6%97%A5%E5%89%8D&sourceid=navclient-ff&rlz=1B2GGGL_jaJP206JP206&ie=UTF-8
(1) : http://www.google.co.jp/search?hl=ja&source=hp&q=currval+of+sequence+is+not+yet+defined+in+this+session&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
(1) : http://search.yahoo.co.jp/search?p=seq%22+is+not+yet+defined+in+this+session&tid=top_ga1_sa&ei=UTF-8&pstart=1&fr=top_ga1_sa&b=1

 ページ閲覧者数:30人

[ データベース ] 一覧へ


<< 2009年11月
2009年11月22日(日)
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

 最近の書き込み

パソコンショップ
  <2009-11-21 06:56:01>
ネットコマンド
  <2009-11-20 10:30:10>
Linuxコマンド
  <2009-11-18 11:44:56>
家のパソコン
  <2009-11-17 17:25:58>
ROUND 1 (豊橋)
  <2009-11-17 07:49:50>
nPOPs
  <2009-11-15 07:40:23>
打ちっぱなし
  <2009-11-13 15:21:35>
胃カメラ
  <2009-11-13 15:10:33>
T-01A
  <2009-11-13 10:02:41>
画面キャプチャ
  <2009-11-13 07:01:33>


 カテゴリー

おでかけ(67)
サッカー(41)
季節(32)
食べ物(30)
旅(28)
家(28)
映画(26)
地元(25)
DIY(24)
家族(21)
学校(20)
モバイル(20)
生物(20)
健康(19)
Web(17)
風景(17)
ドラマ(17)
通勤(16)
ブログ(14)
Winアプリ(14)
家電(13)
ゲーム(12)
足技(12)
ブラウザ(11)
本(11)
ゴルフ(10)
自転車(10)
Linux(10)
php(9)
javascript(9)
PCハード(9)
ネットワーク(8)
飲み物(8)
会社(8)
感銘映像(6)
税金(5)
空想(5)
VMware(4)
Ruby(4)
データベース(3)
 ・ mysql
 ・ postgres
 ・ SQL
perl(1)