PostgreSQL
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。
2001/05/09(水) 11:36ID:GHX.oCXo関連アプリケーション特有の話題は、以下のスレッドへ。
☆関連スレッド
[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
0883nobodyさん
03/02/05 16:40ID:WE3fnQsD「SQL-Serverはダメだ」
米セキュリティ企業大手も、SQL鯖には落第の"F"をつけたらしいじゃん。
0884nobodyさん
03/02/05 17:00ID:???あるいはパッチの副作用が大きくて管理者に敬遠される、という点から見ても
「SQL Serverはダメ」という結論になるわけで。
0885nobodyさん
03/02/05 17:48ID:???管理者といってもDB管理だけの場合もあるし、ネットワーク全体を押さえてる場合もあるわけだが。
やらなくちゃいけない仕事(分野)が多いのも一因かもね。
0886nobodyさん
03/02/05 20:20ID:???0887nobodyさん
03/02/06 11:38ID:???0889nobodyさん
03/02/07 01:27ID:oK4qVqpT> てかDBへ接続できるポートを外部に開いてる時点で、その管理者が終ってる気がするな。
PostgreSQLやOracleのSSLサポートはイントラでのセキュリティー用かな?
0890nobodyさん
03/02/07 06:23ID:???0891nobodyさん
03/02/07 16:55ID:mSK6L1IK0892nobodyさん
03/02/07 17:19ID:mSK6L1IK0893nobodyさん
03/02/07 17:26ID:mSK6L1IK0897nobodyさん
03/02/08 13:29ID:???unicodeを受け取ったサーバがconversionかましてeuc-jpで保存するって話。
0899nobodyさん
03/02/08 21:55ID:WzdldZAx漏れも試した。
PowerGres萎え。
50クライアント制限萎え。
0900nobodyさん
03/02/09 22:03ID:???0901nobodyさん
03/02/10 18:38ID:zGVQOlgyhttp://osb.sra.co.jp/PowerGres/pre_sales.php
特別価格の3万8000円(税別)らしいが、
買う予定の香具師いる?
0902nobodyさん
03/02/10 19:52ID:???0904nobodyさん
03/02/11 14:19ID:???とりだせるように検索条件に指定することって可能なのでしょうか?
0907905
03/02/11 14:39ID:???ash さんのページの URL きぼーん。
ぐぐったら以下のような有様。
http://www.google.com/search?num=50&lr=lang_ja&ie=euc-jp&q=%61%73%68%A4%B5%A4%F3%A4%CE%A5%DA%A1%BC%A5%B8
あ、これか。PostgreSQL・Tips集
http://ash.or.jp/db/pg_tips.htm
質問して解決したらなるべく情報源とか貼ってね。後の人の役にも立つから。
0908nobodyさん
03/02/12 17:00ID:???emailという、カラムで重複を抽出するには?
0909nobodyさん
03/02/12 17:36ID:???SQL辞典買うよろし。オレも欲しい。
0910nobodyさん
03/02/13 00:27ID:???0913nobodyさん
03/02/13 22:43ID:???FROM users
GROUP BY email
HAVING count(*) > 1
email name
-------------------
aaa@bbb.com aaa
aaa@bbb.com bbb
…
こんな感じかな?
0914nobodyさん
03/02/13 22:50ID:???"PowerGresとは"より
「UNIX/Linux で定評のある オープンソースデータベース PostgreSQL が身近になりました。」
値段のお陰で縁遠になっている悪寒。
0915nobodyさん
03/02/14 11:08ID:???それだとnameがグループに入ってないと怒られるのですけど。
実際にuniqid,name,emailとあるのに…。なぜでしょう?
WHERE EXISTS(
SELECT email FROM users Y WHERE Y.uniqid = X.uniqid
GROUP BY email HAVING count(*) > 1
)
0918913
03/02/15 00:02ID:???usersテーブル(uniqid,email,name)
VIPテーブル (uniqid,users_id,name)
だとして、「usersの中で、users.uniqidがVIPのusers_idに含まれている人」
を探す為に
SELECT *
FROM users
WHERE EXISTS(
SELECT *
FROM VIP
WHERE users.uniq_id = VIP.users_table_id
)
って使うもんだと思うんだけど、、
usersテーブルのuniqidと同一のテーブルをEXISTSの中に書く意図は何?
それに、EXISTSの中のSELECT文にGROUP BYって書いたこと無いから
挙動がいまいちつかめません…。
とりあえず、EXISTSの中はリファレンス本の例とかにあるような単純な
使い方が無難かと。。
ちなみにリファレンス本は、技術評論社の「SQLポケットリファレンス」が
使いやすくてオススメ。
2000円位で、技術系書籍として安いし。
Postgres対応ではないからLIMITとかは載ってないけど、大方これで済む。
0919913
03/02/15 00:11ID:???SELECT email, name
FROM users
GROUP BY email
HAVING count(*) > 1
これだめ(w
SELECT email, name
FROM users
GROUP BY email
HAVING count(email) > 1
か
SELECT email, name
FROM users
GROUP BY email, name
HAVING count(*) > 1
のどっちかで動くよ…多分。
#以前仕事でPostgres使ったことあるからついカキコしてしまったけど、
#今は職業プログラマじゃ無いし、自分のLinuxにPostgres入れてないから
#実験もできん(w
#無責任でスマソ
0920913
03/02/15 00:21ID:???SELECT email, name
FROM users
GROUP BY email
HAVING count(name) > 1
こうかも…。
GROUP BY〜HAVING SUM(〜)とかCOUNT(〜)とかは
よく考えないとエラーになりがちなんだけど、
自分が思った以上にSQLに対する感覚が鈍ってる(w
(使う目的ないけど)リハビリ目的でPostgresインスコしようかなぁ…。
つか誰かうまく説明できる人ににバトンタッチしたひ。
0921nobodyさん
03/02/15 02:13ID:S3poV9Xb0922nobodyさん
03/02/15 17:58ID:/trbWmidno SERIAL, -- 自動で連番
name text,
tel text,
fax text
);
INSERT INTO tbl(name) VALUES('tanaka');
たとえば上記のように、SERISALのあるテーブルに
データをINSERTした場合に、noにどの番号が割り当て
られたか、知る方法は無いのでしょうか?
nameは重複する可能性があるのでINSERT後に、
SELECT no FROM tbl WHERE name='tanaka';
とやっても、ダメです。
現在は下記のようにして調べていますが、
いまいち自信がありません。
BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
INSERT INTO tbl(name) VALUES('tanaka');
SELECT max(no) FROM tbl;
COMMIT
0923nobodyさん
03/02/15 18:57ID:GmQVtn+rINSERT と同じトランザクションブロックにあるなら、
currval('シーケンス名'); で割り当てられた値を取得できるよ。
ちなみに、次の値は nextval だったかな。
0925名無しさん@XEmacs
03/02/15 23:12ID:???oid使え。
hoge=# insert into a (b) values ('memo');
INSERT 28675 1
hoge=# select * from a where oid=28675;
a | b
---+------
1 | memo
(1 row)
0926nobodyさん
03/02/15 23:18ID:vyjm8srSINSERT されたレコードを特定するという目的ならこれもいいね。
ただ、割り当てられた OID ってどうやって取得するの? 目視?
0927tantei
03/02/15 23:37ID:???●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
24時間受付 090−8505−3086
URL http://www.h5.dion.ne.jp/~grobal/
メール hentaimtt@k9.dion.ne.jp
グローバル探偵事務局
0929nobodyさん
03/02/17 12:16ID:???CREATE OR REPLACE FUNCTION f(date) RETURNS SETOF record AS '
DECLARE r record;
BEGIN
FOR r IN
SELECT sore,kore FROM t WHERE $1 <= sore and sore < $1+''1month''::interval
LOOP
RETURN NEXT r;
END LOOP;
RETURN;
END;' LANGUAGE 'plpgsql';
結果セットのカラムと型をExcelの中にぐじゃぐじゃ書かなくてはなりません
Selection.QueryTable.Sql = "SELECT * FROM f('2003-2-17') AS q(s date, k numeric);"
実際はもっとカラム数が多いのでタイヘンです。できれば、
Selection.QueryTable.Sql = "SELECT * FROM f('2003-2-17');"
だけで済ませたいのですが、いい方法はあるでしょうか? verは7.3.1です
0930nobodyさん
03/02/18 00:43ID:IIRaGRbN返したい列名を定義したテーブルかビューを作っておいて
RETRUNS SETOF テーブル名 AS
ってしてやりゃ、期待通りの動作をするよ。
PostgreSQLは、テーブルやビューはClass(=型)定義として使える。
それを応用するってこった。
0931nobodyさん
03/02/18 12:06ID:???>返したい列名を定義したテーブルかビューを作っておいて
ビューを作ってうまく行きました。有り難うございます。
CREATE OR REPLACE VIEW v AS
SELECT sore, kore FROM t WHERE false;
CREATE OR REPLACE FUNCTION f(date) RETURNS SETOF v AS '
SELECT sore,kore FROM t WHERE $1 <= sore and sore < $1+''1month''::interval
' LANGUAGE 'sql';
0932
03/02/19 15:56ID:ce+34SG0を取得する方法を教えてください?
0933nobodyさん
03/02/19 16:44ID:???0934nobodyさん
03/02/19 16:45ID:???そもそも更新日時を取りたいという発想自体が間違いだと思うが。
0935nobodyさん
03/02/19 17:38ID:???とりあえずそれ用のフィールドを作って、更新時のトリガーで時間を設定。
重要なテーブルに関してはログと証拠を残すという意味で
そういう手段をほどこしたほうがいいんじゃないかな。
まぁ、物理的にログを残す動作をしておかなければわからないということかな。
0936nobodyさん
03/02/20 13:04ID:???こう言うこと?
create table hoge (i integer, t timestamp default current_timestamp);
hoge=# insert into hoge (i) values (12);
hoge=# select * from hoge;
i | t
----+-------------------------------
12 | 2003-02-20 13:01:45.227974-05
(1 row)
で更新時にtimestamp入れればいいんでないかと?
hoge=# update hoge set i=23, t=current_timestamp where i=12;
UPDATE 1
hoge=# select * from hoge;
i | t
----+-------------------------------
23 | 2003-02-20 13:07:11.440763-05
(1 row)
0937932
03/02/21 15:20ID:???>>934 >>936
やっぱり、テーブルのフィールドにタイムスタンプを設けて
置くしか手は無いんですよね、、、いや、
「あれ?知らない間にデータが変わってる・・・
いついじったんだろ?これ・・・・時間帯がわかれば
誰がやったか想像つくなぁ・・・」
ってことがありまして、、、それで、知りたいなって
思ったんです。今後、こういうことが起きてもいいように、
timestamp型のフィールドを設けて
更新時にはカレントを突っ込むようにします。
ありがとうございました。
0938nobodyさん
03/02/24 00:42ID:???いろいろやってみたんですが、なかなかうまくいきません。
マニュアルで to_char や EXTRACT の部分を見てもそれらしいものが載ってません。
どなたかやってるかたがいましたら教えてください。
0939nobodyさん
03/02/24 00:57ID:???過去の値と現在の時刻をエポックに変換して、
一日の秒数で丸めて、
現在から過去を引いて一日の秒数で割って日数を出す、
かなぁ。
0941nobodyさん
03/02/24 12:35ID:???940のようなやり方、なんかの参考書には書いてあったなあ。
公式ページを書籍化したやつだったかも。
おれもおんなじような事でけっこう悩んだ記憶が。
0942936
03/02/24 14:37ID:???936 の hoge テーブルでやってみました。
hoge=# select i, t, date_trunc('day', now() - t) from hoge;
i | t | date_trunc
----+-------------------------------+------------
23 | 2003-02-20 13:07:11.440763-05 | 4 days
(1 row)
0943940
03/02/24 15:53ID:???date型を足し引きすれば日数が返ってくる。
>>942だと、
select now()::date- t::date from hoge;
で、数値のみが返ってくると思う。
0944nobodyさん
03/03/07 14:11ID:ZFWCWq3ylo_unlinkを使用する箇所でエラーと言われました。
もちろん使用しなければエラーと言われません。
動作的に使用しなくても問題はないように思えます。
同じ症状になった人居ますか?
「環境」
Red Hat Linux 7.2
PostgreSQL7.3.2
php-4.2.3
apache_1.3.27
0946sage
03/03/08 17:37ID:/lGvRuDKよろしくお願いします。
0947nobodyさん
03/03/09 16:41ID:???最後まで客のせいにしてるよ。
0948nobodyさん
03/03/09 18:33ID:???書けば書くほどDQNがばれてんのがわからんのか。
ど素人じゃねぇかよ。ワナビーかっつーの。
0949nobodyさん
03/03/09 18:36ID:???> > グレードを提案したが、却下(T_T)。
> とか、
> > どうせ作り直すなら…と、一応試してみようとは思ってますが、それであれほ
> > ど速くなるとはにわかには信じがたく(むしろ遅くなるような気が…)、もし
> > かしてJDBCなんかを使ってないか?などと疑ってます。
> とか、
> なんだか、語るに落ちた感がありますが。
そんなに恥ずかしい事を言っているつもりはなかったのですが(^^;;;
いや、お恥ずかしい限りです。
> いやこの際、素人なのでしっかり勉強しますって気持ちで取り組むのも大切かと。(^
^;
自分よりスキルの高い人間が身近にいない(というか、諸々のML以外では見た
こともない)というのは、良くないですね。忙しさに甘んじて勉強を怠っては
いかん、ということがよくわかりました。
0950小泉に指導される連中って・・・
03/03/09 18:37ID:???> コアなコードはCで書いて組み込むこともあります。
> PHPは入出力と画面遷移、そしてセッション管理だけに専念してくれれば
> いいのではないでしょうか。という発想。
これはやってます(^^)
うちの若いプログラマは、「SQLは嫌いだー」といってなんでもPHPでやろうと
するので、SQLでできないことをPHPでするように口を酸っぱくしています(^^;
0951nobodyさん
03/03/09 18:44ID:0jalCBaQ営業力があって開発に口出さなきゃいい社長になるんじゃないの?
現実には自分よりできる人間は部下にできないだろうがなー(藁
つーかコイズコムデジタルワークス社員は降臨せよ
0952nobodyさん
03/03/09 18:51ID:???( ´∀`)/<先生!こんなのがありました!
_ / / / \___________
\⊂ノ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/shinagawa/
0953小泉@コイズコムデジタルワークス
03/03/09 20:10ID:???> うにしか見えません。今見直してどうにかできるなら、最初からそういう設計は
> しないでしょう。
他人のせいにはしているつもりはありません。
0954nobodyさん
03/03/09 20:14ID:???あの一連の話をクライアントが見たら。。。
とかは考えないんだろうな。、きっと。
0955nobodyさん
03/03/09 20:43ID:???0956nobodyさん
03/03/10 01:47ID:dDkCRfq2次々と適当な情報流しまくってる。
なんでドキュソはこう誘発するかねぇ。
0957nobodyさん
03/03/10 02:59ID:???何故あんなに盛り上がるのか。何故あんなに怪しい情報が
錯綜するのか。つかみんな"よく知らないですが"って言い過ぎ(w
想像だけであんなにカキコしてどーすんだべ。
0958nobodyさん
03/03/10 03:17ID:???言い切ると粘着されそうだしなぁ。。。明らかに間違ってるのもあったけど。
まあ、あれは設計しなおさないとダメだろう。
小手先修正で自滅していった歴史を披露してたが、学習してないんだろうか(w
実際に担当してるプログラマのことも言ってたけど、同じプログラマとして彼が不憫で仕方ない...
0959nobodyさん
03/03/10 03:26ID:???「詳しくわかりませんが」はいいけど、「よく知らないですが」はどうかと。
推測ならまだいいけど、想像でっていうのはどうかと。
0960nobodyさん
03/03/10 06:22ID:???PostgreSQLがタダだからってDQN技術者が増えると、
PostgreSQLまでDQNだと思われるよ。。
0961nobodyさん
03/03/10 11:08ID:???おしえて下さい。
0963nobodyさん
03/03/10 21:36ID:???最近使い始めたのですが、遅いです。
CSE使用時の表示で応答時間2.6秒
SQL文の書き方やインデックスの使い方がヘタレ、等の
原因の方が大きいかと思いますが、
単純にマシンをパワーアップさせた場合
処理の高速化にどれくらい効果があるんでしょうか?
あほな例えですがPen4やAthlonの最高速、メモリ1Gとかに変えたとして
今より劇的に速くなったりするんでしょうか。
それとも処理の中身を勉強して最適化した方が有効でしょうか?
インデックス使うとその項目の検索で早くなるんだなぁ、程度の知識ですので・・・
0964nobodyさん
03/03/10 22:17ID:???おまえ、ワザとやってるだろ、、、
0965nobodyさん
03/03/10 22:32ID:???何をやって2.6秒かかったのか詳細に書かなきゃ答えようがない
100万レコード取得しようとして2.6秒ならかなり速いと思うが。
0966963
03/03/10 23:48ID:???select あ,い,う,え,お,か,き,く,AA.け,こ,さ,し,AA.す,せ,AA.そ
from AA LEFT JOIN BB on (AA.た = BB.た and AA.ち = BB.ち),CC,DD
whereAA.け=CC.け
and AA.す=DD.す
order by CC.つ,CC.て,CC.と,BB.な,AA.し,DD.す
AAは10000レコード、BB、CC、DDはそれぞれ1000レコードずつくらい。
・・・だめだ、自分で書いててよく判らん。
出直してくるよ。
0969nobodyさん
03/03/11 01:19ID:???いやむしろ自分か。
0971nobodyさん
03/03/11 01:53ID:???最終的に返ってくるレコード数にもよるけど、もっと速くなりそう。
Explainで実行プランを確認してみ。
Seq scanって出てくるところがあったら、indexつけてvacuumかけて
またExplainしてみてindex scanに変わるかどうか調べる。その繰り返し。
遅いからって短絡的にCPUを速くすればなんて言ってると>>949みたくなるぞ
0972nobodyさん
03/03/11 02:00ID:???単純にメモリ足んないんじゃないの?
0973nobodyさん
03/03/11 02:21ID:???0974973
03/03/11 02:36ID:???[PostgreSQL 2テーブル目]
http://pc2.2ch.net/test/read.cgi/php/1047317680/
0975nobodyさん
03/03/12 19:14ID:???http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html
これ使おうと思ったんですが、
create database出来ますか?
initdb.exeで一つしか作れないんですが…
手としてはフォルダコピーして使うとかでしょうか。
0977nobodyさん
03/03/12 20:29ID:???沈みかけのスレなのに
ご回答ありがとうございまつ。
PHPとかの書き方もちょっと違う感じだし、
cygwin+pgにしておきます。
0978nobodyさん
03/03/12 20:45ID:???PHPの書き方は一緒だろ。
俺の場合本鯖はLinuxなんだが、scriptはWinで書いている。
データベース名が違うのでconnect文だけ環境によって
切り替えるようにしておけば、まったく同一のscriptで桶でし。
0979山崎渉
03/03/13 17:04ID:???0980nobodyさん
03/03/13 21:00ID:???悩んでいます。
WHERE ID=1 ORDER BY T_STAMP DESC limit 5 ORDER BY T_STAMP ASC
これで最後から5つのデータを昇順に取得できません。ORDER BY 句は複数使えない
ようで、offset に -5 などとマイナス値を与えてもエラーがでます。
結局わたしのテーブル設計がまずいとは思いますが、どなたか出来るかたレスください。
0981nobodyさん
03/03/13 22:38ID:???かな。
レス数が950を超えています。1000を超えると書き込みができなくなります。