トップページphp
1001コメント345KB

PostgreSQL

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2001/05/09(水) 11:36ID:GHX.oCXo
PostgreSQLについて語りましょう。
関連アプリケーション特有の話題は、以下のスレッドへ。

☆関連スレッド
[PHP + PostgreSQL]
http://corn.2ch.net/test/read.cgi?bbs=php&key=983128806
[PHP以外+PostgreSQL]
http://corn.2ch.net/test/read.cgi?bbs=php&key=988929199
[MySQL vs PostgreSQL]
http://corn.2ch.net/test/read.cgi?bbs=php&key=989341364
0607582 ◆6C3D/kPs 02/09/28 03:04ID:uO9XS1Su
582だった(爆死
変な名前入れちまったな...(汗

朝生見つつ、酔いが冷めました。
0608nobodyさん02/09/28 03:19ID:9vPkzBLd
PostgreSQLでサブクエリ(副問い合わせ)実装したのっていつからなのでしょう?

6.5.3(でぶあんイモのサーバなのだ(T_T))のPostgreSQLで

SELECT COUNT(*) FROM (SELECT DISTINCT TEL FROM ORDER WHERE TEL = '03%') AS TEMP_TABLE

ってやったら怒られた出巣。

0609nobodyさん02/09/28 03:22ID:???
TEL like '03%' では???
0610hmk02/09/28 03:40ID:???
>>603に藁われちった。

>>608
こんなことできなかったっけ?
SELECT COUNT(DISTINCT tel) FROM order WHERE tel LIKE '03%';
0611hmk02/09/28 03:44ID:???
>>606
わかりまそん。Postgresの不具合でないのかぇ?
061260802/09/28 04:28ID:9vPkzBLd
>>609
失礼、そのとおり(^^;

>>610
いや、アレはあくまで例題なので(^^; メインは「副問い合わせが使えるか」側なんですよ。

 ……でもこっちも×でした(^^;
0613hmk02/09/28 04:31ID:???
>>612
"order" という表名がいけないのでは。。。
061460802/09/28 05:18ID:9vPkzBLd
>>613

にゃ、確かにコレでは×ですね。でもこれもやっぱり例題なのでし(^^;
こっちのテスト環境では「users_pre」なのでしね
0615nobodyさん02/09/28 05:33ID:2Rxq6k1c
http://yahooo.s2.x-beat.com/
0616nobodyさん02/09/28 17:12ID:???
>>608
例がひどすぎることが指摘されてるんだから、もう一回書き直せば?
あと、そのSQLを発行したらなんと言って怒られたかぐらいも書けば?
更に何故マニュアルを見ないの?
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/release-6-3.html
あんまし、まじめに調べる気にもならんかったから的外れかも知れんが
副SELECTの実装はこの辺りかららしい。
061760802/09/29 03:08ID:6ztDeH/m
>>616
では改めて

SELECT COUNT(*) FROM (SELECT DISTINCT TEL FROM users_pre WHERE TEL = '03%') AS TEMP_TABLE



parser: parse error at or near "select"

となります
061860802/09/29 03:08ID:6ztDeH/m
>>617
失敗。

SELECT COUNT(*) FROM (SELECT DISTINCT TEL FROM users_pre WHERE TEL Like '03%') AS TEMP_TABLE

でした
061960802/09/29 03:32ID:6ztDeH/m
……うを、6.5.3って、OUTER JOIN実装されてねーのか(T_T)

ロジック(今回はJSPだが)で実装するしかないのかよー
0620nobodyさん02/09/29 16:32ID:???
"WHERE this_date < SYSDATE-7" (Oracle)
ってのは、Postgreだとどうなるんですか??
Postgreも日付を加減したら日数になるの?
062162002/09/29 16:45ID:???
違うかな、intervalをto_dateか何かで日付にして、
"WHERE this_date < to_date('7日前')"ですかね?
7日前ってのは"'now'-7"??
0622nobodyさん02/09/29 16:45ID:???
>>620
Oracleは知らんので同じ意味かどうか分からんけど
"WHERE this_date < 'current'::timestamp - '7 day'::interval"辺りか?

062362002/09/29 17:03ID:???
>>622 thanx!!
"::型"で型宣言するのね。

"SELECT this_date-1" で1日前の日付、
"SELECT current_date-this_date" で日数差も出ますた。
"SELECT now()-this_date" だとintervalになるのね……。
0624nobodyさん02/09/30 02:51ID:NEg9lBdJ
つかぬ事をお尋ねしたいのですが、jdbc.postgres.org にある

7.3dev (built 2002-09-24) のJDBC3ドライバは

7.1でも動作する下位互換性はあるのでしょうか?
それとも7.3用に作られているのでしょうか?
(Development Driverだから動作が不安定とかいうことではなく
動作対象として7.1も考慮されているかということ)
062562402/09/30 02:52ID:???
jdbc.postgres.org → jdbc.postgresql.org
0626v02/09/30 04:59ID:XCndXDeC
http://yahooo.s2.x-beat.com/
0627nobodyさん02/09/30 21:37ID:Lh/LQWZc
ServletからPostgreのデータを操作できるようにしたいんですが、
ServletがJDBCドライバを読み込んでくれません。
#コンパイルしたあと、サーバーにおいてアクセスすると
#ClassNotFoundExceptionが出る。
JDBCドライバは
http://jdbc.postgresql.org/download.html
から落としたpgjdbc2.jarで、これにCLASSPATHを指定しています。
どうすれば使えるようになるのでしょうか。。。

環境は
Postgres7.1.1
JDK1.4.1
アプリケーションサーバーにTomcat4.1.10を使ってます。
0628nobodyさん02/10/01 00:33ID:wXqFyCgz
>>619
> ロジック(今回はJSPだが)で実装するしかないのかよー

 UNION 使えばごまかせる。
0629nobodyさん02/10/01 01:55ID:???
>>627
WEB-INF/lib か、JDK下のjre/lib/ext に置いちゃえば?
063060802/10/01 01:57ID:B9rqrzrN
>>628

えっ? どうやって? 教えてプリーズ!
副問い合わせが使えるなら思いついたコトあるんだけど、これもダメだとなるとちょっと思いつかない。

……以下に今まで恵まれた環境にいたかってコトだよな、これ(T_T)
063160802/10/01 01:59ID:B9rqrzrN
もひとつ問題発生

ExecSubPlan: null value returned by expression subselect

ってどんなエラー? ……「expression subselect」って、だから副問い合わせなんかつかってねーっつーの!(T_T)
必要ならSQLあげますが、まずはどんな(場合に出る)エラーか教えてくださいまし(T_T)
0632582 ◆6C3D/kPs 02/10/01 03:36ID:???
grepでpostgresのソース検索スレ。
0633582 ◆6C3D/kPs 02/10/01 03:41ID:???
http://archives.postgresql.org/pgsql-bugs/2000-06/msg00046.php

つーか、google検索すりゃトップに出るやん。
063460802/10/01 03:50ID:B9rqrzrN
>>633
英語ページは回避してました(^^; で、自動翻訳……

バグか? バグなのかっ?(T_T) どーすりゃ回避できるんだっ?!
……勘弁してくれ……(涙)
063562702/10/01 07:11ID:rRTf7Iur
>>629
アドバイスありがとう。
やってみるす。
0636nobodyさん02/10/01 11:41ID:EVd52m24
>>630
 テーブルA、テーブルBがあるとして、inner join だとAとB、両方にある行しか出ない。(SQL1)
 そこでサブクエリーをつかって、Aにあって、かつBにないものを抽出。(SQL2)
 SQL1 union SQL2 とすると、outer join したのと同じ結果になる。
 詳しくは数年前のメーリング・リストの記事を参照。同じネタ出ていたよ。
063760802/10/01 18:25ID:B9rqrzrN
>>636
サブクエリー使えない出巣(T_T) >>618がエラーになる出巣。

撃つ出し脳(;´∀`)
0638hmk02/10/01 18:34ID:???
>>637
エラーメセジと問題の具体例を出してみよ。
063962702/10/01 21:23ID:???
見れたっす。文字化けしてたけど。。。
てことはやっぱCLASSPATHがおかしかったのか。。。
CLASSPATHは入念にチェックしてたのにな。
064060802/10/02 01:19ID:9gZ3jv4a
>>638

>>617&>>618のとおり出巣。このとおりに打ってこのエラーが出る出巣。もちろん、

SELECT DISTINCT TEL FROM users_pre WHERE TEL Like '03%'

でエラーが出ないことは確認してある出巣(T_T)
0641hmk02/10/02 01:42ID:???
>>640
SELECT COUNT(*) FROM users_pre u WHERE tel like '03%' AND NOT EXISTS(SELECT * FROM users_pre WHERE tel=u.tel AND oid<>u.oid);
こういうのもたぶん駄目なんだろうな。。。
上手い問い合わせはないもんでしょうか。
0642hmk02/10/02 03:46ID:???
>>640
SELECT ... FROM (SELECT ...); のように、
FROM句にSELECTが来る問い合わせをインラインビューと呼び、
これはすべてのRDBMSで実装されてはいないらしい。
ちゅーことは、>>641のような相関副問い合わせなら通りそうなんだけど。。。
儂はPostgres持ってないんで試せまそん。誰かやってよ。
0643nobodyさん02/10/02 05:35ID:TiRO3wLQ
INSERT INTO TEMP(ボソボソ
0644nobodyさん02/10/02 18:05ID:???
timestamp型で登録されてるレコードに対して
”年月日”だけをひっかけて件数を取得したいのですが
何か手はありますでしょうか?

LIKEでやってみたのですがひっかかりません。
0645nobodyさん02/10/02 18:12ID:???
>>644
LIKEって、時間型は文字じゃないんだから…

date型にCASTすれ。
064664402/10/02 18:27ID:???
>>645
select * from テーブル名 where date(timestamp型)= '2002-10-02';
上記でできました(泣)
ありがとうございます。
0647nobodyさん02/10/05 12:51ID:2T2tvBuJ
Postgre初心者です。
通貨型のmoneyを使ってみたのですが、
サンプルデータとして'123456789'と入れると
($5,392,229.88)
に化けました…。
なぜなんでしょう。
どうやって入力すればいいのですか?
教えてください。
0648nobodyさん02/10/06 11:14ID:???
>>647
桁あふれ。

http://ml.postgresql.jp/pgsql-jp-old/pgsql-jp/1997Nov/msg00092.html
0649nobodyさん02/10/06 20:35ID:YiJCOGQB
SELECT分でDate型のカラムの集計時間を得たいのですが、
SELECT SUM(カラム) as total FROM テーブル;
みたいなことできないでしょうか?

0650nobodyさん02/10/07 00:09ID:???
>>649
Date型を集計???意味がわからんのですけど・・・。

1日とか2日とかの日数を表すならInterval
065164902/10/07 23:51ID:AXMG8FcF
ああ、そうですね。ごめんなさい。
0652nobodyさん02/10/08 11:18ID:???
ポストグレスキュウエルヲインストールシタガ

SELECT COUNT(*) FROM meinDaten;
count
-------
0
(1 row)

アツカウベキデータガナイノデイミガナイ、鬱だ氏脳。
0653名無しさん@Emacs02/10/08 13:59ID:???
そんなことより

> mein

ちゅースペルが気になる。
0654nobodyさん02/10/08 14:38ID:???
>>653
その後のデータも含めて見てみれ。
meinDaten
つまり、mainDataのドイチュ語版だろ。
Ich bin mein daten !
0655nobodyさん02/10/08 20:41ID:???
>>653,654
'myData' eq 'meinDaten' dayo... pupupu...
065664702/10/08 21:23ID:???
>>648
なるほど。そういうことでしたか。
よくわかりました。
ありがとうございました。
0657nobodyさん02/10/09 07:55ID:???
だってドイチュ語知らないもーん。
0658nobodyさん02/10/09 10:49ID:???
質問です。

int型のフィールドに対して
''をインサートを実行すると自動で0が入ってしまうのですけど
''のままインサートできないものでしょうか?
0659nobodyさん02/10/09 10:50ID:oibqlApD
redhat8で7.1.3がmake出来ません。何か対策はないでしょうか?
0660nobodyさん02/10/09 13:10ID:???
>>658 ''じゃなくてNULLならどうよ
0661652&65502/10/09 13:56ID:???
>>658
You can't insert NULL STRING into int-type field.
It's でーべーの基本やね.
As >>660 said, using NULL value instead is recommended.
066265902/10/09 17:01ID:???
>>659
事故レス。
gccのバージョンが絡んでくるんで無理ぽ。
0663nobodyさん02/10/10 02:39ID:dij3CJ32
最近見てなかったけど、
こんな中途半パンパなネタでもないスレタイトルが
でてきてしまうほどここは低下してしまったのか。
なんて。思ったり。
CGI VS PHP!
ワラェネェ。
0664nobodyさん02/10/10 02:39ID:dij3CJ32
つーか誤爆。すまん↑
0665anonymous02/10/15 15:35ID:6HlJOXo9
Solaris2.6 on sparc processor で

#postmaster -D /usr/local/pgsql/data
とすると、下記のエラーが出ます
できるだけ、OSのパラメータはいじらずにこれを回避させたい
のですが、どうすればいいでしょうか?
IpcMemoryCreate: shmget(key=5432001, size=1441792, 03600) failed: Invalid argume
nt
This error usually means that PostgreSQL's request for a shared memory
segment exceeded your kernel's SHMMAX parameter. You can either
reduce the request size or reconfigure the kernel with larger SHMMAX.
To reduce the request size (currently 1441792 bytes), reduce
PostgreSQL's shared_buffers parameter (currently 64) and/or
its max_connections parameter (currently 32).

If the request size is already small, it's possible that it is less than
your kernel's SHMMIN parameter, in which case raising the request size or
reconfiguring SHMMIN is called for.

The PostgreSQL Administrator's Guide contains more information about
shared memory configuration.
0666nobodyさん02/10/15 19:04ID:0ZpQ3Voy
>>665
 解決方法、メッセージに出ているよね?

reduce PostgreSQL's shared_buffers parameter (currently 64) and/or its max_connections parameter (currently 32).
0667login:Penguin02/10/15 19:38ID:???
>>665
I'll change parameter of buffer.
thank you.
0668anonymous02/10/16 08:44ID:o+8CpqDw
>>666

具体的にどのファイルのパラメータを変更すればいいのでしょうか?
0669nobodyさん02/10/16 12:40ID:???
ちっとも自分で調べた雰囲気が無いのが笑えるな。
0670super02/10/16 15:19ID:o+8CpqDw
cd /usr/local/pgsql/data

というコマンドをスクリプトを作って実行したいのですが
上を書いたファイルを作成して$chmod +x start
$./start
してもchange directory されません。

どうすればいいでしょうか?
0671nobodyさん02/10/16 15:24ID:???
#!/bin/sh
0672super02/10/16 15:49ID:o+8CpqDw
#!/bin/sh
cd /usr/local/pgsql/data
という内容の start  というファイルを作成しましたが

$./start

しても実行されません。
0673nobodyさん02/10/16 16:47ID:???
で何か表示されるの?
0674AAA02/10/16 18:46ID:ZpB3Pmml
>>673
何も表示されません。
うまく動作したと思って
PWD してみるとディレクトリは
かわっていません

SOLARIS 2.6 ON SPARC です
0675nobodyさん02/10/17 00:12ID:???
内部コマンド
0676nobodyさん02/10/17 03:10ID:ychsNVf3
 メモリが3GなFreeBSD4.5でpostgresに、テーブル数が150コ。
こんな環境でjoinしまくりでselectを発行すると当然遅い・・・。
 なので、カーネルをいじってソートメモリ増やしたりするが、
shm,semあたりがいまいちわからず・・・・。
 Postgres用にメモリを最大限割り当てて、高速化を図りたいです。
 shm,semあたりをご教授ください。なんとか高速化したい!!!

環境:
FreeBSD4.5
Postgres7.1.2
0677nobodyさん02/10/17 10:07ID:???
DBD::Pg 使ってます。

ある任意のテーブルの何行目を削除 みたいなことはできるのでしょうか?
(何行目というのを数字で与えるようにしたい)
0678nobodyさん02/10/17 10:12ID:???
つーか、initdbが終わった$PGDATAディレクトリは
postgresユーザのみrwxのはずなんだが。

ユーザー権限とかそんなんでないの? cd できないってのは。
0679super02/10/17 12:54ID:eVO0i+an
/usr/local/pgsql/data

でlsすると

$ ls -al
合計 54
drwx------ 6 postgres other 512 10月 16日 15:51 .
drwxr-xr-x 9 root other 512 10月 15日 15:12 ..
-rw------- 1 postgres staff 4 10月 15日 15:13 PG_VERSION
-rw------- 1 root other 3848 10月 16日 12:30 backupposgtresql.conf
drwx------ 4 postgres staff 512 10月 15日 15:13 base
drwx------ 2 postgres staff 512 10月 15日 15:13 global
drwx------ 2 postgres staff 512 10月 15日 15:13 pg_clog
-rw------- 1 postgres staff 10006 10月 15日 15:13 pg_hba.conf
-rw------- 1 postgres staff 1250 10月 15日 15:13 pg_ident.conf
drwx------ 2 postgres staff 512 10月 15日 15:13 pg_xlog
-rw------- 1 postgres staff 3848 10月 16日 15:06 postgresql.conf
$
0680nobodyさん02/10/17 16:51ID:???
テーブルを作成するときに、フィールドのサイズ(長さ)を指定するのはなぜですか。
0681nobodyさん02/10/17 18:46ID:???
>>680
入れ物を作る側(PostgreSQL)からすれば、そうしてもらったほうが楽だからです。
0682nobodyさん02/10/18 10:15ID:???
>679
その「start」ってスクリプトはpostgresユーザー権限で実行してる?
もしそうなら、スクリプトの中身見せてみそ。
0683nobodyさん02/10/18 11:12ID:kP3mYN+N
SQL_ASCIIのDBをpg_dumpしたものをEUC_JPなDBに
復元したいのですが、セル内改行?の部分でエラーメッセージが
出たり出なかったりします。

psql:/tmp/hoge.dat:1111: invalid command \015
psql:/tmp/hoge.dat:1112: ERROR: parser: parse error at or near "fuga"

と「\015\012」がある行の次の行でエラーがでます。
pg_dumpのオプションは-c -d -x

「\015\012」があるすべての部分でエラーがでるわけでは
ないのです。

回避方法をご存知の方がいらっしゃいましたら、ご教授願います。
0684nobodyさん02/10/22 22:50ID:JaiAlXbK
すいません。
ウィンドウズにインストールしたいのですが、
参考になるページありましたら教えてください。
0685nobodyさん02/10/22 22:55ID:???
>>684
この辺、どうよ?
http://www.mattsuan.jp/~intrasv/pstgresql_a_inst.html
http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html
とりあえず、手持ちのURLから。
0686nobodyさん02/10/22 22:58ID:JaiAlXbK
>>685
ありがとうございます。
調べてはみたのですが調べろといわれるかと思いました。
みてみます。
0687nobodyさん02/10/22 23:05ID:???
>>686
他にもいい情報あったら、俺にもシェアきぼん(w
0688nobodyさん02/10/22 23:08ID:JaiAlXbK
>>687
すいません。いまさっき興味をもったばかりなのでほとんど分かりません。
とりあえずリナックスにしようかと思いました。
0689nobodyさん02/10/22 23:16ID:???
>>688
そか。Win32用もPostgreSQLは、まだいまひとつこなれてないからな。
MySQLも平行して評価してみたら?
0690Disca ◆4ENAfP6znE 02/10/23 10:34ID:beWxZTYk
単純質問でスマソ。
テーブルのすべての rows の数を取得したいのですが、
どうすれば良いのでしょうか
0691nobodyさん02/10/23 12:20ID:???
>>690
SELECT count(*) FROM テーブル名;
0692nobodyさん02/10/25 18:22ID:jq5EHClS
テーブル foo から、ランダムに1つの行を取得したいのですが、
どうすればいいのでしょう?

また、同じくランダムにn個の行を取得するにはどうすればいいのでしょう?
0693nobodyさん02/10/25 20:21ID:???
rand(), offset, limit
069469202/10/25 22:20ID:???
>>693
ども。
調べました。

SELECT * FROM foo ORDER BY RAND() LIMIT n OFFSET m;
(ランダムにm番目から、n件を取得。(OFFSET は0からはじまる))

ですね。どもども。
0695nobodyさん02/10/26 11:59ID:Rc/ro/Gq
PHP+PostgreSQLで、ユーザーが検索した結果を自由にソートするのに、
いい方法はありませんでしょうか?
検索した結果を一時テーブルにして、それをorder byすればいいかと思ったけど、
うまくいきませんでした。
0696sage02/10/26 12:03ID:???
http://www.430.jp/rak2/user/9_9_9_9/
0697gn355my002/10/26 15:47ID:???
>>695
XML
0698nobodyさん02/10/26 17:00ID:???
>>695
「ユーザが自由にソート」の意味がわからない。。。
0699教えてくん02/10/27 22:04ID:???
TIMESTAMP型のデータにCURRENT_TIMESTAMPをINSERTしたら、
ERROR: Attribute 'hogehoge' is of type 'timestamp' but expression is of type 'int4' You will need to rewrite or cast the expression
と怒られますた!
なんでですのん?
070069902/10/27 22:09ID:???
ちなみに、'now'でも同じエラーが出ますた。
070169902/10/27 22:13ID:???
すまそ!
テーブル仕様変更したのに、sql走らせてなかった。
勘違いですた。
0702nobodyさん02/10/28 20:00ID:EWIjH/IC
PostgreSQL7.1.3をLedHatで稼働させています。
社内からtelnet経由で直接アクセスしてきたクライアントのIPアドレスや時間帯を
記録したのですが良い方法はありませんか。(できれば、どのDBやテーブルに対してアクセスをしてきたかも知りたい)
postgres.conf(だったか?)に、log_connections falseという
項目があって、それをtrueにしたのですが、どこにもログが記録されている気配は
ありませんでした。。。何かやり方が悪いのでしょうか?
0703nobodyさん02/10/28 20:10ID:???
>>702
LedHatって聞いたことねぇな(w

IPなんかすぐ抜けるだろ?
それをDBに格納すりゃいいだけじゃねーか。
ポスグレ単体であれこれやろうとしてんのか?モシカシティ
070470202/10/28 20:31ID:???
>>703
えーと、かなりどうでもいい細かい突っ込み感謝です(w
(RedHatLinux7.2ですだ)

>>ポスグレ単体であれこれやろうとしてんのか?モシカシティ

あれこれやるつもりはないですが、DBにアクセスしてきたログは、
DB側でとりたかったので。。いけませんかね?

ちなみに、初心者君ですいませんが、
>>IPなんかすぐ抜けるだろ?
のやりかたを教えてください(や、ほんとにすいません、わからんのです。ネタじゃなくて。
0705便乗君02/10/28 20:41ID:???
たとえばMS-Accessからodbc接続してきたクライアントのIPを取るのもポスグレ単体じゃできないのカナ-?
0706nobodyさん02/10/28 20:56ID:???
>>702 >>705
シーラカンス本持っていないなら買いましょう。
禿しく時間の節約になるYO!

ただ、>>702 の望みをかなえるのはちょっと難
しいかも。どのクライアントも、結局ローカル
から接続することになるから。telnet のログと
postgres のログを突き合わせるか、telnet を
やめて、直に postgres へ接続させるか…
■ このスレッドは過去ログ倉庫に格納されています