PostgreSQLについて語って2万テーブルをめざしましょう。
関連アプリケーション特有の話題は、以下のスレッドへ。
pgsql-mlのヲチもここで。
前スレ
[PostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/989375812/
☆関連スレッド
[PHP + PostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/983128806/
[PerlでPostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/999249463/
[MySQL vs PostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/989341364/
PostgreSQL 2テーブル目
1nobodyさん
03/03/11 02:34ID:9JR4latc323_
03/08/04 16:26ID:??? CREATE TABLE account_table ( expire_date TIMESTAMP, name TEXT );
のようなものがあって、
SELECT * FROM account_table WHERE expire_date > now() AND name = 'foobar';
のような問い合わせを頻繁に行なっています。実際にはテーブルも問い合わせ
ももっと複雑です。
ここで、上記SELECT文を、1引数('foobar' 部分)のPL/pgSQLの関数にしてしま
いたいのですが、そういうことは可能でしょうか?
CREATE FUNCTION get_account( TEXT ) RETURNS ??? AS 'BEGIN ???; END' LANGUAGE 'plpgsql' ;
のような概観になるかなとは思うのですが、戻りの型などがわかりません。
EXECUTEを使うのでしょうか? 教えてください。
# Viewのほうが無難でしょうか? プログラム側にwhere句を書き忘れる可能性
# があるのが嫌なんですよね…
のようなものがあって、
SELECT * FROM account_table WHERE expire_date > now() AND name = 'foobar';
のような問い合わせを頻繁に行なっています。実際にはテーブルも問い合わせ
ももっと複雑です。
ここで、上記SELECT文を、1引数('foobar' 部分)のPL/pgSQLの関数にしてしま
いたいのですが、そういうことは可能でしょうか?
CREATE FUNCTION get_account( TEXT ) RETURNS ??? AS 'BEGIN ???; END' LANGUAGE 'plpgsql' ;
のような概観になるかなとは思うのですが、戻りの型などがわかりません。
EXECUTEを使うのでしょうか? 教えてください。
# Viewのほうが無難でしょうか? プログラム側にwhere句を書き忘れる可能性
# があるのが嫌なんですよね…
324nobodyさん
03/08/05 03:24ID:??? CREATE FUNCTION get_account( text ) RETURN SETOF RECORD AS '
[...snip...]
' LANGUAGE 'plpgsql';
[...snip...]
' LANGUAGE 'plpgsql';
325nobodyさん
03/08/05 13:23ID:??? すこしスレ違いかもしれませんが、どちらに質問していいかわからなかったので、
ここで質問させてください。
ある大きな2つのテーブルをJOINしたいのですが、そのままJOINすると
時間が掛かりそうなので、片方を一時テーブルに書き出して、それをJOINしようと
思ったのですが、一時テーブルを作った後、違うページで一時テーブルとJOINしようと
するとテーブルが存在しないと言われてしまいます。
PHPから一時テーブルを作成した場合、その一時テーブルにアクセスできるのは
どのタイミングまでなのでしょうか?
マニュアルにはセッションの終わりまでのようなことが書いてありますが、
PHPのセッションは終了してません。
それとも、一時テーブルを作成しないでもいい方法などありませんでしょうか?
よろしくお願いします。
環境は、PHP 4.2.3 PostgreSQL 7.2.3です。
ここで質問させてください。
ある大きな2つのテーブルをJOINしたいのですが、そのままJOINすると
時間が掛かりそうなので、片方を一時テーブルに書き出して、それをJOINしようと
思ったのですが、一時テーブルを作った後、違うページで一時テーブルとJOINしようと
するとテーブルが存在しないと言われてしまいます。
PHPから一時テーブルを作成した場合、その一時テーブルにアクセスできるのは
どのタイミングまでなのでしょうか?
マニュアルにはセッションの終わりまでのようなことが書いてありますが、
PHPのセッションは終了してません。
それとも、一時テーブルを作成しないでもいい方法などありませんでしょうか?
よろしくお願いします。
環境は、PHP 4.2.3 PostgreSQL 7.2.3です。
326308
03/08/05 13:57ID:??? すいません、自己解決しました。
327nobodyさん
03/08/05 15:59ID:??? >325
pconnect使わなければ、PHPからPostgreSQLへのセッションは
毎回切った張ったされますが。
pconnect使わなければ、PHPからPostgreSQLへのセッションは
毎回切った張ったされますが。
328nobodyさん
03/08/05 16:25ID:??? >>325
一時テーブルをVIEWにするかサブクエリにするのが一般的だけど、
性能上の問題からその一時テーブルの結果を使いまわしたいなら
名前をつけてテーブル作成するしかないかな。
pg_pconnect使ってもApache/PHPの状態によってはDBセッションが同一にならないから、
ページを跨いだ一時テーブルの利用はできない。
一時テーブルをVIEWにするかサブクエリにするのが一般的だけど、
性能上の問題からその一時テーブルの結果を使いまわしたいなら
名前をつけてテーブル作成するしかないかな。
pg_pconnect使ってもApache/PHPの状態によってはDBセッションが同一にならないから、
ページを跨いだ一時テーブルの利用はできない。
329nobodyさん
03/08/05 18:56ID:??? PostgreSQL 7.2 のPL/pgSQLについて教えてください。
CREATE TABLE reg ( d TIMESTAMP );
なるテーブルがあり、d には「現在からn秒後の時刻」をINSERTするようにし
ています。現在はプログラムから
INSERT INTO reg VALUES ( NOW() + INTERVAL ''100 sec'' );
のようにしているのですが、これをPL/pgSQLで書きなおそうとしています。
で、
CREATE FUNCTION f( BIGINT ) RETURNS BOOL AS '
BEGIN
INSERT INTO reg VALUES ( NOW() + INTERVAL ''$3 sec'' );
RETURN TRUE;
END
' LANGUAGE 'plpgsql';
としてみたのですが、$3 が展開されないのか、足し算が行なわれません。
どのように書いたら望む結果になりますでしょうか? 教えてください。
CREATE TABLE reg ( d TIMESTAMP );
なるテーブルがあり、d には「現在からn秒後の時刻」をINSERTするようにし
ています。現在はプログラムから
INSERT INTO reg VALUES ( NOW() + INTERVAL ''100 sec'' );
のようにしているのですが、これをPL/pgSQLで書きなおそうとしています。
で、
CREATE FUNCTION f( BIGINT ) RETURNS BOOL AS '
BEGIN
INSERT INTO reg VALUES ( NOW() + INTERVAL ''$3 sec'' );
RETURN TRUE;
END
' LANGUAGE 'plpgsql';
としてみたのですが、$3 が展開されないのか、足し算が行なわれません。
どのように書いたら望む結果になりますでしょうか? 教えてください。
330325
03/08/05 21:08ID:??? >>327, 328
ありがとうございました。
pconnectを使って、ページをまたいで一時テーブルを使おうとしてたので、
テーブルが残ってるのか残ってないのか、よくわからなくて混乱してました。
pg_connectを使って、なんとか同じページ内で一時テーブルを使って処理してます。
VIEWは、まだ勉強中なので試行錯誤してみます。
ありがとうございました。
pconnectを使って、ページをまたいで一時テーブルを使おうとしてたので、
テーブルが残ってるのか残ってないのか、よくわからなくて混乱してました。
pg_connectを使って、なんとか同じページ内で一時テーブルを使って処理してます。
VIEWは、まだ勉強中なので試行錯誤してみます。
331nobodyさん
03/08/06 04:59ID:7sg7mWSc 教えてください。
DISK障害でテーブル内データのほとんどが消えました。
実体の/usr/local/pgsql/data/base/内は無事のようです。
/base/DB名からなんとかリカバリできないでしょうか?
postgresql6.5.3です。
DISK障害でテーブル内データのほとんどが消えました。
実体の/usr/local/pgsql/data/base/内は無事のようです。
/base/DB名からなんとかリカバリできないでしょうか?
postgresql6.5.3です。
332nobodyさん
03/08/08 10:59ID:??? ZDNetの誤字ひどいな。
『SRA 最新PostGreSQLをベースにした「PoerGres on Linux」「PowerGres Plus」を発表』
http://www.zdnet.co.jp/news/0308/07/nj00_srasql.html
『SRA 最新PostGreSQLをベースにした「PoerGres on Linux」「PowerGres Plus」を発表』
http://www.zdnet.co.jp/news/0308/07/nj00_srasql.html
333nobodyさん
03/08/18 01:33ID:??? age
334nobodyさん
03/08/25 03:03ID:??? perl、DBIでのトランザクションについてなんですが、
今日のレコード数を持ってきて、それを+1した値で、
新たにINSERTするというときは、
↓みたいな感じでOKなのでしょうか?
(他のユーザが登録している場合でも、値のずれが生じないですよね?)
よろしくお願いします。
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
eval {
$val = get_value("SELECT count(*)+1 FROM a WHERE 今日のもの");
$ret = insert_value("INSERT INTO a (foo, ...) values ($val, ...)");
$dbh->commit;
};
if ($@) {
warn "Transaction aborted because $@";
$dbh->rollback; # undo the incomplete changes
}
今日のレコード数を持ってきて、それを+1した値で、
新たにINSERTするというときは、
↓みたいな感じでOKなのでしょうか?
(他のユーザが登録している場合でも、値のずれが生じないですよね?)
よろしくお願いします。
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
eval {
$val = get_value("SELECT count(*)+1 FROM a WHERE 今日のもの");
$ret = insert_value("INSERT INTO a (foo, ...) values ($val, ...)");
$dbh->commit;
};
if ($@) {
warn "Transaction aborted because $@";
$dbh->rollback; # undo the incomplete changes
}
335nobodyさん
03/08/25 21:37ID:r6wfNhzL 7.4の自動バキュームって使えそう?
フルバキュームまで自動でやってくれるの?
フルバキュームまで自動でやってくれるの?
336nobodyさん
03/08/27 12:18ID:??? 何を勘違いしたか今までポスタージャSQLって読んでたよ…
337nobodyさん
03/09/01 22:46ID:??? 私信に近い雑談をMLに流すな〜!
338nobodyさん
03/09/01 22:57ID:???339nobodyさん
03/09/01 23:02ID:??? cygwinインストール中に落ちてしまって、インストールできないのですが
どうすれば。。あっここで聞くことじゃないですか。。そうですか。。
どうすれば。。あっここで聞くことじゃないですか。。そうですか。。
340nobodyさん
03/09/01 23:31ID:??? >335
contrib/pg_autovacuum/README.pg_autovacuum より。
vacuum fullに関しては、xid使い切りに関しては考えてるけど、
普段はvacuum止まりということかな。
Vacuum and Analyze:
-------------------
pg_autovacuum performs either a vacuum analyze or just analyze depending
on the quantity and type of table activity (insert, update, or delete):
- If the number of (inserts + updates + deletes) > AnalyzeThreshold, then
only an analyze is performed.
- If the number of (deletes + updates ) > VacuumThreshold, then a
vacuum analyze is performed.
deleteThreshold is equal to:
vacuum_base_value + (vacuum_scaling_factor * "number of tuples in the table")
insertThreshold is equal to:
analyze_base_value + (analyze_scaling_factor * "number of tuples in the table")
The AnalyzeThreshold defaults to half of the VacuumThreshold since it
represents a much less expensive operation (approx 5%-10% of vacuum), and
running it more often should not substantially degrade system performance.
contrib/pg_autovacuum/README.pg_autovacuum より。
vacuum fullに関しては、xid使い切りに関しては考えてるけど、
普段はvacuum止まりということかな。
Vacuum and Analyze:
-------------------
pg_autovacuum performs either a vacuum analyze or just analyze depending
on the quantity and type of table activity (insert, update, or delete):
- If the number of (inserts + updates + deletes) > AnalyzeThreshold, then
only an analyze is performed.
- If the number of (deletes + updates ) > VacuumThreshold, then a
vacuum analyze is performed.
deleteThreshold is equal to:
vacuum_base_value + (vacuum_scaling_factor * "number of tuples in the table")
insertThreshold is equal to:
analyze_base_value + (analyze_scaling_factor * "number of tuples in the table")
The AnalyzeThreshold defaults to half of the VacuumThreshold since it
represents a much less expensive operation (approx 5%-10% of vacuum), and
running it more often should not substantially degrade system performance.
341nobodyさん
03/09/07 02:48ID:yFWWpiPw PostgreSQL 7.2.1使ってるんですけど、
運用中にREINDEXとかDROP INDEX〜CREATE INDEXとかの
INDEXの再生成って行って良いんですかね?
念のため運用を一時的に止めた方が良いんでしょうか?
運用中にREINDEXとかDROP INDEX〜CREATE INDEXとかの
INDEXの再生成って行って良いんですかね?
念のため運用を一時的に止めた方が良いんでしょうか?
342nobodyさん
03/09/07 04:52ID:??? やってもいいっすよ。ロックかかるけど。
343nobodyさん
03/09/16 10:01ID:Wb82WrlA バッチグーage
344nobodyさん
03/09/16 10:29ID:??? MLヲチスレでつか?(藁
345nobodyさん
03/09/16 15:02ID:Wb82WrlA >>344
1をみてくらさい。
1をみてくらさい。
346/
03/09/16 22:32ID:GYSWeRnL おまえら、7.4 は高速化が図られてるようですよ。
【PostgreSQLウォッチ】第1回 PostgreSQLの次期版7.4の性能を検証
http://itpro.nikkeibp.co.jp/members/SI/oss/20030911/1/
【PostgreSQLウォッチ】第1回 PostgreSQLの次期版7.4の性能を検証
http://itpro.nikkeibp.co.jp/members/SI/oss/20030911/1/
347nobodyさん
03/09/17 11:21ID:An2EWdc3 select hoge,hogehoge from table group by hoge;
をしたいのですがどのようにしたら実現できますか?
グループ化してないhogehogeもselectしたいのです
をしたいのですがどのようにしたら実現できますか?
グループ化してないhogehogeもselectしたいのです
348nobodyさん
03/09/17 12:17ID:??? select hoge,hogehoge from table group by hoge,hogehoge;
349nobodyさん
03/09/23 22:55ID:PMiaWnnI350nobodyさん
03/09/24 01:47ID:Mc741Fcx351nobodyさん
03/09/24 05:33ID:namugEPq >>350
「メル友みっけ」か...
「メル友みっけ」か...
352nobodyさん
03/09/24 05:41ID:???353nobodyさん
03/09/24 05:56ID:??? バイナリデータの挿入の仕方がマニュアルに書いてない
気がするんですが、どうやるんでしょう。
create table images (imagname text, img bytea);
このimg列に /tmp/hoge.jpg を挿入したいです。
気がするんですが、どうやるんでしょう。
create table images (imagname text, img bytea);
このimg列に /tmp/hoge.jpg を挿入したいです。
355tes
04/01/15 23:32ID:??? tes
356nobodyさん
04/06/25 15:10ID:??? 適当な文字列が入っているcolumnにたいして、
大文字小文字関係なく、検索文字をマッチさせるにはどうしたらいいの?
select * from foo where text_column ^ lower('BAR') or text_column ^ upper('BAR')
とかだと、「Bar」みたいのはヒットしないんだよなぁ。
大文字小文字関係なく、検索文字をマッチさせるにはどうしたらいいの?
select * from foo where text_column ^ lower('BAR') or text_column ^ upper('BAR')
とかだと、「Bar」みたいのはヒットしないんだよなぁ。
357nobodyさん
04/06/25 15:12ID:??? あげとく
360nobodyさん
04/07/01 16:49ID:??? ■ PostgreSQLのことならここで聞け ■
http://pc5.2ch.net/test/read.cgi/db/1056960249/
http://pc5.2ch.net/test/read.cgi/db/1056960249/
361nobodyさん
04/07/14 02:54ID:IeDlw13K postgres7.3を使用予定ですが、REINDEXの使用方法を教えてください。
REINDEX対象のテーブル名をpg_stat_user_tablesより
取得しながら、REINDEXを全テーブルに順番にかけるシェルを作ろうと思っています。
その際、pgbashを使用し、cronで自動実行を予定しています。
もしソースコードがわかれば教えて下さい。
またみなさんはどんな方法で、行っていますか?
REINDEX対象のテーブル名をpg_stat_user_tablesより
取得しながら、REINDEXを全テーブルに順番にかけるシェルを作ろうと思っています。
その際、pgbashを使用し、cronで自動実行を予定しています。
もしソースコードがわかれば教えて下さい。
またみなさんはどんな方法で、行っていますか?
362nobodyさん
04/07/14 02:55ID:IeDlw13K postgres7.3を使用予定ですが、REINDEXの使用方法を教えてください。
REINDEX対象のテーブル名をpg_stat_user_tablesより
取得しながら、REINDEXを全テーブルに順番にかけるシェルを作ろうと思っています。
その際、pgbashを使用し、cronで自動実行を予定しています。
もしソースコードがわかれば教えて下さい。
またみなさんはどんな方法で、行っていますか?
REINDEX対象のテーブル名をpg_stat_user_tablesより
取得しながら、REINDEXを全テーブルに順番にかけるシェルを作ろうと思っています。
その際、pgbashを使用し、cronで自動実行を予定しています。
もしソースコードがわかれば教えて下さい。
またみなさんはどんな方法で、行っていますか?
363nobodyさん
04/08/26 20:45ID:QkQTY22pネットワークから接続しているユーザのIPを
抜き出してログを取りたいのですが
SQLコマンドで、自分はどこから接続しているかを
確認できる関数ってPostgresにはありませんか?
とにかく、接続しているクライアントのIPさえ分かればOKです。
宜しくお願いします。
364nobodyさん
04/08/26 21:22ID:vvcjm84y 管理人が拳銃発砲!!!
http://bbs2.orange-e.net/?id=binbin
http://bbs2.orange-e.net/?id=binbin
365nobodyさん
04/09/03 11:18ID:dro8VJ79 apache2.0.5とPostgreSQL7.4の環境でmod_auth_pgsqlを使ってBasic認証を
行なっているのですが、認証するたびにpostgresユーザーで下のようなプロセスが
溜まっていきます。
postgres: apache database 127.0.0.1 idle
そして挙げ句の果てに
mod_auth_pgsql database connection error reset failed FATAL:
connection limit exceeded for non-superusers とメッセージが出てサーバーエラー
になってしまいます。多分mod_auth_pgsqlがパスワードのデータベースへ接続した後、
切断してくれないからじゃないかと思うのですが、どこか明示的に設定しなければ
ならない場所があるのでしょうか?
行なっているのですが、認証するたびにpostgresユーザーで下のようなプロセスが
溜まっていきます。
postgres: apache database 127.0.0.1 idle
そして挙げ句の果てに
mod_auth_pgsql database connection error reset failed FATAL:
connection limit exceeded for non-superusers とメッセージが出てサーバーエラー
になってしまいます。多分mod_auth_pgsqlがパスワードのデータベースへ接続した後、
切断してくれないからじゃないかと思うのですが、どこか明示的に設定しなければ
ならない場所があるのでしょうか?
366nobodyさん
04/09/03 12:21ID:???367nobodyさん
04/09/03 13:48ID:dro8VJ79 レスありがとうございます。早速 Auth_PG_connection_reuse off を設定して
みました。(それ以前は、Auth_PG_connection_reuseは何も設定していません。)すると
Invalid command 'Auth_PG_connection_reuse', perhaps mis-spelled or defined
by a module not included in the server configuration
となりサーバーエラーが返ってきました。別の原因は考えられますか?
ちなみにmod_auth_pgsqlは2.0.1、ディストリは fedora core 2です。
みました。(それ以前は、Auth_PG_connection_reuseは何も設定していません。)すると
Invalid command 'Auth_PG_connection_reuse', perhaps mis-spelled or defined
by a module not included in the server configuration
となりサーバーエラーが返ってきました。別の原因は考えられますか?
ちなみにmod_auth_pgsqlは2.0.1、ディストリは fedora core 2です。
368366
04/09/03 19:40ID:???369nobodyさん
04/09/03 21:48ID:??? わざわざ調べて頂いてありがとうございます。バージョン特有の問題なのですね。
当面の間は、max_connectionsを増やして、cronで定期的に service httpd graceful
を走らせてしのごうと思います。お世話になりました。
当面の間は、max_connectionsを増やして、cronで定期的に service httpd graceful
を走らせてしのごうと思います。お世話になりました。
370nobodyさん
04/09/04 17:32ID:??? >>368
fedore core 2 の mod_auth_pgsql-2.0.1-4.1.src.rpm のSPECファイルの
バージョンを書き換えたらそのままmod_auth_pgsql-2.0.2b1.tar.gzから
rpmをbuildできました。早速アップデートしましたところ、当該不具合は
めでたく解消されました。重ねてお礼申し上げます。
fedore core 2 の mod_auth_pgsql-2.0.1-4.1.src.rpm のSPECファイルの
バージョンを書き換えたらそのままmod_auth_pgsql-2.0.2b1.tar.gzから
rpmをbuildできました。早速アップデートしましたところ、当該不具合は
めでたく解消されました。重ねてお礼申し上げます。
371nobodyさん
04/09/09 18:47ID:xemAm0Ui 行き詰まってしまって解決できなくなってしまったので、
質問させて頂きます。
TESTというテーブルの中に、A,Bというカラムがあり、
Aでgroup byしてから、Bをdistinctしたものの
カウントを取りたかったくて、下のようなSQLを組んだのですが、
Bをdistinctできてないものをgroup byした結果が、
出てきてしまいます。
私が意図したSQLはどうすれば実現できるかご教授おねがいします。
SELECT A,count(distinct(B)) FROM TEST group by A;
質問させて頂きます。
TESTというテーブルの中に、A,Bというカラムがあり、
Aでgroup byしてから、Bをdistinctしたものの
カウントを取りたかったくて、下のようなSQLを組んだのですが、
Bをdistinctできてないものをgroup byした結果が、
出てきてしまいます。
私が意図したSQLはどうすれば実現できるかご教授おねがいします。
SELECT A,count(distinct(B)) FROM TEST group by A;
372nobodyさん
04/09/09 19:21ID:??? >>371
質問の意図を取り間違っているかもしれないが。
SELECT a,count(*) FROM text GROUP BY a,b;
以後、DBのみの話ならDB板へ
■ PostgreSQLのことならここで聞け ■
http://pc5.2ch.net/test/read.cgi/db/1091523132/
PostgreSQL & pgsql-jp ML 3テーブル目
http://pc5.2ch.net/test/read.cgi/db/1079771059/
質問の意図を取り間違っているかもしれないが。
SELECT a,count(*) FROM text GROUP BY a,b;
以後、DBのみの話ならDB板へ
■ PostgreSQLのことならここで聞け ■
http://pc5.2ch.net/test/read.cgi/db/1091523132/
PostgreSQL & pgsql-jp ML 3テーブル目
http://pc5.2ch.net/test/read.cgi/db/1079771059/
373371
04/09/09 22:19ID:xemAm0Ui >372
意図したこととは違いましたが、そのSQL見てて、
ふと思いつき、解決できました。ありがとうございます。
意図したこととは違いましたが、そのSQL見てて、
ふと思いつき、解決できました。ありがとうございます。
374nobodyさん
04/09/30 06:39:58ID:??? データが8000件位入ったテーブルtestに
さらに8000件近いレコードを追加したいのですが
insert文をエクセルで8000個作ることまではできたのですが、
これをポスグレに読ませる際、一括でコピペするとパースエラーになってしまいました。
10件位づつこまめにコピペするとエラーは起きないのですが
時間がかかりすぎるのでファイルから読み込ませたいのです。
ググった所"copy"だと扱えるデータがタブ区切り形式らしいのですが
insert文が書かれたファイルを読み込ます事はできるのでしょうか?
PostgreSQL7.2.3です。
さらに8000件近いレコードを追加したいのですが
insert文をエクセルで8000個作ることまではできたのですが、
これをポスグレに読ませる際、一括でコピペするとパースエラーになってしまいました。
10件位づつこまめにコピペするとエラーは起きないのですが
時間がかかりすぎるのでファイルから読み込ませたいのです。
ググった所"copy"だと扱えるデータがタブ区切り形式らしいのですが
insert文が書かれたファイルを読み込ます事はできるのでしょうか?
PostgreSQL7.2.3です。
376374
04/09/30 07:38:51ID:??? >>375
レスありがとうございます。
早速ググりましたが
psql -f filename db名で
http://jpug.postgresql.jp/document/pg721doc/reference/app-psql.html
にありました。
ありがとうございました!
レスありがとうございます。
早速ググりましたが
psql -f filename db名で
http://jpug.postgresql.jp/document/pg721doc/reference/app-psql.html
にありました。
ありがとうございました!
377nobodyさん
04/10/05 15:22:15ID:xTnP4bvw 不安なのでちょっと質問して宜しいでしょうか。
timestamp型のmodify_dateというカラムがあったときに
たとえば、2004年11月4日のデータを取りたいというときは
where to_char(modify_date,'YYYY/MM/DD) = '2004/11/04';
という風にしてるのですが、これよりもっと最適な検索法?というのが
ありましたら教えて貰えますでしょうか。
to_charで一度charに変換してるから速度的にどうかなぁと思ってるのですが…。
timestamp型のmodify_dateというカラムがあったときに
たとえば、2004年11月4日のデータを取りたいというときは
where to_char(modify_date,'YYYY/MM/DD) = '2004/11/04';
という風にしてるのですが、これよりもっと最適な検索法?というのが
ありましたら教えて貰えますでしょうか。
to_charで一度charに変換してるから速度的にどうかなぁと思ってるのですが…。
380378
04/10/05 15:43:11ID:???381377
04/10/05 15:46:28ID:??? >>380
377では速度の最適を求めるような書き込みになってしまいましたが
to_charでYYYY・・・・と変換するのに抵抗を感じてしまって他のやり方が
あればと思って質問したので、十分満足しています。もっと最適なものが
あれば尚いいとは思いますが、378さんのやり方を使っていきたいと思います。
377では速度の最適を求めるような書き込みになってしまいましたが
to_charでYYYY・・・・と変換するのに抵抗を感じてしまって他のやり方が
あればと思って質問したので、十分満足しています。もっと最適なものが
あれば尚いいとは思いますが、378さんのやり方を使っていきたいと思います。
382nobodyさん
04/10/06 11:37:12ID:??? ポストグレスキューエルそろそろ囓ってみようと思うんだけど
こんなボンクラはまずどんな本を読めばいいですか?
教えて下さい ISBNコードのみで( ´,_ゝ`)
こんなボンクラはまずどんな本を読めばいいですか?
教えて下さい ISBNコードのみで( ´,_ゝ`)
383nobodyさん
04/10/06 18:22:48ID:??? 初めてこのDBに挑戦したら
initdb: command not found
でいきなり死亡しました。
http://www.terra-intl.com/unix.html
↑に書いてある通りにやったら
7. のinitdb でだめだったんですが、
このような経験のある人いませんか?
initdb: command not found
でいきなり死亡しました。
http://www.terra-intl.com/unix.html
↑に書いてある通りにやったら
7. のinitdb でだめだったんですが、
このような経験のある人いませんか?
384nobodyさん
04/10/06 20:34:45ID:??? >>383
せめて、使ったCygwinとPostgreSQLのバージョンくらい載せるべし。
このページと同一のバージョンが入手できた訳じゃないよね?
あるいは、PostgreSQL と Cygwin でぐぐって、新しめのページをを探すべし。
せめて、使ったCygwinとPostgreSQLのバージョンくらい載せるべし。
このページと同一のバージョンが入手できた訳じゃないよね?
あるいは、PostgreSQL と Cygwin でぐぐって、新しめのページをを探すべし。
385nobodyさん
04/10/06 21:48:18ID:??? 同じバージョンしか落とせなかったんですが、古いみたいですね。
新しいので朝鮮します。
新しいので朝鮮します。
386nobodyさん
04/10/07 12:14:27ID:??? http://discypus.jp/pukiwiki/pukiwiki.php?Cygwin%2F%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB#content_1_15
今度はこのページ見てやったんですが、「Cygwin-X」なんてできないし、
デスクトップのcygwinを起動しても一瞬黒いウインドウが出るだけで
何も起こりませんでした。
昨日はできたbashもできなくなって余計ひどくなってしまいました。
環境変数は本当にシステム環境変数でいいのでしょうか?
昨日はユーザー環境変数で設定したんですが。
今度はこのページ見てやったんですが、「Cygwin-X」なんてできないし、
デスクトップのcygwinを起動しても一瞬黒いウインドウが出るだけで
何も起こりませんでした。
昨日はできたbashもできなくなって余計ひどくなってしまいました。
環境変数は本当にシステム環境変数でいいのでしょうか?
昨日はユーザー環境変数で設定したんですが。
388nobodyさん
04/10/07 14:22:42ID:??? 特定のレコード(たとえばIDがaaaのレコード)がなければインサート、
あればアップデートという処理をしたいのですが、
selectであるかどうかチェック>insertかupdateに振り分ける
という方法以外に簡潔にやる方法はありますでしょうか?
あればアップデートという処理をしたいのですが、
selectであるかどうかチェック>insertかupdateに振り分ける
という方法以外に簡潔にやる方法はありますでしょうか?
389nobodyさん
04/10/07 23:12:25ID:???390386
04/10/08 01:27:12ID:??? http://allabout.co.jp/career/database/closeup/CU20040813A/
結局ここの通りにやって成功しました。
これからの問題はJavaServletでどう扱うのかってことだけです。
なぜかPHPの解説サイトばっかなんだけれども・・・。
8.0は解説無しじゃ難しいと思ったので、辞めておきました。
結局ここの通りにやって成功しました。
これからの問題はJavaServletでどう扱うのかってことだけです。
なぜかPHPの解説サイトばっかなんだけれども・・・。
8.0は解説無しじゃ難しいと思ったので、辞めておきました。
391nobodyさん
04/10/12 12:56:48ID:V57uzdCO 質問させて下さい
PostgreSQL(7.2.3)を使ったWebサイトを作っているのですが、最新項目の表示のため
日付(date型)でorder byしてますとえらく処理に時間がかかっています。
そういうものなのでしょうか?
日付でソートしたい場合の効率的な方法などがありましたら教えてください
PostgreSQL(7.2.3)を使ったWebサイトを作っているのですが、最新項目の表示のため
日付(date型)でorder byしてますとえらく処理に時間がかかっています。
そういうものなのでしょうか?
日付でソートしたい場合の効率的な方法などがありましたら教えてください
392nobodyさん
04/10/12 13:56:22ID:??? まず、vacuumdb -f dbname やってミソ。
393nobodyさん
04/10/12 13:58:02ID:???395391
04/10/12 20:08:58ID:???396nobodyさん
04/10/25 02:34:54ID:??? .open()
でエラーがたまに出るけど、みんなどうやって処理してます?
自分は2回リトライさせてるだけなんですけど、
「普通はこうやるんだ」みたいな決まりってあるんでしょうか?
でエラーがたまに出るけど、みんなどうやって処理してます?
自分は2回リトライさせてるだけなんですけど、
「普通はこうやるんだ」みたいな決まりってあるんでしょうか?
398nobodyさん
04/10/28 02:30:23ID:??? ポストグレスキューエルを信じて裏切られることはありまつか?
399nobodyさん
04/10/30 09:21:22ID:??? PostgreSQL ベースの某社の製品にならあるけど。
4007.4.5
04/10/30 20:56:47ID:??? Cygwinでselect文発行したら
<8B><64><A2>みたいな文字が白くなって大量に表示された
エディタみたいな画面になっちゃったことってあります?
qキー押さないと復帰できないし、selectの結果もでないし。
あとこれは別の環境でだけど、コマンドだと文字化けしちゃう。
WEB上ではちゃんと出てるのに、コマンドで飛び出すと文字化け。
ちゃんと↓入れて日本語入力もできるのに。
set kanji-code sjis
set convert-meta off
set meta-flag on
set output-meta on
Win2000のドメインに入った状態でセットアップして
そのままだと使えなかったからローカルで使ってるのが
いけないのかなぁ。
<8B><64><A2>みたいな文字が白くなって大量に表示された
エディタみたいな画面になっちゃったことってあります?
qキー押さないと復帰できないし、selectの結果もでないし。
あとこれは別の環境でだけど、コマンドだと文字化けしちゃう。
WEB上ではちゃんと出てるのに、コマンドで飛び出すと文字化け。
ちゃんと↓入れて日本語入力もできるのに。
set kanji-code sjis
set convert-meta off
set meta-flag on
set output-meta on
Win2000のドメインに入った状態でセットアップして
そのままだと使えなかったからローカルで使ってるのが
いけないのかなぁ。
401nobodyさん
04/11/10 17:17:33ID:gbkcKDZ/ PHP4.39とPGSQL7.46で学習してます
トランザクションについて教えてください
BEGIN
SELECT テーブルAのid(SERIAL)のNEXTVALを取得
INSERT テーブルAに上で得られた値をidにいれて挿入
INSERT テーブルBに上で得られたidの値を挿入
COMMIT
以上のような流れがあったとしてテーブルAのidの唯一性は保証されてますか?
要はテーブルAにINSERTしたときのidを取得としてテーブルBにも入れたいんです。
NEXTVALを取ったあとに他のプロセスが参照してデータの整合性がなくなるのが心配です。
トランザクションについて教えてください
BEGIN
SELECT テーブルAのid(SERIAL)のNEXTVALを取得
INSERT テーブルAに上で得られた値をidにいれて挿入
INSERT テーブルBに上で得られたidの値を挿入
COMMIT
以上のような流れがあったとしてテーブルAのidの唯一性は保証されてますか?
要はテーブルAにINSERTしたときのidを取得としてテーブルBにも入れたいんです。
NEXTVALを取ったあとに他のプロセスが参照してデータの整合性がなくなるのが心配です。
402nobodyさん
04/11/10 17:52:12ID:??? シーケンスの nextval で取得される値は
トランザクションとは関係なく
唯一性が保証されるように思う
トランザクションとは関係なく
唯一性が保証されるように思う
403nobodyさん
04/11/17 16:35:31ID:??? (;´Д`)ハァハァ ポストグレスキューエルはマイエスキューエルにまだアドバンテージはあるのかい?
404nobodyさん
04/11/24 18:16:16ID:fGkcMHGT SELECTして出てきた行に1から始まる連番をつけるってことできますか?
データのランキングをだしたいんですが。
データのランキングをだしたいんですが。
405nobodyさん
04/11/24 19:32:44ID:??? PostgreSQL 7.4.6 の環境で質問があります。
データベースtest_db内のテーブルtbl_aのパーミッション
を以下のようになっているのですが、、、
test_db=# \dp tbl_a
Access permissions for database "test_db"
Relation | Access permissions
----------+-------------------------------------
tbl_a | {"=","postgres=arwR","nobody=arwR"}
(1 row)
パーミッション未設定のテーブルを上記の同じ設定にするには、
どのようにすれば、いいでしょうか?
test_db=# \dp tbl_b
Access permissions for database "test_db"
Relation | Access permissions
----------+-------------------------------------
tbl_b |
(1 row)
データベースtest_db内のテーブルtbl_aのパーミッション
を以下のようになっているのですが、、、
test_db=# \dp tbl_a
Access permissions for database "test_db"
Relation | Access permissions
----------+-------------------------------------
tbl_a | {"=","postgres=arwR","nobody=arwR"}
(1 row)
パーミッション未設定のテーブルを上記の同じ設定にするには、
どのようにすれば、いいでしょうか?
test_db=# \dp tbl_b
Access permissions for database "test_db"
Relation | Access permissions
----------+-------------------------------------
tbl_b |
(1 row)
406405
04/11/24 20:46:16ID:??? >> 405 の件は、自己解決しました。
grant select,insert,update,rule on tbl_b to nobody;
以上で実現しました。
板汚し失礼しました。
grant select,insert,update,rule on tbl_b to nobody;
以上で実現しました。
板汚し失礼しました。
408404
04/11/27 22:42:48ID:???409nobodyさん
04/12/03 01:31:36ID:2+kl6sm2 カラム内のデータを置き換えすることはできないものでしょうか。
イメージとしましては、
update table_name set f =~ s/abcde/qwert/g;
こんな感じのようなことをやりたいのですが、説明がどうもうまく
なくて申し訳ありません。
ご教授いただければ幸いです。
宜しくお願いします。
イメージとしましては、
update table_name set f =~ s/abcde/qwert/g;
こんな感じのようなことをやりたいのですが、説明がどうもうまく
なくて申し訳ありません。
ご教授いただければ幸いです。
宜しくお願いします。
410nobodyさん
04/12/03 02:07:28ID:??? お主の望みは正規表現置換かや?
ならば、PL/Perl などを使ってユーザ定義関数を作れ、とのご神託である
ならば、PL/Perl などを使ってユーザ定義関数を作れ、とのご神託である
411nobodyさん
04/12/03 10:44:31ID:2+kl6sm2412nobodyさん
04/12/03 12:23:36ID:??? strpos() と substr() をうまく組み合わせればある程度までは行けるかもしれんが、
g オプションは難しそうだなあ。
お告げに従って PL/Perl で書くと、よくわからんが、こんな感じ?
CREATE FUNCTION chikan(text) RETURNS text AS '
my ($mojiretsu) = @_;
$mojiretsu =~ s/abcde/qwert/g;
return $mojiretsu;
' LANGUAGE plperl;
update table_name set f = chikan(f);
g オプションは難しそうだなあ。
お告げに従って PL/Perl で書くと、よくわからんが、こんな感じ?
CREATE FUNCTION chikan(text) RETURNS text AS '
my ($mojiretsu) = @_;
$mojiretsu =~ s/abcde/qwert/g;
return $mojiretsu;
' LANGUAGE plperl;
update table_name set f = chikan(f);
413nobodyさん
04/12/14 15:59:09ID:2o4fy8y0 >>410、>>412
ERROR: Unrecognized language specified in a CREATE FUNCTION: 'plperl'.
Recognized languages are sql, C, internal, and created procedural languages.
となったので、どうやらPL/Perlが入っていないみたいなので、入れる権限のない
私なりに何か他に方法がないか探してみました。
http://www.nanbu.com/~nanbu/keizi_show1_2.php?category1key=&keizikey=1041937855000000006&PHPSESSID=8087763c1060187e12476afe32e0a60d
これでなんとか凌ぎました。
グローバルオプションこそつけられないものの、置き換えは何とかできるので
助かってます。
ご教授有難うございました。
ERROR: Unrecognized language specified in a CREATE FUNCTION: 'plperl'.
Recognized languages are sql, C, internal, and created procedural languages.
となったので、どうやらPL/Perlが入っていないみたいなので、入れる権限のない
私なりに何か他に方法がないか探してみました。
http://www.nanbu.com/~nanbu/keizi_show1_2.php?category1key=&keizikey=1041937855000000006&PHPSESSID=8087763c1060187e12476afe32e0a60d
これでなんとか凌ぎました。
グローバルオプションこそつけられないものの、置き換えは何とかできるので
助かってます。
ご教授有難うございました。
414nobodyさん
04/12/16 13:06:24ID:qpxocizM foo というテーブルで、hoge fuga hige moe
ちう2つのレコードがあります。
で、hoge fuga higeが3つとも同じレコードについては、まとめて1レコードとみなし。
fooテーブルが何レコードあるか調べたいのですが、
どうゆうSQL文を書いたらよいのでしょうか?
select sum(*) from favorite group by hoge, fuga, hige
とやってもだめでした(そりゃそうだよね。。。)
どなたか教えていただければ幸いです。
ちう2つのレコードがあります。
で、hoge fuga higeが3つとも同じレコードについては、まとめて1レコードとみなし。
fooテーブルが何レコードあるか調べたいのですが、
どうゆうSQL文を書いたらよいのでしょうか?
select sum(*) from favorite group by hoge, fuga, hige
とやってもだめでした(そりゃそうだよね。。。)
どなたか教えていただければ幸いです。
415414
04/12/16 13:07:38ID:??? 訂正:
>foo というテーブルで、hoge fuga hige moe
>ちう2つのレコードがあります。
foo というテーブルで、hoge fuga hige moe
という2つの「フィールド」があります。
すみません
>foo というテーブルで、hoge fuga hige moe
>ちう2つのレコードがあります。
foo というテーブルで、hoge fuga hige moe
という2つの「フィールド」があります。
すみません
416414
04/12/16 21:08:42ID:??? 回答ないようなのでDB板逝ってきます
417nobodyさん
05/01/19 17:22:21ID:??? ゲイツOSに対応した、postgreSQL8
キタ━━━━(゚∀゚)━━━━ッ!!
キタ━━━━(゚∀゚)━━━━ッ!!
418nobodyさん
05/01/21 13:24:22ID:DguRcNyC フィールドが一個だけのテーブルが必要なんですが
こういうことって変ですか?
こういうことって変ですか?
421nobodyさん
05/02/01 16:43:18ID:HYaKzyWg vacuum fullを実行すると2〜3時間ぐらいかかり、
しかもその間、httpdに完全に接続できなくなります。
vacuum fullって、そんなもんなのでしょうか?
vacuumしないと、3日もしないうちに重くなってDB接続エラーでまくります。
3日1回httpd止めて作業となると大変なので軽減させたいのですが、
何か良い方法があれば教えてくださいm(_ _)m
構成は、こんな感じです。
Xeon2.8GHzDUAL
メモリ2GB
HDD120GB
Linux-FedoraCore2
・apache_1.3.33
・postgresql-7.4.5
・php-4.3.9
しかもその間、httpdに完全に接続できなくなります。
vacuum fullって、そんなもんなのでしょうか?
vacuumしないと、3日もしないうちに重くなってDB接続エラーでまくります。
3日1回httpd止めて作業となると大変なので軽減させたいのですが、
何か良い方法があれば教えてくださいm(_ _)m
構成は、こんな感じです。
Xeon2.8GHzDUAL
メモリ2GB
HDD120GB
Linux-FedoraCore2
・apache_1.3.33
・postgresql-7.4.5
・php-4.3.9
レスを投稿する
ニュース
- 【自維】鮭おにぎり198円に絶望、コンビニすら遠い存在に…「生き延びられない」物価高で広がる生活苦★5 [ひぃぃ★]
- 【サッカー】ブラジル戦、NHKは地上波なし 本田圭佑はBSで解説… 悲鳴続出「マジかよ」 地上波はフジテレビが生中継、解説は小野伸二 [冬月記者★]
- 【芸能】田中みな実、実名告白「めっちゃ格好いい」「インスタもフォローした」 W杯日本代表にメロメロも「狙ってないからね?」 [冬月記者★]
- 【サッカー】「世紀の談合マッチになる予感」J組の一戦が話題…ドローで両チーム決勝T進出の“異例事態” [ゴアマガラ★]
- 【サッカー】W杯の「日本VSブラジル」を他で例えると…Xで問いかけ話題「湘北vs山王」「明徳義塾vs大阪桐蔭」「ドトウvsオペラオー」★2 [o(^・-・^)o★]
- 野党が全法案審議に応じない方針、自民ベテラン「先が見通せず打開策がない」 国会緊迫化 [蚤の市★]
- 【高市悲報】今国会の全法案が廃案へ。。。飲みィのヤリィのしてきた結果がこれなのか・・・ [252835186]
- 経団連「年内には訪中して習主席と面会したい😢レアアースもタングステンももう限界😢」 ★2 [904151406]
- ハンドスピナー ← この急速に流行ったと思ったら好きな奴はAHDHの烙印をなぜか押されて急速に消えた哀れな謎の謎物体
- お台場、次々閉館してただの廃墟と化してしまう [709039863]
- 【画像】ロシア金髪メスガキの海水浴Vlog、いいべ [632966346]
- 【悲報】眞子さま、皇族としての気品のカケラも無くなってしまうwwwwwwwwwwwwwwwwwwww [802034645]