Linux Memo/PostgreSQL
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
*postgres7.0のインストール [#oa5f0388]
RIGHT:更新日&lastmod();
更新日 2006/01/20
**Vine6xでDBの作成 [#ja6b9246]
デフォルトがUTF-8になっているのでEUCでDBを作成するには
$ createdb -E EUC-JP --locale=ja_JP.EUC_JP --template=t...
とする。DB名 dcmap
**postgres7.0のインストール [#g52b5ba7]
postgres7.0のインストール
$ cd /usr/local/src
$ tar zxvf postgresql-7.0.tar.gz
$ su
# chown -R postgres.postgres postgresql-7.0
# mkdir /usr/local/pgsql
# chown -R postgres.postgres /usr/local/pgsql
# exit
$ su postgres
$ cd postgresql-7.0/src
$ ./configure --enable-multibyte=EUC_JP --enable-syslog
($ ./configure --enable-multibyte=EUC_JP --enable-syslog...
$ make
$ make install
(perlモジュールをインストールするときはsuしてインストー...
$ su
# make install
# chown -R postgres.postgres /usr/local/pgsql
)
$ cd ../doc
$ make install
''.bash_profileに''
# PostgreQSL
export PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
を追加。
$ source .bash_profile
$ initdb
$ cd /usr/local/pgsql/data
$ chmod 600 pg_hba.conf
pg_hba.confで
#host all 0.0.0.0 0.0.0.0 trust
の#(コメントアウトを外す)
--------------------------------------
***logを取るために [#y15ebb7d]
postgresql.confで
#接続元のクライアントのIPアドレス、ポートがログに出力さ...
#log_connections = false
log_connections = true
#log_timestamp = false
log_timestamp = true
に変更する。
8.0からは
-log_truncate_on_rotation='stderr'
-redirect_stderr = on
-log_directoryにログを出力するディレクトリを指定する
デフォルトではベースディレクトリ(/var/lib/pgsql/data)に...
-log_filenameに出力するログファイルのファイル名形式を設定
デフォルトではpostgresql-%Y-%m-%d_%H%M%S.log
-log_truncate_on_rotation = on
offのままだとログファイルが重複したとき追記となる。
例えばlog_truncate_on_rotation = onにしてlog_filename = ...
-log_rotation_age:単位分 log_rotation_size:単位KB
両方設定するとどちらかを満たした時点でファイルが切り替わ...
どちらも0(ゼロ)を設定すると無効となる
これらのlogの動作について (--enable-syslog)~
/usr/local/pgsql/data/postgresql.confの以下のパラメータを...
$ /usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql...
postgresql.log 2>&1
で起動時
/usr/local/pgsql/data/postgresql.confに~
log_connections = true
/var/log/postgresql.logに
LOG: database system was interrupted at 2005-03-24 10:1...
LOG: checkpoint record is at 0/9FC0F0
LOG: redo record is at 0/9FC0F0; undo record is at 0/0;...
LOG: next transaction ID: 677; next OID: 25335
LOG: database system was not properly shut down; automa...
LOG: record with zero length at 0/9FC130
LOG: redo is not required
LOG: database system is ready
/usr/local/pgsql/data/postgresql.confに~
log_timestamp = trueを追加
2005-03-24 10:39:29 LOG: could not create IPv6 socket: ...
2005-03-24 10:39:29 LOG: database system was interrupte...
2005-03-24 10:39:29 LOG: checkpoint record is at 0/9FC170
2005-03-24 10:39:29 LOG: redo record is at 0/9FC170; un...
2005-03-24 10:39:29 LOG: next transaction ID: 677; next...
2005-03-24 10:39:29 LOG: database system was not proper...
recovery in progress
2005-03-24 10:39:29 LOG: record with zero length at 0/9...
2005-03-24 10:39:29 LOG: redo is not required
2005-03-24 10:39:31 LOG: database system is ready
のようなlogがのこる
syslogに残すには~
syslog = 2とすると
/var/log/messagesに
Mar 24 10:40:24 vvine26r3 postgres[8729]: [1-1] LOG: co...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [2-1] LOG: da...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [3-1] LOG: ch...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [4-1] LOG: re...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [5-1] LOG: ne...
next OID: 25335
Mar 24 10:40:24 vvine26r3 postgres[8733]: [6-1] LOG: da...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [7-1] LOG: re...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [8-1] LOG: re...
Mar 24 10:40:26 vvine26r3 postgres[8733]: [9-1] LOG: da...
^^^^^^^^(A)
以下の接続logが取れないことがあるようだ?~
Mar 24 10:41:06 vvine26r3 postgres[8736]: [2-1] LOG: co...
Mar 24 10:41:06 vvine26r3 postgres[8736]: [3-1] LOG: co...
syslog_ident = 'postgres'を設定するとsyslog(A)の部分が変...
なので変更の設定の必要はない。
/var/log/messages以外に全てのlogを取るには
syslog_facility = 'LOCAL0'を設定し
/etc/syslog.confを
*.info;mail.none;authpriv.none;cron.none;local0.none ...
^^^^^^^^^^^追加...
# PostgreSQL LOG
local0.* ...
のように変更。
とりあえずはsyslogを利用しなくてもいいかな・・・?
また、Logファイルははじめに以下のように作成しておく。
# touch /var/log/postgresql.log
# chown postgres.postgres /var/log/postgresql.log
# chmod o-r /var/log/postgresql.log
$ pg_ctl -w start
または、
$ /usr/local/pgsql/bin/postmaster -i -D /usr/local/pg...
このとき/tmp/.sPGSQL.5432 があると起動しないので消しておく
$ IpcMemoryCreate: memKey=155356405 , size=24588 ,
permission=448IpcMemoryCreate: shmget(..., create, .....
Invalid argument
等のエラーのときはshardメモリの不足なためなので
$ postmastter -N 10 -S -i
で起動してみる
''■ Apache DSO版の作成例(可能ならこれが一番ラク)''
先にDSO機能付きのApacheを作っておく。
% tar xvzf apache_1.3.12.tar.gz
% cd apache-1.3.12
% ./configure --enable-shared=max
% make
% make install
''ここからがPHP3''
% cd php-3.0.15-i18n-ja
% ./configure --with-apxs=/usr/local/apache/bin/apxs ...
--enable-mbregex --with-pgsql --enable-track-vars
% make
% make install
DE JE2ISM 2000/05/26
**パスワード認証 [#bdea2766]
pg_hba.conf
host all all 0.0.0.0 0.0.0....
と設定する「password」だとクリアテキストだが「md5」だと暗...
ユーザ(test)登録には
jtest=# CREATE USER test with PASSWORD '***';
ユーザ(test)削除には
jtest=# DROP USER test;
パスワード変更は
jtest=# ALTER USER test PASSWORD '***';
登録確認は
jtest=# select * from pg_shadow;
usename | usesysid | usecreatedb | usesuper | usecatup...
----------+----------+-------------+----------+---------...
postgres | 1 | t | t | t ...
test | 100 | f | f | f ...
(2 rows)
''ユーザにテーブルアクセスの権限を与える''
$ psql データベース名
●特定のユーザに参照のみのアクセス権を設定/解除
psql# grant select on 表名 to ユーザ名;
psql# revoke select on 表名 from ユーザ名;
●すべてのユーザにすべてのアクセス権を設定/解除
psql# grant all on 表名 to public;
psql# revoke all on 表名 from public;
クライアントからのアクセスは
psql -h (host名) (DB名) (ユーザ名)
$ psql -h 10.99.99.106 jtest test
Password:*****
Welcome to psql 7.3.3, the PostgreSQL interactive termin...
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
jtest=>
ユーザ名とDB名が同じときは
$ psql -h (host名) -U (ユーザ名orDB名)
で接続できる
$ psql -h (host名) (DB名)
だとユーザ名は今loginしているloginユーザ名になる。
ただし、pg_hba.confを
host all all 127.0.0.1 255.25...
と設定してもlocalから接続するときはパスワードを聞かれない...
''PHPからは''
$passwd ="*****";
$user ="user1";
$conn = @pg_Connect("host=127.0.0.1 port=5432 password=$...
でアクセスする。
**参考 [#d0e2d7c8]
''テーブル表示''~
qrp=# \d
List of relations
Schema | Name | Type | Owner
--------+--------------+-------+----------~
public | t_data | table | postgres
public | t_kamokucode | table | postgres
public | t_keyword | table | postgres
(3 rows)~
~
''フィールドの型表示''~
qrp=# \d t_data
Table "public.t_data"
Column | Type | Modifiers
------------+-----------------------------+-----------~
write_time | timestamp without time zone |
gkno | character varying(10) |
keyword | character varying(10) |
data | character varying(16) |
etc | character varying(256) |
動作しているデータベースにどのようなデータベースを定義し...
を定義したか表示させるには
$ psql postgres
データベース:
select * from pg_database;
datname | datdba | encoding | datistemplate | datallo...
-----------+--------+----------+---------------+--------...
jtest | 1 | 0 | f | t ...
template1 | 1 | 0 | t | t ...
template0 | 1 | 0 | t | f ...
(3 rows)
ユーザ:
select * from pg_user;
usename | usesysid | usecreatedb | usesuper | usecatup...
----------+----------+-------------+----------+---------...
postgres | 1 | t | t | t ...
(1 row)
&color(red){PostgreSQLではテーブル名、フィールド名に日本...
**SQL文法 [#hc4a6fa3]
[[''PostgreSQL簡単使用方法'':http://mz80.ism21.net/hp/lin...
・2つのキーでソート
select * from table where sel1=23 and sel2 ='01' order b...
第一のキーがid1,第二のキーがid2。この場合第一キーは降順。
・数値の大小でselect
select * from table where nedan >= 400;
・テーブル名の変更
ALTER TABLE 変更前テーブル名 RENAME TO 変更後テーブル名;
・フィールド名の変更
LTER TABLE テーブル名 RENAME COLUMN 変更前フィールド名 T...
・テーブル結合による抽出
# select * from t_montitle order by abs(t_montitle.id), ...
id | mondai_title | tantou | ...
-----+--------------------------------------+---------+-...
1 | 情報社会一般 | okada | ...
2 | 情報活用モラル | okada | ...
# select * from t_kamoku;
id | tantou | kamoku_name
----+---------+-----------------------
1 | okada | ビジコン
3 | okada2 | 初級シスアド
上の2つのテーブルを結合してt_montitleのkamoku_idに一致し...
PostgreSQL7.1以降は以下の2つどちらでもOK
(新しい表現)
#select t_montitle.*,t_kamoku.kamoku_name from t_montitl...
(古い表現:7.0以前はこちら)
#select t_montitle.*,t_kamoku.kamoku_name from t_montitl...
id | mondai_title | tantou | ...
-----+--------------------------------------+---------+-...
1 | 情報社会一般 | okada | ...
2 | 情報活用モラル | okada | ...
''一時テーブルの作成''~
新しいテーブルをセッションが接続されている間だけ作られ、...
CREATE TEMPORARY TABLE [一時テーブル名] as ([条件]);
CREATE TEMPORARY TABLE t_tmp as (select t_swlchk.id, t_s...
t_index.location from t_swlchk ,t_index where t_swlchk.k...
t_swlchk.lflag='1' and t_swlchk.subitem!='Version' and \
t_swlchk.subitem!='ProductID');
その後は「select count(*),subitem,location from t_tmp whe...
''データの集計''~
テーブルの中からsubitemをlocationが情報処理教育センターに...
# select count(*),subitem,location from t_tmp where loca...
count | subitem | ...
-------+--------------------------------------------+---...
1 | ATOK 2005 | 情...
1 | JUSTSYSTEMアプリケーションの追加と削除 | 情...
1 | Microsoft Office Professional Edition 2003 | 情...
1 | Microsoft Office Professional Plus 2007 | 情...
1 | ウイルスバスター2007 | 情...
1 | ウイルスバスター2008 | 情...
3 | 秀丸エディタ | 情...
(7 行)
''SELECTでレコード指定''
上位3レコードを選択
select * from t_kamoku LIMIT 3 OFFSET 0;
3レコード目から4レコード取得
select * from t_kamoku LIMIT 4 OFFSET 2;
***PostgreSQLのDataBaseのバックアップ [#h83276d9]
Postgresqlでのデータベースのバックアップの取り方
''・バックアップ''
pg_dump -v (データベース名) > (バックアップファイ...
Ex) pg_dump -v yoyaku > /home/postgres/backup/yoy...
''・リストア''
psql -e (データベース名) < (バックアップファイル名)
Ex) psql -e yoyaku < /home/postgres/backup/yoyaku...
~ DE JE2ISM 2000/12
***Serial型データの使い方 [#kf8501bd]
データ型をserialにするとデータをインサートするごと番号を...
''テーブルを作成するときは''
create table t_seiseki1
(
ID serial, <---ここ
kamoku_ID int4,
等で作成できる。
''テーブル作成時''
$ psql ismHTML < t_seiseki1.create
NOTICE: CREATE TABLE will create implicit sequence "t_s...
CREATE TABLE
というメッセージが出て目的のテーブル以外にserialを管理する~
t_seiseki1_id_seq~
というテーブルも自動に作成される。~
''テーブル削除については(postgresql-7.4.1)''
ismHTML=# drop table t_seiseki1;
で、t_seiseki1_id_seq共に削除される。
(バージョンによっては drop sequence t_seiseki1_id_seq;と...
また、phpでアクセスするには,このt_seiseki1_id_seqにも
ismHTML=# grant all on t_seiseki1_id_seq to www;
でアクセスできるようにする。
CSVファイルとしてインポートしたりしたときはシリアル管理に...
ismHTML=# select setval('t_seiseki1_id_seq',max(id)) fro...
setval
--------
8
(1 row)
というコマンドでシリアル管理を実データにあわせる。~
これは空テーブルCSVファイルをインポートしたときも必要。
''新しいデータをインサートするには''
ismHTML=# insert into t_seiseki1(kamoku_id, gkno) values...
のように、シリアルフィールドははずしてフィールド指定でイ...
id(serial)は自動インクリメントしてくれる。入力データの無...
外して挿入できる。
データを削除した場合はそのテーブルの最大値でなく管理テー...
なる。
''次のシーケンス番号''(このコマンドを実行すると番号が1づ...
select nextval('t_test_id_seq');
''現在シーケンス番号''
select currval('t_test_id_seq');
の表示。ただし、currvalはnextvalを一度実行しておく必要が...
テーブルの一部を別テーブルにコピー
t_dataテーブルの一部をt_tmpにコピーする。この場合t_tmpは...
エラーするので事前にdrop table t_tmpをしておく
select * into t_tmp from t_data where no=3;
''シーケンス番号の指定''~
一番目に設定するには次のように指定する。
dcmap=# select setval('t_dcmap_id_seq',1);
setval
--------
1
(1 row)
以下のようになり、last_valueが1になり次のデータに「1」...
dcmap=# select * from t_dcmap_id_seq ;
sequence_name | last_value | increment_by | max_v...
----------------+------------+--------------+-----------...
t_dcmap_id_seq | 1 | 1 | 9223372036...
(1 row)
---------------------------------------------------------...
RIGHT:[[元ページ:http://wwwism.dyndns.org/hp/linux/postgr...
終了行:
*postgres7.0のインストール [#oa5f0388]
RIGHT:更新日&lastmod();
更新日 2006/01/20
**Vine6xでDBの作成 [#ja6b9246]
デフォルトがUTF-8になっているのでEUCでDBを作成するには
$ createdb -E EUC-JP --locale=ja_JP.EUC_JP --template=t...
とする。DB名 dcmap
**postgres7.0のインストール [#g52b5ba7]
postgres7.0のインストール
$ cd /usr/local/src
$ tar zxvf postgresql-7.0.tar.gz
$ su
# chown -R postgres.postgres postgresql-7.0
# mkdir /usr/local/pgsql
# chown -R postgres.postgres /usr/local/pgsql
# exit
$ su postgres
$ cd postgresql-7.0/src
$ ./configure --enable-multibyte=EUC_JP --enable-syslog
($ ./configure --enable-multibyte=EUC_JP --enable-syslog...
$ make
$ make install
(perlモジュールをインストールするときはsuしてインストー...
$ su
# make install
# chown -R postgres.postgres /usr/local/pgsql
)
$ cd ../doc
$ make install
''.bash_profileに''
# PostgreQSL
export PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
を追加。
$ source .bash_profile
$ initdb
$ cd /usr/local/pgsql/data
$ chmod 600 pg_hba.conf
pg_hba.confで
#host all 0.0.0.0 0.0.0.0 trust
の#(コメントアウトを外す)
--------------------------------------
***logを取るために [#y15ebb7d]
postgresql.confで
#接続元のクライアントのIPアドレス、ポートがログに出力さ...
#log_connections = false
log_connections = true
#log_timestamp = false
log_timestamp = true
に変更する。
8.0からは
-log_truncate_on_rotation='stderr'
-redirect_stderr = on
-log_directoryにログを出力するディレクトリを指定する
デフォルトではベースディレクトリ(/var/lib/pgsql/data)に...
-log_filenameに出力するログファイルのファイル名形式を設定
デフォルトではpostgresql-%Y-%m-%d_%H%M%S.log
-log_truncate_on_rotation = on
offのままだとログファイルが重複したとき追記となる。
例えばlog_truncate_on_rotation = onにしてlog_filename = ...
-log_rotation_age:単位分 log_rotation_size:単位KB
両方設定するとどちらかを満たした時点でファイルが切り替わ...
どちらも0(ゼロ)を設定すると無効となる
これらのlogの動作について (--enable-syslog)~
/usr/local/pgsql/data/postgresql.confの以下のパラメータを...
$ /usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql...
postgresql.log 2>&1
で起動時
/usr/local/pgsql/data/postgresql.confに~
log_connections = true
/var/log/postgresql.logに
LOG: database system was interrupted at 2005-03-24 10:1...
LOG: checkpoint record is at 0/9FC0F0
LOG: redo record is at 0/9FC0F0; undo record is at 0/0;...
LOG: next transaction ID: 677; next OID: 25335
LOG: database system was not properly shut down; automa...
LOG: record with zero length at 0/9FC130
LOG: redo is not required
LOG: database system is ready
/usr/local/pgsql/data/postgresql.confに~
log_timestamp = trueを追加
2005-03-24 10:39:29 LOG: could not create IPv6 socket: ...
2005-03-24 10:39:29 LOG: database system was interrupte...
2005-03-24 10:39:29 LOG: checkpoint record is at 0/9FC170
2005-03-24 10:39:29 LOG: redo record is at 0/9FC170; un...
2005-03-24 10:39:29 LOG: next transaction ID: 677; next...
2005-03-24 10:39:29 LOG: database system was not proper...
recovery in progress
2005-03-24 10:39:29 LOG: record with zero length at 0/9...
2005-03-24 10:39:29 LOG: redo is not required
2005-03-24 10:39:31 LOG: database system is ready
のようなlogがのこる
syslogに残すには~
syslog = 2とすると
/var/log/messagesに
Mar 24 10:40:24 vvine26r3 postgres[8729]: [1-1] LOG: co...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [2-1] LOG: da...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [3-1] LOG: ch...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [4-1] LOG: re...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [5-1] LOG: ne...
next OID: 25335
Mar 24 10:40:24 vvine26r3 postgres[8733]: [6-1] LOG: da...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [7-1] LOG: re...
Mar 24 10:40:24 vvine26r3 postgres[8733]: [8-1] LOG: re...
Mar 24 10:40:26 vvine26r3 postgres[8733]: [9-1] LOG: da...
^^^^^^^^(A)
以下の接続logが取れないことがあるようだ?~
Mar 24 10:41:06 vvine26r3 postgres[8736]: [2-1] LOG: co...
Mar 24 10:41:06 vvine26r3 postgres[8736]: [3-1] LOG: co...
syslog_ident = 'postgres'を設定するとsyslog(A)の部分が変...
なので変更の設定の必要はない。
/var/log/messages以外に全てのlogを取るには
syslog_facility = 'LOCAL0'を設定し
/etc/syslog.confを
*.info;mail.none;authpriv.none;cron.none;local0.none ...
^^^^^^^^^^^追加...
# PostgreSQL LOG
local0.* ...
のように変更。
とりあえずはsyslogを利用しなくてもいいかな・・・?
また、Logファイルははじめに以下のように作成しておく。
# touch /var/log/postgresql.log
# chown postgres.postgres /var/log/postgresql.log
# chmod o-r /var/log/postgresql.log
$ pg_ctl -w start
または、
$ /usr/local/pgsql/bin/postmaster -i -D /usr/local/pg...
このとき/tmp/.sPGSQL.5432 があると起動しないので消しておく
$ IpcMemoryCreate: memKey=155356405 , size=24588 ,
permission=448IpcMemoryCreate: shmget(..., create, .....
Invalid argument
等のエラーのときはshardメモリの不足なためなので
$ postmastter -N 10 -S -i
で起動してみる
''■ Apache DSO版の作成例(可能ならこれが一番ラク)''
先にDSO機能付きのApacheを作っておく。
% tar xvzf apache_1.3.12.tar.gz
% cd apache-1.3.12
% ./configure --enable-shared=max
% make
% make install
''ここからがPHP3''
% cd php-3.0.15-i18n-ja
% ./configure --with-apxs=/usr/local/apache/bin/apxs ...
--enable-mbregex --with-pgsql --enable-track-vars
% make
% make install
DE JE2ISM 2000/05/26
**パスワード認証 [#bdea2766]
pg_hba.conf
host all all 0.0.0.0 0.0.0....
と設定する「password」だとクリアテキストだが「md5」だと暗...
ユーザ(test)登録には
jtest=# CREATE USER test with PASSWORD '***';
ユーザ(test)削除には
jtest=# DROP USER test;
パスワード変更は
jtest=# ALTER USER test PASSWORD '***';
登録確認は
jtest=# select * from pg_shadow;
usename | usesysid | usecreatedb | usesuper | usecatup...
----------+----------+-------------+----------+---------...
postgres | 1 | t | t | t ...
test | 100 | f | f | f ...
(2 rows)
''ユーザにテーブルアクセスの権限を与える''
$ psql データベース名
●特定のユーザに参照のみのアクセス権を設定/解除
psql# grant select on 表名 to ユーザ名;
psql# revoke select on 表名 from ユーザ名;
●すべてのユーザにすべてのアクセス権を設定/解除
psql# grant all on 表名 to public;
psql# revoke all on 表名 from public;
クライアントからのアクセスは
psql -h (host名) (DB名) (ユーザ名)
$ psql -h 10.99.99.106 jtest test
Password:*****
Welcome to psql 7.3.3, the PostgreSQL interactive termin...
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
jtest=>
ユーザ名とDB名が同じときは
$ psql -h (host名) -U (ユーザ名orDB名)
で接続できる
$ psql -h (host名) (DB名)
だとユーザ名は今loginしているloginユーザ名になる。
ただし、pg_hba.confを
host all all 127.0.0.1 255.25...
と設定してもlocalから接続するときはパスワードを聞かれない...
''PHPからは''
$passwd ="*****";
$user ="user1";
$conn = @pg_Connect("host=127.0.0.1 port=5432 password=$...
でアクセスする。
**参考 [#d0e2d7c8]
''テーブル表示''~
qrp=# \d
List of relations
Schema | Name | Type | Owner
--------+--------------+-------+----------~
public | t_data | table | postgres
public | t_kamokucode | table | postgres
public | t_keyword | table | postgres
(3 rows)~
~
''フィールドの型表示''~
qrp=# \d t_data
Table "public.t_data"
Column | Type | Modifiers
------------+-----------------------------+-----------~
write_time | timestamp without time zone |
gkno | character varying(10) |
keyword | character varying(10) |
data | character varying(16) |
etc | character varying(256) |
動作しているデータベースにどのようなデータベースを定義し...
を定義したか表示させるには
$ psql postgres
データベース:
select * from pg_database;
datname | datdba | encoding | datistemplate | datallo...
-----------+--------+----------+---------------+--------...
jtest | 1 | 0 | f | t ...
template1 | 1 | 0 | t | t ...
template0 | 1 | 0 | t | f ...
(3 rows)
ユーザ:
select * from pg_user;
usename | usesysid | usecreatedb | usesuper | usecatup...
----------+----------+-------------+----------+---------...
postgres | 1 | t | t | t ...
(1 row)
&color(red){PostgreSQLではテーブル名、フィールド名に日本...
**SQL文法 [#hc4a6fa3]
[[''PostgreSQL簡単使用方法'':http://mz80.ism21.net/hp/lin...
・2つのキーでソート
select * from table where sel1=23 and sel2 ='01' order b...
第一のキーがid1,第二のキーがid2。この場合第一キーは降順。
・数値の大小でselect
select * from table where nedan >= 400;
・テーブル名の変更
ALTER TABLE 変更前テーブル名 RENAME TO 変更後テーブル名;
・フィールド名の変更
LTER TABLE テーブル名 RENAME COLUMN 変更前フィールド名 T...
・テーブル結合による抽出
# select * from t_montitle order by abs(t_montitle.id), ...
id | mondai_title | tantou | ...
-----+--------------------------------------+---------+-...
1 | 情報社会一般 | okada | ...
2 | 情報活用モラル | okada | ...
# select * from t_kamoku;
id | tantou | kamoku_name
----+---------+-----------------------
1 | okada | ビジコン
3 | okada2 | 初級シスアド
上の2つのテーブルを結合してt_montitleのkamoku_idに一致し...
PostgreSQL7.1以降は以下の2つどちらでもOK
(新しい表現)
#select t_montitle.*,t_kamoku.kamoku_name from t_montitl...
(古い表現:7.0以前はこちら)
#select t_montitle.*,t_kamoku.kamoku_name from t_montitl...
id | mondai_title | tantou | ...
-----+--------------------------------------+---------+-...
1 | 情報社会一般 | okada | ...
2 | 情報活用モラル | okada | ...
''一時テーブルの作成''~
新しいテーブルをセッションが接続されている間だけ作られ、...
CREATE TEMPORARY TABLE [一時テーブル名] as ([条件]);
CREATE TEMPORARY TABLE t_tmp as (select t_swlchk.id, t_s...
t_index.location from t_swlchk ,t_index where t_swlchk.k...
t_swlchk.lflag='1' and t_swlchk.subitem!='Version' and \
t_swlchk.subitem!='ProductID');
その後は「select count(*),subitem,location from t_tmp whe...
''データの集計''~
テーブルの中からsubitemをlocationが情報処理教育センターに...
# select count(*),subitem,location from t_tmp where loca...
count | subitem | ...
-------+--------------------------------------------+---...
1 | ATOK 2005 | 情...
1 | JUSTSYSTEMアプリケーションの追加と削除 | 情...
1 | Microsoft Office Professional Edition 2003 | 情...
1 | Microsoft Office Professional Plus 2007 | 情...
1 | ウイルスバスター2007 | 情...
1 | ウイルスバスター2008 | 情...
3 | 秀丸エディタ | 情...
(7 行)
''SELECTでレコード指定''
上位3レコードを選択
select * from t_kamoku LIMIT 3 OFFSET 0;
3レコード目から4レコード取得
select * from t_kamoku LIMIT 4 OFFSET 2;
***PostgreSQLのDataBaseのバックアップ [#h83276d9]
Postgresqlでのデータベースのバックアップの取り方
''・バックアップ''
pg_dump -v (データベース名) > (バックアップファイ...
Ex) pg_dump -v yoyaku > /home/postgres/backup/yoy...
''・リストア''
psql -e (データベース名) < (バックアップファイル名)
Ex) psql -e yoyaku < /home/postgres/backup/yoyaku...
~ DE JE2ISM 2000/12
***Serial型データの使い方 [#kf8501bd]
データ型をserialにするとデータをインサートするごと番号を...
''テーブルを作成するときは''
create table t_seiseki1
(
ID serial, <---ここ
kamoku_ID int4,
等で作成できる。
''テーブル作成時''
$ psql ismHTML < t_seiseki1.create
NOTICE: CREATE TABLE will create implicit sequence "t_s...
CREATE TABLE
というメッセージが出て目的のテーブル以外にserialを管理する~
t_seiseki1_id_seq~
というテーブルも自動に作成される。~
''テーブル削除については(postgresql-7.4.1)''
ismHTML=# drop table t_seiseki1;
で、t_seiseki1_id_seq共に削除される。
(バージョンによっては drop sequence t_seiseki1_id_seq;と...
また、phpでアクセスするには,このt_seiseki1_id_seqにも
ismHTML=# grant all on t_seiseki1_id_seq to www;
でアクセスできるようにする。
CSVファイルとしてインポートしたりしたときはシリアル管理に...
ismHTML=# select setval('t_seiseki1_id_seq',max(id)) fro...
setval
--------
8
(1 row)
というコマンドでシリアル管理を実データにあわせる。~
これは空テーブルCSVファイルをインポートしたときも必要。
''新しいデータをインサートするには''
ismHTML=# insert into t_seiseki1(kamoku_id, gkno) values...
のように、シリアルフィールドははずしてフィールド指定でイ...
id(serial)は自動インクリメントしてくれる。入力データの無...
外して挿入できる。
データを削除した場合はそのテーブルの最大値でなく管理テー...
なる。
''次のシーケンス番号''(このコマンドを実行すると番号が1づ...
select nextval('t_test_id_seq');
''現在シーケンス番号''
select currval('t_test_id_seq');
の表示。ただし、currvalはnextvalを一度実行しておく必要が...
テーブルの一部を別テーブルにコピー
t_dataテーブルの一部をt_tmpにコピーする。この場合t_tmpは...
エラーするので事前にdrop table t_tmpをしておく
select * into t_tmp from t_data where no=3;
''シーケンス番号の指定''~
一番目に設定するには次のように指定する。
dcmap=# select setval('t_dcmap_id_seq',1);
setval
--------
1
(1 row)
以下のようになり、last_valueが1になり次のデータに「1」...
dcmap=# select * from t_dcmap_id_seq ;
sequence_name | last_value | increment_by | max_v...
----------------+------------+--------------+-----------...
t_dcmap_id_seq | 1 | 1 | 9223372036...
(1 row)
---------------------------------------------------------...
RIGHT:[[元ページ:http://wwwism.dyndns.org/hp/linux/postgr...
ページ名: