5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

PostgreSQL

1 :名無しさん@お腹いっぱい。:2001/05/09(水) 11:36 ID: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

2 :名無しさん@お腹いっぱい。:2001/05/10(木) 12:18 ID:???
PostgreSQL関連スレ乱立しすぎ。

3 :名無しさん@お腹いっぱい。:2001/05/10(木) 13:15 ID:xUOtbAIE
すいません。せっかくDB版にもなったのに、PostgreSQL単体の
話題を書き込むときに、上の関連スレッドだと、書きづらいので
スレ立てました。

4 :名無しさん@お腹いっぱい。:2001/05/10(木) 13:32 ID:???
1. PostgreSQLのシステムの話題
2. パフォーマンスチューニングの話題
3. コマンドの使い方に関する話題
4. 管理の話題
5. リリース・ニュースの話題
6. 雑談
とかの話題がここに集まれば、と思うのですが。

5 :弐ch編者:2001/05/10(木) 18:22 ID:ch.0E1QI
えとー
perlでDBD::Pgモジュールツカーテ
Postgresいろいろいじてる初心者なんですが

シリアルタイプのデータてゆーのつかってみたいんですが
まぁID番号として振りたいわけなんですが
id_seqっていう名前のシーケンス作っておいて
$conn->do("insert into test values(nextval('id_seq'))");
とやってるんですが実際何番がわりあてられたかってのを取得したいんですが
どうすればいいんでしょう。

6 :弐ch編者:2001/05/10(木) 18:23 ID:ch.0E1QI

あ、
$conn->do("insert into test values(nextval('id_seq'))");
の前には
$conn = DBI->connect("dbi:Pg:dbname=$dbname", "", "");
をやってます(ま、あたりまえか

7 :弐ch編者:2001/05/10(木) 18:24 ID:ch.0E1QI

あ、
$conn->do("insert into test values(nextval('id_seq'))");
の前には
$conn = DBI->connect("dbi:Pg:dbname=$dbname", "", "");
をやってます(ま、あたりまえか

8 :弐ch編者:2001/05/10(木) 18:25 ID:ch.0E1QI

あ、
$conn->do("insert into test values(nextval('id_seq'))");
の前には
$conn = DBI->connect("dbi:Pg:dbname=$dbname", "", "");
をやってます(ま、あたりまえか

9 :名無しさん@お腹いっぱい。:2001/05/10(木) 18:36 ID:???
>>5
同一セッション内であれば、nextval('id_seq')の後ならcurrval('id_seq')で
取得できます。
nextval('id_seq')しなければcurrval()は使えません。

10 :名無しさん@お腹いっぱい。:2001/05/10(木) 20:38 ID:xUOtbAIE
えとー、PostgreSQLって、DBオブジェクトの依存があって、
AがBに依存していると言う場合、Bを再作成しちゃうとAが
動かなくなったりしますよね。

これって、何か解決方法は無いんでしょうか?
Aを作り直す以外に。

今日、これで大ポカをやってしまい、DBオブジェクトの
xrefでも作ろうかと思ってるんですが、ひょっとして
既に存在したりします?

11 :電動ナナシ:2001/05/11(金) 12:22 ID:???
create table hoge;
create view hogeview;
drop table hoge;
create table hoge;
すると、hogeview がダメになるって話だよね。

オブジェクトを作り直すと oid が変わるから、って理由だっけ?
そうだとしたら無理だろうね。

自分は直接コマンドを打たずに、スキーマ生成スクリプトを使うようにしている。
drop view hogeview;
drop table hoge;
create table hoge;
create view hogeview;
という内容のファイルを作って、スキーマを更新するだびに psql -d DB -f hoge.sql
という感じで流し込む。データの移行が必要なら、
drop table hoge;
create table hoge;
のところを
alter table hoge rename hogehoge;
create table hoge;
insert into hoge select ...(新しいスキーマにあわせる)... from hogehoge;
という風にすればいい。

12 :名無しさん@お腹いっぱい。:2001/05/14(月) 19:19 ID:YqqCadMo
むぅ、やはりそうですか。
情報、さんきう。

create table dbobjs (
parent text,
child text
);
というテーブルを作って、
table - view
table - function
function - view
function - function
の依存関係をつっこんで、table Fooを変更したときに何をどの順番で
作り直せば良いのかを出力するモノを作ろうとしたんですが、挫折しました(^^;

13 :名無しさん@お腹いっぱい。:2001/05/14(月) 19:21 ID:???
全部出来ているけど、作成の順番によって動かないものが
存在するってヤですよね。
どうにかならないのかなー?

14 :電動ナナシ:2001/05/15(火) 15:15 ID:???
どうにもならないし、どうにかしたらまずいだろうね。

hoge に依存する View を作った後で

drop table hoge;
create table hoge;

と作り直したとして、この hoge が、たまたま名前が一緒であるだけの
全然違う意味を持つテーブルである可能性は常にあるからね。勝手に
view を有効にしたらそれこそ迷惑じゃないかな。

15 :名無しさん@お腹いっぱい。:2001/05/15(火) 17:06 ID:2pI6By2w
 

16 :1:2001/05/15(火) 18:05 ID:flqm6i8Y
>>14
>どうにもならないし、どうにかしたらまずいだろうね。

でもOracleはそのView定義に問題がなければ、何事も無かったように
検索できるよ。

>勝手にview を有効にしたらそれこそ迷惑じゃないかな。

うーん、迷惑な場合もあれば、迷惑じゃない場合もありますよね。
「カラムの追加」なんかは、既存のDBオブジェクトには関係ない
だろうし。

せめて「依存しているオブジェクトがあります」くらいの警告が
欲しいです。SQL92の’Restrict'が指定できればいいんだけど。

17 :電動ナナシ:2001/05/15(火) 20:27 ID:???
>>17
なるほどね、Oracle は名前にのみ依存しているんだ。
# SP みたいに依存性管理をきちんとやっているのかな?

警告については同意。FKey については警告してくれるのにね。

DROP CASCADE とかサポートしてくれるとかなり違うよね。どうせ無効に
なるなら自動的に消してくれって感じもする。まあ要望があるならここで
愚痴たれずに自分で実装しろって話になるから、そんな実力を持っていない
漏れは黙っているしかないんだけど。

18 :1:2001/05/16(水) 10:11 ID:???
>>17

>なるほどね、Oracle は名前にのみ依存しているんだ。
># SP みたいに依存性管理をきちんとやっているのかな?

んと、SPがなんだかわからないので、はずしてるかもしれないけど、
依存性管理はきちんとやってます。
オブジェクトの状態(Valid or Invalid)をシステムカタログに持っていて、
依存するオブジェクトが削除された場合は、即座にInvalidになります。
だから、Invalidなオブジェクト一覧、なんてのも簡単に検索できます。

また、「オブジェクトのコンパイル」という概念があり、「リコンパイル」
すれば、依存関係をチェックし、問題なければValidになります。

InvalidなViewにアクセスすると、自動的にコンパイルされ、Validになれば
通常どおり検索でき、Invalidならエラーになります。

・・・って感じですね。

>まあ要望があるならここで
>愚痴たれずに自分で実装しろって話になるから、そんな実力を持っていない
>漏れは黙っているしかないんだけど。

それは僕も同様。まあ、いいじゃないですか、愚痴言い合いましょうよ。
MLはそんな雰囲気じゃないし。

# 電動ナナシ氏の一人称が「漏れ」だということを知り、ちょっとショック(w

19 :電動ナナシ:2001/05/16(水) 13:26 ID:???
SP は Stored Procedure/Package の省略形。
あまり一般的でなかったか?すまぬ。

そういえば Schema Manager で Valid/Invalid とかいちいち見ていた記憶が
よみがえってきた。
# 最近 Oracle 触ってないから忘れてるよ・・・。

20 :1:2001/05/16(水) 13:55 ID:???
あ、SPってソレだったんですね。
何かSybaseのアレとかMS SQL Serverのソレが強烈に頭に残ってたので
???状態でした。

そういう意味で言うと、Oracleのパッケージの思想は秀逸ですよね。
PostgreSQLにとっては無いものねだりなんですが。

21 :電動ナナシ:2001/05/16(水) 15:30 ID:???
PL/SQL ってもともと Ada だよね。
Ada の Package/Interface がそのまんま引き継がれた感じだね。

PostgreSQL でも PL/Perl を使って Perl のパッケージ機能?を
使えば似たようなことができるんじゃないかと愚考してみたり。
# Perl はマジで知らん・・・。

22 :1:2001/05/16(水) 16:47 ID:???
ふむふむ、勉強になるなぁ。

僕はRubyな人だから、PL/Perlがあることなんてすっかり忘れてた。
PerlはPerl4までの知識しかないし。

暇が出来たら調べて見よう。

23 :1:2001/05/17(木) 13:16 ID:vuz.jAiQ
石井達夫氏の『改訂第3版 PC UNIXユーザのためのPostgreSQL完全攻略ガイド』
がようやく出版されるようです。
通称『シーラカンス本』というやつですね。

http://www.cbook24.com/bm_detail.asp?sku=01051501

対応バージョンも7.1.1で、うれしい限りです。

24 :1:2001/05/17(木) 13:16 ID:???
>>23
あ、発売日は6/4だそうです。

25 :1:2001/05/17(木) 18:40 ID:???
PL/Perl:
うーん、あの程度のマニュアルじゃ何も分からない。
引数を$_[0], $_[1]などと参照できるのと、タプルをハッシュで受け取る、
ってことしか書いてない。あ、外部ファイルへの書き込みは出来ない
というのもあったけど。

ソースをちらっと眺めたら、トリガーではPL/Perlは使えないような
コメントもあったし、一体PL/Perlって何の意義があるのかわからなかった。

今後発展していくのかな。

26 :名無しさん@お腹いっぱい。:2001/05/25(金) 13:08 ID:Tkv4/1zU
少々お聞きしたいのですが

例えばperlから
$hoge="insert into hoge values('ほげ')";
$result = $conn->exec($hoge);

とした場合、もし追加できないという場合のエラーメッセージなどは
どこで取得するのでしょうか?

27 :名無しさん@お腹いっぱい。:2001/06/14(木) 08:12 ID:N.VaDaWU
PostgreSQL ODBCでAccess2000上にリンクテーブルを新規作成しようとしているのですが・・・


ODBC--呼び出しは失敗しました。
Could not connect to server.
Could not connect to remote socket.(#101) [Microsoft][ODBC Driver Manager]

と言われてしまいます。
どうしたらよいのでしょうか?
#これだけでは情報が足りないのかもしれませんが、
#しかし、どういった情報を提示すれば皆様にお助けいただけるか分からないため、
#それもお教えねがえますでしょうか?

28 :名無しさん@お腹いっぱい。:2001/06/14(木) 08:46 ID:???
>>27

エラーメッセージ読めば分かるだろ。

29 :名無しさん@お腹いっぱい。:2001/06/14(木) 15:07 ID:???
Postgreでtextカラムにでかい文字列入れたらそのテーブルが壊れる(selectも利かなくなる)って
聞いたことないでしょうか?

30 :名無しさん@お腹いっぱい。:2001/06/14(木) 15:08 ID:???
Postgreでtextカラムにでかい文字列入れたらそのテーブルが壊れる(selectも利かなくなる)って
聞いたことないでしょうか?

31 :名無しさん@お腹いっぱい。:2001/06/14(木) 16:00 ID:bZl.pTIs
どれくらいの文字列だ?

32 :29:2001/06/14(木) 16:15 ID:???
二重スマソ。

>>31
破損時にinsertしたのがおおよそ4k。発生しない場合もあります。
何kだから発生するというものではないようです。

33 :名無しさん@お腹いっぱい。:2001/06/14(木) 17:06 ID:bZl.pTIs
ラージオブジェクトを使ってない前提で確か1レコード8kまでは
いけるはずだったと思うよ。
昔掲示板作ったけど内容の部分を4kで規制してるが問題なく動いてる

34 :29:2001/06/14(木) 17:54 ID:???
ある程度正常なデータをinsertしておいてから長いSQL文等でpg_exec()のエラーを
起こすと発生するようです。「ようです」としか書けないヘタレで申し訳ありませんが。

35 :29:2001/06/14(木) 18:02 ID:???
環境。
Apache/1.3.20
PHP Version 3.0.18-i18n-ja-2
PostgreSQL 6.5.3

36 :27:2001/06/14(木) 18:10 ID:ObjdY6qg
Could not connect to remote socket
の原因が分からないもので・・・。
「詳解PostgreSQL入門」の通りにやったはずなのですが・・・

37 :27:2001/06/16(土) 06:00 ID:1YgBviPk
postmaster でiオプション付けるの忘れてました。鬱だしのう

38 :名無しさん@お腹いっぱい。:2001/06/18(月) 00:16 ID:4Y6BFwKU
>>35
そのPostgreのバージョンはvacuumするとデータが壊れちゃう
バージョンだけど、そのせいじゃないの?

vacuumかけると、データが壊れるらしい。。。

39 :名無しさん@お腹いっぱい。:2001/06/19(火) 00:16 ID:???
7.1.2 にすると、無制限になるはず。

40 :名無しさん@お腹いっぱい。:2001/06/20(水) 18:41 ID:CEGcishk
MLで非常に気になる発言が・・・。

[pgsql-jp 21916]
>  主キーの1つを検索する場合にはインデクスの全体がオンメモリに入っていな
> くてもそれほどパフォーマンスが落ちるとは思えません。たとえば1ページに
> 200件のエントリがあるとして、3回アクセスで 200×200×200で8,000,000件の
> データを網羅できますから、データ本体へのアクセスを含めてせいぜい4回のディ
> スクアクセスで済むはずです。200件というのは大雑把に言っただけで根拠があ
> る数字ではありませんが、仕組みを理解すれば30万件を過ぎたら急にパフォーマ
> ンスが落ちるということが起こりにくいと推測できます。ただしこれはB-Treeが
> バランスよく構成されている場合の話です。

マジすか、これ?
俺の想像していたのと全然違う・・・。

41 :名無しさん@お腹いっぱい。:2001/06/20(水) 18:49 ID:628tfmwg
>>40
どう想像してたの

42 :夜勤 ★:2001/06/20(水) 18:54 ID:???
ちょっとテスト

43 :名無しさん@お腹いっぱい。:2001/06/21(木) 10:46 ID:oxRjCmRE
>>41
2^22 < 8,000,000 < 2^23ですよね。
だから、800万件のインデックスアクセスは、最大23回のアクセスが必要。
平均は・・・うーん、解らない。12回、じゃないよね。

ただし、同じブロック内にn回目、n+1回目、・・・がある場合もあるからディスク
アクセスの回数はそれなりに減るけど、「せいぜい4回で」というのはどうも
納得できません。

44 :名無しさん@お腹いっぱい。:2001/06/22(金) 11:27 ID:WswC8UUc
B-Treeはbinary treeでは ないよ。ノード数がもっと多い。
アルゴリズム辞典でも調べるべし。

45 :名無しさん@お腹いっぱい。:2001/06/22(金) 12:03 ID:4sT6WJJU
B-Treeについて、勘違いしてました。昨日からいろいろと調べてみました。

でも、さらに疑問が。
> 1ページに200件のエントリがあるとして
これは一体どういう意味なんでしょう?N=100ということ?

また、「せいぜい4回のディスクアクセス」というのは、「木の高さはせいぜい4である」
ということですよね?
何故これが言えるのでしょう?

46 :名無しさん@お腹いっぱい。:2001/06/25(月) 17:09 ID:ejiw8dks
そこから先は実装にもよるし、ソースを読んで納得してもらうしか。

47 :rissen-truchi:2001/07/13(金) 03:47 ID:IdnCE2mY
どこかしこで初心者質問していて非常に恐縮なのですが教えて下さい。
redhat7.0+postgresql7.0でpgaccessを使おうと思いました。

まずlinux版を導入しようと思って、/usr/local上にpgaccessを展開して、
/usr/binにシンボリックリンクを張りました。「pgaccess testdb」で
起動しようとしたところ、invalid command name "image"とのエラーが。
/usr/local/pgaccess/main.tclの5行目のimageというコマンドが実行
出来ていないみたいです。

とりあえず問題は棚上げしてWindowsでpgaccessを導入しようと思いました。
Windows2000にtcl/tkを入れてpgaccessを導入しました。main.tclを
起動するとpgaccessが起動したのですが、「database」「open」で繋がっている
linuxマシンに接続しようとしたら
Is the postmaster running (with -i) at 'localhost' and accepting
connections on TCP/IP port '5432'?
とエラーメッセージが出ます。
postmasterに-iは付けて起動しているのでその点は問題なさそうなので、
localhostの名前が違ってるかport5432が閉じているかという所でしょうか。
ちなみにlinuxでユーザ名postgresで接続しているときに、コンソールで
[postgres@localhost postgres]$と表示されていたらWin2000からの接続先の
名前はlocalhostでいいんですよね?
そうするとport5432が開いているかどうかも確認する必要ありでしょうか。

linux版でもwindows版でもどちらでもいいので、pgaccessが動くようにしたいです。
どなたか上記書き込みから何か分かる事は無いでしょうか。

48 :名無しさん:2001/07/13(金) 04:44 ID:eePtt3OA
漏れは、WindowsからCommon SQL Environment使って、
開発するぞ(゚Д゚)ゴルァ
http://www.hi-ho.ne.jp/tsumiki/

他にもいいのが有ったら教えれ。

49 :名無しさん@お腹いっぱい。:2001/07/13(金) 13:29 ID:???
日記の検索システムを作ろうと思ってるのですが、date型で7月分だけを選択とか、textである文字列を検索というのをselect文でやろうとしたのですが、やり方が分かりません。
どうやればできますか?

50 :名無しさん:2001/07/13(金) 14:06 ID:???
7月分は、'2001-07-01'::date + '1 month'::interval とかつかって検索かな?

textの検索は、正規表現使って、WHERE mojiretsu ~* '.*h[ao]ge.*'とするか、
それで速度に不満が出れば、Chasenとかで単語を抜き出してインデックス作ったり、
全文検索ソフトのNamazuと組合わせたりするのがいいと思う。

自信無いけどな。

51 :49:2001/07/13(金) 22:56 ID:TzQ65wDI
ありがとうございます。>50
取り敢えず7月分ってのは
select * from hoge where date =< '2001-07-01' and date > '2001-08-01'
って感じでやりました。
全文検索はソースがあるページとかないですかね?

52 :名無しDB:2001/07/13(金) 23:57 ID:???
Postgreでもtext型の中を検索することはできるけど、
それをやるならnamazuのがいいよ。

Postgreでやると、ホントに、1文字づつ全文検索する
ことになるから、文章の検索ならnamazuだね。

ちなみに、もし Postgreを使う場合のやり方は

nikki_bunsyo like '%日記%'

とかって書くよ。この場合 nikki_bunsyo 項目の中で
日記の文字がつくレコードが全部選択されるよ。
でも、この方法は負荷がメチャ高いからほどほどに。。。

53 :50じゃないけど:2001/07/14(土) 07:25 ID:???
>>52 PostgreSQLは正規表現のマッチングもできるのは>>50の書いた通り。
それでもあえて%を薦めるのは速度のため?

54 :名無しさん@お腹いっぱい。:2001/07/24(火) 02:04 ID:goR17G.A
DBのモデル図は何を使って書くのがいいのでしょう?
VisioProEditionを使ってみたのですが、MSAccessやOracleには対応しているそうですが、
Postgresには対応していないみたいで。。。

55 :名無しさん@お腹いっぱい。:2001/08/05(日) 04:08 ID:qlDpZz.I
テーブルAにれこーどを登録したあと、
そのときにデフォルトで登録された列(というか、シリアル値のID)が何番かを、
参照するにはどうすればいいのでしょう?

56 :名無しさん:2001/08/05(日) 04:34 ID:jKHgi2nI
select currval('hage_seq');
じゃねいの(´Д`)y-~~

57 :名無しさん@お腹いっぱい。:2001/08/05(日) 05:41 ID:qlDpZz.I
あ、なるほど。
ところで、知りたい列がシリアルではない場合、
何が入れられたかを参照する方法はありますか?

58 :コメント無しさん:2001/08/05(日) 06:17 ID:???
>>54
対応してるっていっても、ERからテーブル作成のスクリプト吐いてくれる
だけで。
それが使えるのも結局最初だけだから、Visioでいいんじゃない?

59 :さる:2001/08/05(日) 06:30 ID:???
↓のような場合、もっと別のスマートな書き方がありますか?
ちなみに、TODOテーブルに登録されている「TODO」のタイトル、本文、および、ジャンル名を表示するSQLで、
ジャンル名は別テーブルGENREからIDでひっぱっています。
で、IDが割り当てられていないときのみ「未分類」としたいのですが

SELECT a.title, a.body, b.genrename
FROM todo a, genre b
WHERE (a.todogenreid = b.genreid)
UNION
SELECT a.title, a.body,'未分類' AS genrename
FROM todo a
WHERE (a.todogenreid = NULL)";

60 :電動ナナシ:2001/08/05(日) 17:48 ID:T/JQahRQ
>>59
PostgreSQL 7.1 以降なら、outer join を使えばいい。

SELECT a.title, a.body, NULLIF(b.genrename, '未分類')
FROM todo a LEFT OUTER JOIN genre b ON a.todogenreid = b.genreid;

61 :名無しさん@お腹いっぱい。:01/08/30 23:08 ID:M8F0Dr3g
正規化についていい書籍またはwebページとかあったら教えてください。

62 :名無しさん@お腹いっぱい。:01/08/30 23:27 ID:FDHNcC5c
正規表現とかでも前方一致検索だとまだ早いのか。へー

63 :名無しさん@お腹いっぱい。:01/08/30 23:38 ID:lbHU/sz6
A|B
------
1|あ
2|い
3|う
4|お

なんてテーブルがあったとします。
カラムBのデータのみ配列に入れたい場合、
つまり、array(あ,い,う,え,お)としたい場合は
どうしたら良いのでしょうか?
行の配列格納なら簡単に可能ですが、列の配列格納は
ひとつずつ読み込んでいくしかないのでしょうか?

64 :名無しさん@お腹いっぱい。:01/08/31 00:18 ID:cTlje8/Q
>>63
array(あ,い,う,お)
でした。

65 :名無しさん@お腹いっぱい。:01/08/31 06:42 ID:8Ot53tF2
行の配列格納って簡単なの?そーなの?

66 :名無しさん@お腹いっぱい。:01/08/31 09:36 ID:OPUkQPbU
PHPを使ってという大前提が抜けてました。
行の配列格納はpg_fetch_rowとか使えばできます。

67 :名無しさん@お腹いっぱい。:01/08/31 10:13 ID:8Ot53tF2
postgresの話っていうよりDBを扱う言語(のライブラリ)の話ですな。
pg_fetch_array()をループで回すのが普通みたいですね。

68 :名無し三脚:01/08/31 10:36 ID:N78y3VFE
pgsqlに流れてた石井さんのpgstattupleってどうですか?
ftp://ftp.sra.co.jp/pub/cmd/postgres/pgstattuple/pgstattuple-0.1.tar.gz
漏れは厨房なので、ここの偉い人の感想キボンヌ

69 :名無しさん@お腹いっぱい。:01/09/05 20:10 ID:dYMWGvtU
WindowsでPostgreSQLって今どうなってるんだっけ?

70 :名無しさん@お腹いっぱい。:01/09/05 20:38 ID:iE4iOxe.
あげ

71 :名無しさん@お腹いっぱい。:01/09/06 15:51 ID:a4GcKC6.
すみません教えてください。
タプルって意味なんですが・・・
カラム(行数)=タプルって言う解釈でいいんでしょうか?

72 :コピペでGo!:01/09/06 16:28 ID:8PdBtivg
>>71
カラム <> タプル
タプル = 行

http://www.rccm.co.jp/~juk/pgsql/faq-japanese.html
より (っていうか、あんたのディスクにも入ってない?)

4.18) PostgreSQL で使われるいくつかの用語の意味は何ですか?

いくつかのソースコードや古い文書の中には、それぞの専門分野の中でもっと一般的に
使われる専門用語が使われています。


・ テーブル(table)、関係(relation)、クラス(class)
・ 行(row)、レコード(record)、タップル(tuple)
・ 列(column)、フィールド(field)、属性(attribute)
・ 取得(retrieve)、選択(select)
・ 置換(replace)、更新(update)
・ 追加(append)、挿入(insert)
・ OID, 連番(serial value)
・ ポータル(portal), カーソル(cursor)
・ 領域変数(range variable)、テーブル名(table name)、テーブル別名(table alias)

一般的なデータベース用語のリストは: http://www.comptechnews.com/~reaster/dbdesign.html で見つけられます。

73 :名無しさん@お腹いっぱい。:01/09/06 17:19 ID:l3o4Kuog
>72さん
わかりました。ありがとうございました。

74 :名無しさん@お腹いっぱい。:01/09/07 15:54 ID:H1pdW9FE
pgbenchでのベンチマーク結果について教えて下さい。
pgbench hoge -t 1000 と実行した所,

number of clients: 1
number of transactions per client: 1000
number of transactions actually processed: 1000/1000
tps = 26.423163(including connections establishing)
tps = 27.191780(excluding connections establishing)

となりました。つまり、1000トランザクション実行し終わるのに
大雑把な計算で、1000/27=37秒かかるという認識で宜しいのでしょうか?

当方、CPU:P2-233,メモリ:64M,postgres7.1.1での結果ですが、ミドルクラス
PCではどのくらいになるか教えて頂ければ、買い替えの参考になり非常に助かります。

75 :名無しさん@お腹いっぱい。:01/09/07 16:21 ID:8FwfcxVs
普通のSQLの質問してもよろしいでしょうか。
(間違っていたらスレッドを教えて下さい)

update AAA set Fn = "hoge"
where Fn is null;

Fnに複数のフィールドを一度に設定したいのですが可能でしょうか。
フィールドが100個くらいあるデータで、データがnull値の時は
hogeに置き換えろって事なんです。
一度に設定できないと、100回フィールド名を変えなければならないのでかなり大変な作業になります。
どうかお願いします。

76 :75:01/09/07 16:25 ID:8FwfcxVs
ただしテーブル全体を検索対象っていうのはだめなんです。
F1〜F10まで くらいの間隔なんで。

77 :名無しさん@お腹いっぱい。:01/09/07 19:13 ID:bNMP41Og
age

78 :名無しさん@お腹いっぱい。:01/09/07 21:10 ID:fbb/xWKg
お腹がタプる。

79 :名無しさん:01/09/07 22:02 ID:iS1WYxjU
>>75
何がやりたいのかよく分からんが、default値使えないの?

80 :名無しさん@お腹いっぱい。:01/09/09 01:00 ID:???
使い始めて3日目ー。
表の各列の型情報一覧を表示させるコマンドってありませんか?
すぐ忘れてしまいます。

>>75
同じ事態になりました。時間がなくて、copyコマンドで書き出してnkf -sして
ftpでwinに持っていってエクセル(アクセスは無理)で「置き換え」で空白をNULLにしてタブ区切りのテキスト出力してlinuxに再び持っていってnkf -eして
copy hogetable to '/tmp/hoge.txt' with null as 'NULL';
っつーアホなことをしました。
あーあ。

81 :80:01/09/09 01:02 ID:gDhospho
copy hogetable to '/tmp/hoge.txt' with null as 'NULL';
to じゃなく fromだ。
鬱氏

82 :名無しさん@お腹いっぱい。:01/09/10 07:42 ID:???
>>69
サーバーならCygwinで動かすのとWinネイティブのがあるけど
ネイティブなのは1セッション限定なので遊びにしか使えん
Cygwinのはまだマシだけど運用は無理だろうな

83 :名無しさん@お腹いっぱい。:01/09/10 11:16 ID:bMbW9tU6
Great Bridge操業停止ー
どこも不景気なのね。

84 :名無しさん@お腹いっぱい。:01/09/10 14:48 ID:CV8.18JQ
>>82
ありがとありがと
自マシンでテスト用だったら使えるって感じなのかな

85 :名無しさん@お腹いっぱい。:01/09/13 20:31 ID:h.lgqqlI
大きなchar型とかtext型の中を検索したいんですけど、>>50−52の方法ぐらいしか一般的なのはないんでしょうか?

あと・・・
pgnmz.cが使えそうな感じだとreadme.txtから読み取れたんでコンパイルしようとしたんですが・・・

VARSIZE(retp) =

ってやってる行全部で左辺値が変だって言われてコンパイル失敗するんです・・・。
これのコンパイル方法誰か教えてお願い。。

環境:pg/7.1.2
    なまず/2.0.7
    gcc/2.95.2.1

86 :名無しさん@お腹いっぱい。:01/09/13 22:53 ID:Nq5e6DE2
よこやり
pgnmz.cってどういうものですか(汗?

87 :名無しさん@お腹いっぱい。:01/09/14 10:49 ID:VVeFQun.
煽られてるのかまじめに聞かれてるのかよくわからないけど(;´∀`)

りーどみーからこぴぺ
■PGnamazuとは
 PostgreSQLから,namazuの全文検索結果を参照するためのユーザー定義関数です。

これのソースコード。

うーん、まだコンパイルできないよう

88 :85=87:01/09/14 12:16 ID:???
めーくふぁいるの
../intl/hogehoge.o \
を全部カット

VARSIZE(retp) =
となってる部分を
VARATT_SIZEP(retp) =
に置換

で一応コンパイルは通った。さて、、、後はぽすとぐれすから検索出来ればいいんだが。。
これで駄目ならあきらめよーっと( ・∀・)y━~~

89 :名無しさん@お腹いっぱい。:01/09/14 19:32 ID:???
誰が見てるかわからんが(誰も見てないな)一応報告。。

まず、何故かintl/以下の*.oが作成されなかったので、ネットで強引に.oファイルを拾ってきてこぴぺ(ぉぃ

なまずは2.0.5を使用。

これで一応psqlから関数が使えるようになりました。
が、まだ検索がうまく・・・・・・・

(−_−)鬱だし脳

90 :ななしさん:01/09/14 21:44 ID:I5Sj1HiA
厨房の漏れに優しく教えてくれてありがとう。
でも、PostgreSQLって、PHPとかPerlとかと併せて使うのがメジャーだけど
それでもPostgreSQLからnamazuの検索結果を参照するメリットってどこにあるのかな。

91 :名無しさん@お腹いっぱい。:01/09/15 01:00 ID:6vm7gPGI
Yahoo!みたいなカテゴリって、postgres(つーかsql)で、
どういう設計をすればいいのえしょう?
図書館みたいなn進法しか思いつかない。。。

92 :電動ナナシ:01/09/15 02:19 ID:41dU1HoU
>>91
ここを見るといいと思う。ちょっと古いが。
http://www.webreference.com/perl/xhoo/php1/

93 :名無しさん@お腹いっぱい。:01/09/15 11:25 ID:yhMUGX2Y
>>89
見てる見てる。報告待ってる。

94 :89:01/09/16 13:04 ID:???
>>93
メインマシン死亡につき一時避難中ですが、がんばりまーす

95 :91:01/09/19 22:42 ID:kmLdS2pE
>>92
ありがとうございます。
なるほど、カテゴリについて、「おやカテゴリ」というフィールドを作るほうがフレキシブルですね。
ところで、もし1つのURLに対して、複数のカテゴリを割り当てる場合、
やはり、「カテゴリ割り当てマスタ」みたいなテーブルをつくって、
link_id category_id
---------------------
1 3
1 5
1 14
2 4
2 6
2 14
みたいにするのが順当なんでしょうか?
(自分にはそれしか思いつかない)

96 :電動ナナシ:01/09/20 03:35 ID:Mw5BZ/Is
>>95
それでいいでしょ。

テーブルのデータ量が気になるなら、ビットでカテゴリ表現することにして、
OR を取った値を入れてもいいかも。カテゴリが多いと使えないが。
ex.)
カテゴリA = 0x01
カテゴリB = 0x02
カテゴリC = 0x04
X というリンクがカテゴリ A と B に属するなら、カテゴリ値は 0x03
(0x01 | 0x02 なので) となり、Y というリンクがカテゴリ A と C なら
0x05 (0x01 | 0x04) ・・・という具合。

97 :名無しさん@お腹いっぱい。:01/09/20 09:41 ID:???
>>95
それでいいと思うんだけど、
そのテーブル内容だと、カテゴリ14にリンク1とリンク2両方が
張られてるのってどうなの?
カテゴリテーブルに link_id フィールド作っちゃえばいい気もする。

98 :97:01/09/20 09:47 ID:???
あ、俺の考えたリンクの意味が全然違うことに気づいたよ。
電波入った。鬱。

99 :電動ナナシ:01/09/21 02:35 ID:FQe/4xL2
PostgreSQL for Win32 が同時複数セッション対応になったというアナウンスが
流れていた。
http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html

100 :名無しさん@お腹いっぱい。:01/10/27 23:32 ID:???
age

101 :名無しさん@お腹いっぱい。:01/11/16 17:20 ID:Di9IWgGX
Sirial型が含まれるテーブルに
COPY hoge from 'hoge2.csv' using delimiters ',';
みたいなんで、テキストファイルインポートする事って可能ですか?

102 :名無しさん@お腹いっぱい。:01/11/16 17:35 ID:???
>>101
SERIAL っつても所詮は int4 なのでインポート自体は問題ない
けど、SERIAL 値の再設定はいるよ。

103 :名無しさん@お腹いっぱい。:01/11/16 17:44 ID:???
>>102
SERIAL型の項目に適当に重ならない数字はめたらいけました。
通常のInsertのように自動的にNoをふらせてのインポートは
不可能なんでしょうか?

104 :名無しさん@お腹いっぱい。:01/11/16 18:02 ID:???
>>103
例えば。

CREATE TABLE テーブル名 (カラム名 SERIAL);

すると実際には

CREATE SEQUENCE テーブル名_カラム名_seq;
CREATE TABLE テーブル名 (カラム名 INT4 DEFAULT nextval('テーブル名_カラム名_seq');
CREATE UNIQUE INDEX テーブル名_カラム名_key ON テーブル名 (カラム名);

と SQL を実行したのと同じ状態になる。
どういうことかわかってもらえるかな?

105 :名無しさん@お腹いっぱい。:01/11/16 22:53 ID:???
をおぉ、こ、これは…

postgresql.4dd.co.jpのホームページ:
http://www.jp.postgresql.org/

106 :名無しさん@お腹いっぱい。:01/11/17 13:54 ID:fXBlmqnN
COBALT?

107 :教えて君:01/11/19 15:44 ID:???
phpPgAdmin 2.3.1 で adv_auth = true にしてもpg_user.passwd を見に行ってくれないような気がするんですけど気のせいでしょうか?
ちなみに PostgreSQL 7.1.3 上です。

108 :名無しさん@お腹いっぱい。:01/12/05 18:50 ID:???
すいません、教えてください
古い順番で100件をselectするのは

select * from hoge limit 100;

でOKですよね?
では新しい順番で100件をselectする場合はどうしてますか?

109 :教えて君:01/12/05 19:42 ID:???
>>108
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/sql-select.html

110 :名無しさん@お腹いっぱい。:01/12/05 23:02 ID:???
>>109
それをみてもわからないのです。。。鬱

111 :名無しさん@お腹いっぱい。:01/12/06 00:33 ID:???
そもそも、古い順でselectできてるってのは気のせいだ。
そのページのORDER BYのとこを読め。

112 :名無しさん@お腹いっぱい。:01/12/06 16:13 ID:ZWim4af9
例えば、DBに入っているデータと、静的作成されたページを同時に
検索でき、結果表示する方法とかないですかね??
namazuは、静的なページの検索のみなのかな?

113 :教えて君2:01/12/06 20:41 ID:6hzVUgau
Cでlibpqを使用しています。(postgreSQL7.1.2)
Varcharの列に
snprintfでSQL文を作り登録しているのですが
psqlから登録した文字列を条件でセレクトしてもデータを取得できないのです。
Cのchar型の終端文字列に問題があるのでしょうか?
実際characterlengthで文字数を取得すると一文字多いのです。

114 :名無しさん@お腹いっぱい。:01/12/06 21:03 ID:???
\dでテーブル一覧表示させて
drop table発行しても、消えないテーブル(does not exist)
があります。どうしたら消せますか?
あと、大文字、小文字は関係あるのでしょうか?
OSはRedHat7.1 Postgres7.1です。

115 :名無しさん@お腹いっぱい。:01/12/06 21:11 ID:???
>>114
権限がない or 大文字のテーブル名だから

基本的にCREATE TABLEコマンドを使って大文字でテーブルを作成しても小文字に直してくれます
が、odbcドライバとか使って仮に大文字のテーブル名になっちゃった場合は
テーブル名を小文字 or 2バイト文字のテーブル名に直した後データベースの再構築がいります

116 :名無しさん@お腹いっぱい。:01/12/06 23:34 ID:???
>>114
DROP TABLE "OHMOJI";

117 : :01/12/07 02:32 ID:???
>>108
何を基準に並べるのか知らないが、仮に登録日順(create_date)に並べたかったら

(昇順)SELECT * FROM hoge ORDER BY create_date LIMIT 100
(降順)SELECT * FROM hoge ORDER BY create_date DESC LIMIT 100

118 :名無しさん@お腹いっぱい。:01/12/07 07:27 ID:2/lCxAnu
postgresをいじるGUIなツールでwindowsでうごくものがあったはずなんですが、
名前がどうしても思い出せません。
略称で、アルファベット3文字だと思ったのですが・・・
どなたかご存知ありませんか?

119 :名無しさん@お腹いっぱい。:01/12/07 08:47 ID:???
CSE(Common SQL Environment)のことかな?
http://www.hi-ho.ne.jp/tsumiki/

120 :名無しさん@お腹いっぱい。:01/12/07 10:57 ID:???
>>118
ODBC経由でAccessとつなげるとかとか

121 :名無しさん@お腹いっぱい。:01/12/07 19:58 ID:XHyaWtTT
select func(); で呼び出した関数内でSELECT文を発行したとき、
その結果セットを返すにはどうやればいいんでしょうか。

関数内で SELECT TBL FROM HOGE; とか書いても
表示してくれません。

122 :121:01/12/07 19:59 ID:XHyaWtTT
>>121
補足。
SELECT文は関数内でEXECUTEしてます。

123 :親切な人:01/12/07 21:10 ID:???

ヤフーオークションで、幻の人気商品、発見!!!

今は無き「コピーガードキャンセラー」↓
http://page2.auctions.yahoo.co.jp/jp/auction/b18505597

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。

124 :名無しさん@お腹いっぱい。:01/12/08 01:05 ID:???
>>117
遅くなりましたがありがとうございます。精進いたします

125 :121:01/12/08 03:39 ID:9UlfiqqN
>>121
自己解決。

126 :118:01/12/08 08:17 ID:BnyHCSQg
>>119
CSE(Common SQL Environment)のことかな?
そうそう、それです。ありがとうございます。
どっかのpostgres本でみかけたきになってて。。。

>>120
>ODBC経由でAccessとつなげるとかとか
それは、やってるんだけど、やはり制限があるから・・・

127 :名無しさん@お腹いっぱい。:01/12/11 01:14 ID:dPLgUoIj
質問です。
データベースをpg_dumpで出力してテキストファイルに保存しました。
テキストファイルを別サーバーに移してpsql -f (ファイル名)で移しました。
sequenceのlast_valueが全て1にリセットされていて動かなくて困っています。
update文を使おうと思ったら変更できないとメッセージが返されました。
どなたかどうすれば変えられるか教えてください。

128 :名無しさん@お腹いっぱい。:01/12/11 06:29 ID:???
>>127
pg_dumpしたらsequenceも保存してくれるはずだけどなあ。
sequenceの値を変更したいなら、
SELECT setval('sequence_name', newval);
みたいにするといいよ。

129 :名無しさん@お腹いっぱい。:01/12/12 11:55 ID:+eQJL9wJ
超初心者質問です。
Win版ダウソしようとしてサイトをぐるぐる探したんですが、ダメでした。直リンお願いしますう。

130 :名無しさん@お腹いっぱい。:01/12/13 02:25 ID:???
http://blake.prohosting.com/prmsdlnd/

131 :名無しさん@お腹いっぱい。:01/12/13 14:42 ID:bfF3dg0d
Win版使いたいよー。
だれかサイト教えてヨ。

132 :未定義の名無しさん:01/12/13 22:48 ID:???
>>131
ほらよ。
http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html
ただ、実用レベルではないな。環境によっては動かない。
(曖昧な表現でスマソ)
Winで実用的に使うなら、MySQL for Win32のほうがいいかも。
http://www.mysql.org/downloads/os-win32.html

あと、PostgreSQLでもMySQLでも、
http://www.hi-ho.ne.jp/tsumiki/
ここのCSEを併せて使うとベンリ。

各ソフトウェアの開発者に感謝して使えよ。

133 :名無しさん@お腹いっぱい。:01/12/14 01:53 ID:???
つみきソフト様
本当に感謝しております。

134 :名無しさん@お腹いっぱい。:01/12/14 18:35 ID:???
JPEG画像をinsertできるんですか?

135 :名無しさん@お腹いっぱい。:01/12/19 00:20 ID:eyjDftvg
>>128
> SELECT setval('sequence_name', newval);
おお、通りすがったら、ここ数日悩んでいた回答が...、ありがとう。

136 :初心者:01/12/19 21:31 ID:0XK3f5i/
先日PostgreSQLのWin-Native版をダウンロードしまして
インストールしたのですが、Administratorでインストール
して、Administrator/そのパスワードで接続しようとしてい
るのですが「このシステムのカタログ(?)にはAdministratorは
存在しません」という英語のエラーが出てどうしてもうまく
いきません。

環境は Win2000 SP2 です。Winに関する知識は少々持ち合
わせていますが、Postgreについては厨なので、何かアドバイ
スいただけるようでしたらよろしくお願いします。

137 :名無しさん@お腹いっぱい。:01/12/19 22:01 ID:???
Windows版は知らんが、pg_shadowにAdministratorというユーザーがいないから
じゃない?
psql -U pgsql template1してcreate user Administrator;でどうよ。

138 :名無しさん@お腹いっぱい。:01/12/20 12:19 ID:ehqpB6yM
CSEは隠しテーブルまで見せてくれるので、テーブル構造みるのは便利だね。

だけど、データ編集グリッドの動きが良くないぞ。
データ編集ソフトどっかに無いですか?

139 :名無しさん@お腹いっぱい。:01/12/20 15:23 ID:fwnRjdeO
>http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html
>ただ、実用レベルではないな。環境によっては動かない。

これについて詳しく知りたいです。

140 :番組の途中ですが名無しです:01/12/21 01:46 ID:???
>>139
自分で評価しる

141 :名無しさん@お腹いっぱい。:01/12/25 10:44 ID:ZkkXZhFh
WindowsではMySQLの方が良いのか?age

142 :番組の途中ですが名無しです:01/12/25 14:58 ID:???
良スレ(?)はマターリの法則に基づきsage.
>>141
漏れは、PostgreSQLとMySQLの両方をざっと評価して、
安定度でMySQL for Win32を選択したゾナモシ

143 :名無しさん@お腹いっぱい。:01/12/25 18:03 ID:MifQpswm
http://www.hi-ho.ne.jp/tsumiki/
つながりますか?
ミラーページはないのですか?

144 :名無しさん@お腹いっぱい。:02/01/12 08:19 ID:9xVpue2a
postgresサーバにユーザ名postgres(postmaster)だけでログイン出来てしまうんですが、
これって問題ですよね。
パスワードを設定してもしなくても何故かログインできてしまうのです。
これはどのように設定すればパスワードが有効になるのでしょうか。
Linux上ではpasswdコマンドでパス自体作成済みです。

145 :名無しさん@お腹いっぱい。:02/01/13 22:45 ID:NvlGFTwS
MySQLはWindowsに入るけどさPostgresってWindowsに入るの?

146 :名無しさん@お腹いっぱい:02/01/13 23:31 ID:???
>>145
ほい、Win32ネイティブ版らしい。
http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html
でも、実験程度くらいにしか使えない模様。

http://www.s34.co.jp/~luster/pgsql/
に、Cygwin環境で動作するやつがある。
動けばこちらのほうがいいかも。

147 :名無しさん@お腹いっぱい。:02/01/14 20:42 ID:???

強制的に IndexScan 使うように Query 発行できんもんかな
Oracle みたいに。

148 :名無しさん@お腹いっぱい。:02/01/15 15:26 ID:Rlrh+zWf
すんません.
データベースのちゃんとした設計を勉強したいんですけど
お勧めの書籍ってあります?
PostgreSQL 以外の奴でももちろん可

もうちょっとスマートな設計を身に付けたいんで

149 :名無しさん@お腹いっぱい。:02/01/15 15:53 ID:EkJV4LyD
Postgreって何て読むの?ぽすとぐれ?ぽすとぐわぁ?

150 :名無しさん@お腹いっぱい。:02/01/15 16:01 ID:???
Postgres:ポストグレス
PostgreSQL:ポストグレス/ポストグレスエスキューエル/ポストグレエスキューエル/ポストグレスキューエル

151 :名無しさん@お腹いっぱい。:02/01/15 17:29 ID:???
>>150
作者たちは「ポストグレス・キューエル」
て読んでいるみたいね。

152 :名無しさん@お腹いっぱい。:02/01/18 15:44 ID:VDCf4fwa
>>144
インストールするとき、スーパーユーザーの名前変えてないの?
ふうん

153 :名無しさん@お腹いっぱい。:02/01/18 18:48 ID:???
. ∧   ∧
( ´ ・∀・`) へー


154 :agege:02/01/19 02:27 ID:ZUGdJ0ZN
> 152
スーパーユーザ名を変えたところで解決にはなりません。
恐らく144の悩みはCGIからのDB操作が関連するためだと思われ、
そうなるとWWWユーザ名でアクセスすることになり、CGIを使う人
全てがアクセスできることを懸念していると思う。

解決法はちゃんとマニュアルに載っているのでシッカリ読むようにお奨めする。
結構しっかり書かれているのでここで説明するのは差し控えておこう。

155 :名無しさん@お腹いっぱい。:02/01/19 02:39 ID:puXqubmn
>154
勿体ぶるなYO!


156 :agege:02/01/19 02:53 ID:ZUGdJ0ZN
> 155
勿体ぶってなんかいないYO!

単にマニュアルを見るだけでガスYO!

157 :名無しさん@お腹いっぱい。:02/01/19 02:56 ID:puXqubmn
>156
英語のマニュアルは3行読むだけで疲れる。
あの変な日本語のマニュアルは5行が限界だ。


158 :名無しさん@お腹いっぱい。:02/01/19 02:59 ID:???
>157
よくいった!
もう神様にでもなったような日本代表気取りのあいつ、自分だけで本書いてるんじゃネエヨ。
読みにくいんだよお前の本。

159 :agege:02/01/19 03:03 ID:ZUGdJ0ZN
> 157ぐらい
DAKARA. ここに書いても結局マニュアルと同じようになるでしょ!

とわたしの脳がおっしゃいました。

160 :名無しさん@お腹いっぱい。:02/01/19 03:05 ID:puXqubmn
>159
じゃ、どこの行か教えてくれ。


161 :agege:02/01/19 03:06 ID:ZUGdJ0ZN
とかなんとか言っちゃって、本当は、じらされて喜んでるんじゃないの?

162 :名無しさん@お腹いっぱい。:02/01/19 03:10 ID:???
>159

>とわたしの脳がおっしゃいました。

やばいよ(笑)

163 :名無しさん@お腹いっぱい。:02/01/19 03:11 ID:puXqubmn
公開放置プレイかよ、(;´Д`)ハァハァ・・・

164 :agege:02/01/19 03:14 ID:ZUGdJ0ZN
じらすほうも興奮するネー

165 :名無しさん@お腹いっぱい。:02/01/19 03:36 ID:???
つまんねー

166 :名無しさん@お腹いっぱい。:02/02/04 16:59 ID:???
>7.1ではシステムインデクスも一部の例外を除いて
>postmasterを停止せずテーブル単位のREINDEXが可能です。
>作成者の怠慢でどこにも書かれていなかったこともあって
>7.2.0では出来なくなってしまいました。7.2.1では再び
>可能になります。

(´・ω・`) ショボーン

167 :名無しさん@お腹いっぱい。:02/02/04 16:59 ID:W5Vxrbq7
7.2リリース近いage

168 :名無しさん@お腹いっぱい。:02/02/05 03:13 ID:QtJ4ED0z
>>167
そう思って待ち続けて早3ヶ月。PAMサポート早くホスィ...

169 :名無しさん@お腹いっぱい。:02/02/05 08:58 ID:y7uQjn4d
Postgres JP の ML によると、
7.2リリースって、日本時間だと今日だったような・・・。


170 :名無しさん@お腹いっぱい。:02/02/05 23:02 ID:QtJ4ED0z
>>169
うお、ホントだ出てる!
pgsql-hackers見てきたけど問題なさそうだね。7.2リリースage

171 :名無しさん@お腹いっぱい。:02/02/06 09:34 ID:IeKBEXzZ
http://www.postgresql.org/とかにはまだ出てない....。
http://www.postgresql.jp/にもでてない....。
ftpにはもうあるのかな。

早くしてくれよう。
VACCUMに期待してるんだよう。

172 :名無しさん@お腹いっぱい。:02/02/06 09:52 ID:SjV/7aoM
>>171
ftpにはあるよ。

173 :名無しさん@お腹いっぱい。:02/02/06 13:07 ID:IeKBEXzZ
どうもありがとう。
メーリングリストでも流れたね。

174 :名無しさん@お腹いっぱい。:02/02/06 15:05 ID:paN7WRtf
cron で vacuumdb をすると、以下のような警告(?)が
出るのですが、何なのでしょう?
普通にコマンドラインから vaccumdb すると出ません。
cron での設定が悪いのでしょうか?
--------------------------
/usr/local/pgsql/bin/vacuumdb: basename: command not found
/usr/local/pgsql/bin/vacuumdb: sed: command not found
--------------------------

RH 7.2 + PostgreSQL 7.1.3

175 :名無しさん@お腹いっぱい。:02/02/06 17:09 ID:???
PostgreSQL 7.2 Mirror site on RingServer
ftp://ring.ocn.ad.jp/pub/misc/db/postgresql-jp/7.2/postgresql-7.2.tar.gz
ftp://ring.asahi-net.or.jp/pub/misc/db/postgresql-jp/7.2/postgresql-7.2.tar.gz

現時点では、OCN にはまだミラーされてないみたいね。


176 :名無しさん@お腹いっぱい。:02/02/06 22:01 ID:SjV/7aoM
>>174
cron環境でPATHが通ってないと思われ。
man 5 crontabして環境変数を追加すれ。

177 :名無しさん@お腹いっぱい。:02/02/07 00:46 ID:f6G5y4rd
>>175

RingServer にリンク張るときは、ftp.ring.gr.jp を指定するのが原則。
ftp://ftp.ring.gr.jp/pub/misc/db/postgresql-jp/7.2/postgresql-7.2.tar.gz

178 :名無しさん@お腹いっぱい。:02/02/07 01:11 ID:???
>177
ftp.t.ring.gr.jpにすると自動で近いところに振り分けてくれるみたい。

179 :hogehoge:02/02/07 18:14 ID:Qub1OJU0
Sol7+gcc-2.95.3+PostgreSQL7.2
./configure --enable-multibyte=EUC_JP --enable-syslog \
--enable-readline --with-gnu-ld=no --with-maxends=16

だとmake checkでvacuumdbがコケるのは漏れだけだろうか。
まだ共有メモリが足らんのかなあ。

MLに投げるのは怖いよ。
(((゚д゚;))))ガクガクブルブル

180 :名無しさん@お腹いっぱい。:02/02/20 07:14 ID:???
>>174
basenameとかsedって普通 /usr/bin あたりに無いか?
そこにPATHが通ってないんなら、他のcronのコマンドもエラー出ないか…?

スレと関係なくてスマン>ALL

181 :名無しさん@お腹いっぱい。:02/02/21 00:08 ID:???
>>149
ttp://www.jp.postgresql.org/postgresql.mp3
だそうです。

182 :名無しさん@お腹いっぱい。:02/02/21 00:35 ID:???
>>181
http://www.jp.postgresql.org/postgresql.mp3 が公式発音なのね。
ぽすとぐれす きゅーえる か。
ポ にアクセントね。


183 :名無しさん@お腹いっぱい。:02/02/24 21:22 ID:QRKHUR9a
つい最近、別のマシンにインストールしてたんだが、
initDBできんかった・・・
local1_template1.sourceが行方知れずだと言われて・・・
パスの設定とかは問題なし。
同じ現象に出くわした人、いる?

184 :sage:02/02/25 00:50 ID:???
>>183
知人から"軽ーく"聞いた話だと、もとからpostgresが入ってただか
入れたのを忘れたのか知らんが、それが邪魔してそんなメッセージ出た
とか聞いたような気がする。
ただ、よく聞いてなかったし、聞き流したんで違ったらスマソ。

185 :名無しさん@お腹いっぱい。:02/02/25 01:32 ID:???
>183
それよくでるよ。
一度徹底的にPostgres関係のファイル掃除して改めて入れ直すしかないと思う。

186 :名無しさん@お腹いっぱい。:02/02/25 15:14 ID:???
メーリングリスト来てた・・・
http://www.softkoubou.co.jp/
ソースコードジェネレータがようやくデモ版を動かせるみたい。

187 :183:02/02/26 01:46 ID:???
>>184、185
多謝。
which initdb かけたら、他のディレクトリから発見・・・(なぜ?)
お掃除しまくったら、うまくいった。


188 :nobodyさん:02/03/08 20:10 ID:+DqcBvRV
教えてください。
シフトJISで保存したタブ区切りのテキストファイルを
copyコマンドで登録しているのですが、うまくいきません。
以下のようにclient_encodingをSJISにしてみてもダメでした。

set client_encoding to 'SJIS';
\copy hogedb from /tmp/hoge.txt

いつもはEUCコードのファイルなので問題なく登録できています。
シフトJISのファイルをcopyすることはできないのでしょうか?

189 :nobodyさん:02/03/08 22:25 ID:???
7.2でUNIXソケットの認証が強固になった。
trust教える奴には「氏ね」といってやろう。


190 :nobodyさん:02/03/09 06:37 ID:???
>>188
改行コードの問題である可能性はある。

191 :nobodyさん:02/03/09 16:09 ID:???
大学でPostgreSQLが入っていたので試してみたのですが、
PHPからpg_connectで接続するとき、他人の作ったDBに
その人のユーザ名を user= で与える(パスなし)と、
その人にしか権限が与えられていない追加・更新が
出来てしまうのですが、これを防ぐ方法はないのでしょうか?
よろしくお願いします。

192 :nobodyさん:02/03/09 17:17 ID:???
>>191
ユーザー名ふやしておけ

193 :nobodyさん:02/03/09 18:52 ID:???
>>191
管理者がlocalからの接続を"trust"と設定していると思われ。認証方式
をパスワード認証に変更してもらわないとダメ。

194 :191:02/03/09 22:29 ID:???
>>193,>>192
お答え、ありがとうございます。月曜日にでも管理者に相談してみます。
ところで、仮にパスワード認証にしたとして、
pg_connect("user=■■, password=□□");
のとき、直に書いて、もしこれを他人がコピーして、他人がその人の
エリアに設置した場合、やっぱり接続されてしまうもんなんですか?

195 :nobodyさん:02/03/09 22:34 ID:bvBGbCGY
>>188
中のデータ設定がEUCで設定されているからであ

$ export PGCLIENTENCODING=SJIS
show client_encoding
\g
NOTICE: Current client encoding is SJIS


196 :193:02/03/10 11:19 ID:???
>>194
うん。接続されちゃう。それがパスワード認証。

PHPで可能か知らないけど、スクリプトのパーミッションを711にしても
動作するなら他人にパスワードを見られるリスクは減らせるね。

197 :nobodyさん:02/03/10 22:27 ID:CbM1jE6Z
postgreで今日から二日前までのデータを取得する、といった抽出条件は
どのように書けば良いのでしょうか。

198 :nobodyさん:02/03/10 22:31 ID:???
>>197
せめて「postgres」って書こうYO!
質問は難しすぎて漏れにはワカラン

199 :nobodyさん:02/03/10 22:38 ID:???
>>197
日付はとってあるの?

200 :nobodyさん:02/03/11 01:09 ID:???
>>198
postgres

>>199
とってます。
何とか自分で解決できました。聞いておきながらスマソ

WHERE TO_CHAR(CURRENT_TIMESTAMP, ''J'') = TO_CHAR(DATE, ''J'') AND
(TO_NUMBER(TO_CHAR(CURRENT_TIMESTAMP, ''SSSS''), ''999999'') -
TO_NUMBER(TO_CHAR(DATE, ''SSSS''), ''999999'')) < (DIFF_MINUTE * 60)

こんな感じでユリウス歴に変換して行いました。
UNIX時刻に変換出来るのが一番良いんだけど無いみたいだし。

201 :nobodyさん:02/03/12 14:01 ID:???
テーブルにハイフンつきで入ってる電話番号を、
ハイフン無しの数字で検索したいんだけど、
どうすりゃいいんでしょ。

create table tel(
name varchar(100),
tel_no varchar(16)
);

select * from tel;
name | tel_no
-----+---------------
aaaa | 03-3333-1111
bbbb | 03-3333-2222
cccc | 03-3333-3333

Webのフォームからは、0333331111と入力して検索したい
んですが、どんなクエリにしたらいいですか。


202 :nobodyさん:02/03/12 14:14 ID:???
>>201
あらかじめ検索用にそういうデータ作っておくのが一番かと。
046-6xxと
04668-2xを、どう区別するの?とかいろいろ問題出そうだから。

203 :201:02/03/12 14:38 ID:???
>>202
正規表現とかなんとかでどうにかなりませんかね。
PostgreSQL7.1.3です。

204 :191=194:02/03/12 20:48 ID:???
>>196
遅くなりましたけど、お答えありがとうございました。
701にしてFTPからでも見られないようにしました。
責任者曰く、テスト的な導入だからそういう設定はしていないでした。
将来的にするそうです。

205 :名無しさん:02/03/12 22:43 ID:???
データベースの設計に問題あり。

206 :.:02/03/13 02:31 ID:???
重複行を物理的(?)に削除する方法ってありますか?
SELECT DISTINCT でなくて、実際に行を削除したいのです。

BEGIN;
CREATE TABLE temp AS SELECT DISTINCT * FROM table;
DELETE FROM table;
INSERT INTO table SELECT * FROM temp;
DROP TABLE temp;
END;

なんてしないとダメなんでしょうか?

207 :nobodyさん:02/03/13 16:51 ID:JEuVnqmD
oidを使えばなんとなかる。

208 :nobodyさん:02/03/14 06:59 ID:k3DW28WH
PostgreSQLに画像を格納したいんだけれど、どうすんの?
で、それをphpから読み出したいんだけど?


209 :nobodyさん:02/03/14 07:59 ID:???
>>208
ラージオブジェクトで検索すれ

210 :nobodyさん:02/03/14 19:18 ID:fh47mHav
>>208
PHP マニュアルと、Postgres のマニュアルを読もう。

読み出しについてだけヒント。
SQL はトランザクションブロック内に。
pg_loexport() でSQL 実行結果から切り出す。

211 :nobodyさん:02/03/14 21:43 ID:k3DW28WH
>>208
>>209さんありがとうございます。

マニュアル読んでも、よく解らなかったので、ラージオブジェクトを
扱っている書籍等、ありましたらお教えください。

ってゆうか、今INSERTの所でつまずいています。

212 :nobodyさん:02/03/14 22:54 ID:???
>>211
質問時の鉄則。
「何が」わからないのかを書く。
「やったこと」を書く。
「どのように」うまくいかないのかを書く。

213 :nobodyさん:02/03/15 19:01 ID:UO4e/HO0
初心者的な質問スマソ。
Postgres7.2なんですけど
createdb test
でデータベースtestをつくり
psql test
として
create user hoge with password 'hoge'
としてユーザhogeを作成しました。
この状態でCommonSQLEnvironmentで接続しようとすると
認証に失敗して接続できません。
ユーザ名hoge、パスワードhogeです。
ちなみにpg_hba.confは次のようにしてます。
host all 192.168.5.11 255.255.255.255 crypt
IPはもちろん自分のIPです。
何かとてつもない勘違いでもしてるんでしょうか?

214 :nobodyさん:02/03/15 19:47 ID:???
>>213
「CommonSQLEnvironmentで接続」って何?
API直で使ってるとか何か?

215 :nobodyさん:02/03/15 20:53 ID:pbklnejV
>>214
これです。
http://www.hi-ho.ne.jp/tsumiki/

216 :nobodyさん:02/03/15 23:21 ID:???
>>213
Grantしていないのでは?


217 :nobodyさん:02/03/16 11:26 ID:???
>>216
特定のテーブルに対してはしてます

218 :nobodyさん:02/03/16 12:15 ID:???
>>217
エラーlog見れ。

219 :nobodyさん:02/03/16 14:11 ID:???
>>218
[1] FATAL 1: Password authentication failed for user "hoge"
としか出てません

220 :nobodyさん:02/03/17 03:21 ID:???
>>217
一度psqlでhogeユーザになってログインしてみては

221 :nobodyさん:02/03/17 14:52 ID:bGzRpwXX
ちょいと質問なんですが、PHP+Postgreでユーザー登録の仕組みを作ってます。
で、ユーザー名(text)は大文字/小文字区別しなくて重複させたくないので、
(たとえば、"Hoge"がもう存在したら"hoge"も"HOGE"も弾きたい。)
select username from userdata where username ~* '$username' で
重複を探しています。
usernameに+や?や*を使った場合エラーが出てしまいます。
あらかじめPHPのquatemetaでバックスラッシュはつけてあるのですが…
なんかうまい方法はないものでしょうか?


222 :nobodyさん:02/03/17 15:06 ID:???
>>221
>usernameに+や?や*を使った場合エラーが出てしまいます。

使用禁止にすりゃいいじゃん。ダメ?

223 :nobodyさん:02/03/17 15:16 ID:???
SELECT username FROM userdata WHERE lower(username) = lower('$username');


224 :221:02/03/17 23:43 ID:bGzRpwXX
>>222,223
どうもありがとう。quatemetaはquotemetaでした。
>>222
usernameといっても、ニックネームみたいなもので
実際外人さんなんかでは記号使いたがる人もいるんで、
できれば制限はつけたくないんです。
>>223
これで使えそうです。日本語でも大丈夫ですよね?
(自分で試してみた範囲では特に問題なさそうでしたが)

225 :223:02/03/18 00:30 ID:???
>>224
quotemetaだけじゃなくてSQLのメタキャラクタも変換する事をお勧めする。
' → ''など


226 :206:02/03/18 21:58 ID:???
>>207
スマソ。いろいろやってみたけどわかんない。
oid を使って速度的に >206 で書いたのより速い SQL って書ける?

227 :nobodyさん:02/03/20 10:54 ID:txl31ITf
>>226
「物理的に」っつー意味が良くわかんねーのだが。

デリートフラグが付いたものを、物理的にデータファイルから消す、という意図なら、
バキュームするしかないだろう。

>206のやりかたでも、postgresの仕様では「物理的」には、削除できないと思われ。


DISTINCTをつかって取得されるデータセットの上で、重複行を見えなくする(一つ
にまとめる)ことを例えば「論理的に削除」と呼ぶとして、これに対しての、「物理的
に削除」(Delte文での削除)、と言っているのならば、単純に重複行をoid使って削
除すればいいだけだと思うが。

テーブルのサイズにも寄るだろうが、oidを使って、削除するものが、>206より速度
的に劣るとは、絶対に思えん。


もしかして・・・・oidの概念とか、oidの使い方がわからないんかい?


228 :その1:02/03/20 11:08 ID:txl31ITf
こんな感じかな。思いつき&未検証スマソ。

>create test (a integer);
CREATE
>insert into test values (1);
INSERT 123055 1
>insert into test values (2);
INSERT 123056 1
>insert into test values (1);
INSERT 123057 1
>select * from test;

a
---
1
2
1
(3 rows)

>select distinct * from test;

a
---
1
2
(2 rows)

>select oid, a from test;

oid | a
-------+--
123055 | 1
123056 | 2
123057 | 1







229 :続き:02/03/20 11:09 ID:txl31ITf
>delete from test where a=1 and oid<>(select max(oid) from test where a=1);
DELETE 1

>select * from test;
a
---
1
2
(2 rows)

>select oid, a from test;

oid | a
-------+--
123056 | 2
123057 | 1
(2 rows)


230 :206:02/03/20 11:09 ID:OKaF+07y
>>227
スマソ、後者。

DELETE FROM table WHERE oid = 重複

の「oid = 重複」の書き方がわかんないんす。
oidについては知ってるツモリ。
それとも、漏れ、わかってねぇ?

231 :206:02/03/20 11:12 ID:OKaF+07y
おう、カキコしてるあいだにサンプルが。THX。

でもこの消したい行がわんさかあるんですわ。
サブクエリとか使いまくったら何とかなるかな。。。

232 :227(=228=229):02/03/20 13:46 ID:txl31ITf
>>206
このサンプル、ちゃんとサブクエリ使っておいた。
oid最大のものだけ残して、あとはすっかりきれいにしてくれるはずだ。

233 :227:02/03/20 14:26 ID:txl31ITf
>206
>232では、勘違いしてた。削除対象そのものがたくさんあるって事だね。
うまいこと工夫してサブクエリ組み合わせるのもいいが、
次のようなファンクションを核のも手だぞ。

CREATE FUNCTION testfunc() RETURNS INTEGER AS '
DECLARE
rs RECORD;
va INTEGER;
BEGIN
FOR rs IN SELECT a FROM test GROUP BY a HAVING count(*)>1
LOOP
DELETE FROM test WHERE a=rs.a AND oid<>(SELECT MAX(oid) FROM test WHERE a=rs.a);
END LOOP;

RETURN 0;

END;
' LANGUAGE 'plpgsql';

plpgsql使ってるけどな。ファンクションの返り値は適当に工夫しる。

234 :nobodyさん:02/03/22 08:23 ID:???
7.2 にした人、バキュームしてる?

235 :nobodyさん:02/03/25 00:06 ID:n+2iUXgj
postgreである文字列を検索するとき、
LIKE句使うのと、正規表現使うのでは、どちらの方がパフォーマンス的に
良いのでしょうか。

236 :nobodyさん:02/03/25 00:23 ID:hKhhq3k3
LIKE

237 :nobodyさん:02/03/25 00:39 ID:???
>236
うそを言っちゃダメ!
Learning PostgreSQL という参考書にちゃんと書いてあるYO!

P224-225
「PostgreSQLでは、LIKEや正規表現の検索にインデックスが使われないため、
検索速度が劣化します。前方一致検索だけは例外で、この場合だけはインデックス
が使われて高速検索が可能になります。」


238 :235:02/03/25 01:27 ID:n+2iUXgj
>>236-237
ありがとうございますた。

239 : :02/03/25 01:30 ID:t/0Pfn5b
PostとMyってどっちが使えるの〜。
Oracleと比較した場合はどうなる?
教えてちょーだい!


240 :nobodyさん:02/03/25 02:23 ID:Tru1yM6S
商用RDBとの比較って難しいんじゃないの?
利用目的にもよると思うけど。
とりあえず中小規模の社内システム程度なら、
オラ来る使う必要無いケースなんて多いっしょ。

241 :Dream ★:02/03/25 02:38 ID:???
>>239-240
ビンボ人としては、そういう比較できるのがうらやましいです。
お金あるんだったら有無を言わずOracleがいいと思います。
トラブルの時や、コーディング行き詰まったら痛感すると思います。

242 :nobodyさん:02/03/25 02:43 ID:???
確かに、サポートが気軽に使えるのは安心。
OpenSourceでも、意外とWebでサポートに近いくらいの情報集められたりするけどね。
情報収集力も、スキルのうちってか。

243 :nobodyさん:02/03/25 02:49 ID:???
この記事は、なかなか興味深い。

http://japan.internet.com/linuxtutorial/20020219/1.html
「基幹業務にオープンソースの DB は使えるか」から抜粋。
------------------------------------
もうひとつ、われわれ主催者である OSDN のネットワークには非常に多くのサイトがある。
OSDN.com をはじめとして Slashdotスラッシュドット、SourceForge、Freshmeat、Linux.com などの
ほとんどのサイトでバックエンドで動いているのは MySQL だ。特に、Slashdot や SourceForge では
非常に多くのアクセスがあり、しかもほとんどのデータもメッセージもシステムごと DB に格納されているので
非常に大きな負荷がかかるが、スムーズに動いている。

Slashdot のシステムはオラクルでも PostgreSQL でも動くが、 MySQL ほどのスピードが実現できない。
Slashdot は毎月4000万 PV 以上あり、登録ユーザーが25万人いる。 Web サーバーが8台、
DB サーバーは1台だけある。 Web サーバーにはいつ落ちてもおかしくないような負荷がかかっているのだが、
リクエストを受ける MySQL の DB サーバーはいつもスムーズに動いている。

244 :Dream ★:02/03/25 03:03 ID:???
>>243
チューニングする人の腕とか、カスタムチューンの話抜きだから、
ちょっと間引いて聞きたい内容ですけどね。
なるほど〜って思うところもありました。

245 :nobodyさん:02/03/25 14:29 ID:NfHuoItu
PostgreSQLとmySQLの比較。
比較しがたいもの、Linux DBMS パート3--1
http://japan.internet.com/linuxtutorial/20001216/1.html
>真の RDBMS が必要なら PostgreSQL を選択するしかない。実際のパフォーマンス
>が重要なら、小規模なシステムほど良い結果を得られるだろう。特にデータベースへ
>のアクセスが単純でほとんど自動的である場合はそうだ。
>mSQL と MySQL は、このような理由で Web データベース システムとして宣伝されている。

トランザクション機能をとりあげて、PostgreSQLに分があるか、のような言い方をしてる
ともとれる。
…が、そもそもそこまでの機能が要されるものが果たしてどれくらいWebで存在
するのだろうか?
おそらくまっとうな正規化すら要求されていないのでは?と想像。


246 :nobodyさん:02/03/25 14:32 ID:???
Web系なら、速度の点でPostgreSQLよりはMySQLだろ。

247 :nobodyさん:02/03/26 04:35 ID:DXFNnhOw
 MySQLはSELECTのみ頻発するサイトならいいが、イントラ系などなら自動的に
PostgreSQLだと思われ。せこいけど、企業ポータルなどではMySQLはライセンス
料かかりそうだし。

248 :nobodyさん:02/03/26 11:30 ID:eWERFRsP
>>247
>MySQLはライセンス料かかりそうだし。

これ払っていないとこ多そうだね。

249 :nobodyさん:02/03/26 14:50 ID:pCSwfjmM
必要ないのかもしれないんだけど
テーブルのカラム名の順番変えたいんだけど
方法ってありますか?
手持ちの完全攻略ガイドに無いので、存在しないのかなと思ったり思わなかったり。
select * from table の見栄えが悪いの気持ち悪い・・・


250 :nobodyさん:02/03/26 15:20 ID:???
>249
かえれば?


251 :nobodyさん:02/03/26 16:10 ID:pCSwfjmM
>>250
どうやって?

252 :nobodyさん:02/03/26 16:11 ID:???
>>251
delete shite tsukurinaosu

253 :nobodyさん:02/03/26 16:11 ID:pCSwfjmM
>>252
辛いなぁ…

254 :nobodyさん:02/03/26 16:34 ID:???
丸ごと別データに取って、一度消してからインポートし直したら?
そのくらいのスクリプト朝飯前でしょ?

255 :nobodyさん:02/03/27 01:41 ID:dp2z17TY
>>248
MySQL って今でも商用利用にお金かかるの?
無償で使えるようになったと聞いたんだけど・・・?

256 :255:02/03/27 01:47 ID:dp2z17TY
調べてきた。
MySQL は GPL と 商用ライセンスのデュアルライセンスなんだね。
http://www.softagency.co.jp/order/license.html

ちなみに、Postgres は BSD ライセンス。

257 :nobodyさん:02/03/27 02:08 ID:???
うーむなるほど、たとえばJavaでTomcat使った製品を、MySQLバンドルして売るなんて場合は商用ライセンスになるわけか。

じゃあたとえば、MySQLを含まない製品を、製品動作に必要なMySQLのDBのみ含めて販売した際に、
MySQLの導入を無償のサービスとして行う場合は、商用ライセンスに該当する?


258 :nobodyさん:02/03/27 02:13 ID:???
>>257
>MySQL が無くては絶対に動作しないものを MySQL サーバーと併せて売る場合。
に該当すると思われ。

259 :nobodyさん:02/03/27 02:28 ID:???
>>258
サンクスコ。
やはり選択肢としては、ポスグレってことか・・・

260 :258:02/03/27 02:36 ID:???
258 ではああかいたけど、やっぱ微妙だなー。
>257は、MySQL サーバと併せて「売ってる」ワケじゃないな。
該当しないかも。

・MySQL のサポート、インストールや管理を有料で行った場合。
これは売り切りであとはサポート無し、という契約なら該当しないかな。
一切のサポート無しの契約なんて、普通しないもんね。

261 :nobodyさん:02/03/27 02:46 ID:???
>>260
難しいんだねぇ・・・
ま、とりあえずビジネスベースでMySQL使うなら、大人しくライセンス買っといたほうがいいってことだね。
顧客的にもそのほうが後々、幸せだろうし。

262 :nobodyさん:02/03/27 02:55 ID:???
>>260
売ったあとの信用問題とかあるしね。
金で解決できるのであれば。

263 :nobodyさん:02/03/28 04:46 ID:xQXjNFYd
 MySQLは、ストアドとトランザクションとWAL(ノンアーカイブドREDO
ログ)の実装は終わったのかな?

264 :hogehoge:02/04/08 13:09 ID:AYJuT8cH
pgsql-jpMLで話題になってる「pg_dumpのデータ欠落」問題って
デカイ話だと思うんだけど、なんでみんな冷静ですか。
MLにも出てるけど
ttp://www.sankyo-unyu.co.jp/Pool/PostgreSQL.htm
ここのパッチでみんな解決したのかなあ。

265 :nobodyさん:02/04/22 00:13 ID:1DFRB74b
結局PostgreSQLとMySQLと両方勉強するはめになるのね、、、


266 :nobodyさん:02/04/22 00:30 ID:OmlBepHH
>>265
そんなもんだよ。
私はPostgres と Oracle と MySQL と InterBase と パラドックス使ってる。


267 :nobodyさん:02/04/22 14:06 ID:7LCMI0nt
PostgreSQL-7.2.1 と Access2000 接続がうまくいきません。
以下のようなエラーがでてしまいます。


ODBC--呼び出しが失敗しました。
Error while executing the query.
ERROR: tablename: Permission denied. (#7)


PostgreSQLは Redhat Linux 7.2 で動かしていて、
psqlでの操作、table作成、
同マシン上でのJDBC経由での操作は問題ありません。
また、Access2000でpsqlで作成したtableの一覧はでてきており、
テーブルのリンクは作成できてます。
しかし、そのテーブルのリンクを開こうとすると、上記のエラーが
出てきてテーブルの中身は見ることができません。
何が原因なのでしょうか?


268 :nobodyさん:02/04/22 19:57 ID:???
パーミッションが原因です

269 :267:02/04/22 21:01 ID:???
ネット上に転がってたdllを使ったらうまくいきました。


270 :nobodyさん:02/04/23 16:58 ID:ScEW9CB6
マルチバイトって言うか日本語の検索なんですが
name | ocupation
鈴木一郎 | 野球選手
鈴木三郎 | タバコ屋
鈴木一郎 | 野球選手
鈴木次郎 | 魚屋
鈴木宗男 | 政治家
に対して
SELECT * FROM a_table WHERE name = '鈴木一郎';
した場合、全部出て来ちゃいます。
LIKE や "~" など正規表現では問題ないのですが。このためGROUPもできないのれす。
7.1の時は自分の環境じゃ起きなかったのに7.1.3からそうなるようになっちゃったです。
今まで放っておいたんですが、やっぱり治したい…。もちencodingはEUC_JPなんですけど。

271 :270:02/04/23 17:25 ID:ScEW9CB6
今、自分でちょっとやってみたんですが、どうも
例えば 鈴木喜三郎、田中一郎、大林素子を含むレコードに
鈴木一郎をSELECTした場合、鈴木喜三郎以外、全部出る…
田中一郎をSELECTした場合、 鈴木喜三郎以外、全部出る…
どうもSTRING長しか見てないような気がする…

272 :nobodyさん:02/04/23 22:27 ID:us8x58hp
>>270
 環境作って試験しましたがなりません。
 実験手順は以下です。

1.PostgreSQL 7.13 を準備
2.SQL: create table house (name varchar(100),occupation varchar(100));
3.EUC/TAB区切りで >>270 の一覧を作成
4.\copy でインポート
5.SELECT * from house where name='鈴木一郎';

 もし本当なら PostgreSQL Users-ML の方にポストするべきです。
 入力した日本語文字コードがEUCかチェックを希望。

273 :nobodyさん:02/04/23 23:07 ID:???
MySQL-Max4.0.1がこんなに凄いとは知らなかった...
http://www.mysql.com/news/article-91.html
http://www.eweek.com/article/0,3658,s=708&a=23115,00.asp
http://www.eweek.com/slideshow/0,3018,sid=0&s=1590&a=23120,00.asp


274 :nobodyさん:02/04/24 00:57 ID:AExlUipD
>>273
 トランザクションも、オンライン・アーカイブ・ログも、ストアド・
プロシージャーも無いデーターベースを凄いといわれても・・・。

275 :nobodyさん:02/04/24 02:28 ID:???
あれ? Maxはトランザクションはあると聞いたけど。

276 :nobodyさん:02/04/24 10:40 ID:zrCVc2f4
>>274
MySQL-Max(InnoDB)はトランザクションに対応してますよ。
コンパイル時にそう設定されているだけなので、MySQLとMySQL-Maxは
お好みに合わせて使い分けることになると思います。

277 :nobodyさん:02/04/24 10:42 ID:zrCVc2f4
>>274
ストアド・プロシージャーがなくても困ることはほとんど無いですよ。
それに頼る設計方針を見直すべきだよ。

278 :nobodyさん:02/04/24 10:46 ID:zrCVc2f4
>>274
ベンチマークにエントリさえもされないPostgreSQLの立場って。

279 :nobodyさん:02/04/24 12:48 ID:PorNOKJ/
 有料の低機能DBのMySQLなんか使えんと思われます。
 PostgreSQL使いましょう。

 まあ、MySQLの劣っているところも理解できない厨房であれば、
利用もやむを得ないけど。

>>276
 トランザクションを利用すると、劇的に遅くなるよ。
 一気に処理が複雑になるからね。だからMySQLの特徴が消える。

>>277
 複雑な演算で速度出すときには必要です。

280 :270:02/04/24 14:51 ID:YiGTDcvn
>>272
ありがとうございます。お手数を感謝いたします。
入力した文字コードもEUCなんですが、PostgreSQL Users-ML に
ポストするしかないのですか。トホホ。

281 :nobodyさん:02/04/24 15:18 ID:???
MySQL って有料なの?

282 :nobodyさん:02/04/24 15:44 ID:PorNOKJ/
>>281
 商用利用は有料。詳細は調べてくれ。

283 :nobodyさん:02/04/24 17:40 ID:zrCVc2f4
>>282
GPL?

284 :nobodyさん:02/04/24 17:42 ID:zrCVc2f4
>>279
何か資料ありますか? 無いんでしょ?
また、トランザクション入れてもほとんど変わらないですよ。
また、複雑な演算処理の例を教えてください。


285 :nobodyさん:02/04/24 17:44 ID:zrCVc2f4
>>279
WEB+DB PRESS の vol.4 の記事読んでみな。

286 :nobodyさん:02/04/24 17:45 ID:zrCVc2f4
>>279
Delphi6 や Kylix や C++Builder6 のdbExpressでは、MySQLへの接続は
サポートされているけど、PostgreSQLへの接続はサポートされていない
んですよ。なんとかしてくれ。

287 :nobodyさん:02/04/24 18:29 ID:zrCVc2f4
Googleに聞きました

What is the most popular RDBMS? Is it MySQL?
約3,410件

What is the most popular RDBMS? Is it PostgreSQL?
約2,860件

MySQL beats PostSQL. :-)

288 :nobodyさん:02/04/24 20:36 ID:/PnzmLOG
初歩的な質問で申し訳ないんですが、データがあれば更新して、なければ挿入す
るって簡単に書けないのでしょうか ?

例えば、社員名簿のアプリケーションで、社員番号と社員データを元に更新/挿入
をやりたいんです。今は、更新してみて更新されたタプルが 0 だったら、改めて
挿入してるんですけど、1つの SQL で書けないのでしょうか ?

289 :nobodyさん:02/04/24 20:43 ID:???
おらにはUPSERTってのがあるって聞いたけどな。

290 :288:02/04/24 21:19 ID:???
う〜〜〜む、UPSERT は Ora9i でサポートかぁ...。じゃあ、Ora9i
でって...、いくわけないですよね。ほとんど数人でしか使わないローカ
ルデータベースだしねぇ。まあ、Ora8x でサポートしていないぐらいだか
ら、大体の DB じゃサポートしてなさそうですね。心おきなく、今までの
方法 (Update + Insert) で行きます。ありがとうございました。

291 :nobodyさん:02/04/25 11:06 ID:???
制限か何かで 120996 という数字に思い当たるフシのある人います?



292 :nobodyさん:02/04/25 14:58 ID:e1QGMeHX
>>290
 ストアド・ファンクションをPLPGSQLで書けば代わりになります。

1.挿入/更新対象をSELECTする
2a.存在 →
2b.非存在 →

 PostgreSQLオブジェクトは複雑になりますが、処理速度は向上します。
 プログラム側で2回のクエリーが1回にで済むからです。
 またプログラム側の処理が単純になりますね。

293 :nobodyさん:02/04/29 00:48 ID:oAtRhIR1
ストアドいいんだけどなぁ。。。

関係ないけど、Ora系の業務だと、ストアドで10Kとかあるんだよね、よく。
デバッグ環境ももろくにないから泣きそう泣きそう…。


294 :nobodyさん:02/05/03 21:41 ID:/0wZrz3p
>>279,292

Postgresのファンクションって、Oraなんかと違って、
コンパイル(?)して無いよね?

実行時のスピードって、向上してない気がするんだけどな、俺。
それとも単に、俺のクエリがへぼイだけ?


#久々に覗いたら、にぎわってるなココ。



295 :名無しさん@XEmacs:02/05/03 22:11 ID:???
でも、C言語でも書けるし。
特に処理が重くなりそうな場合、Cで書くのもいいと思いますヨ。


296 :nobodyさん:02/05/12 03:17 ID:bKfXEgEZ
CSE(Common SQL Environment)を使っているのですが、
postgresのテーブルの定義書を出力しても、
出力されたExcelファイルの中に、外部キーに関する情報が含まれていません。
これは、CSEのバグ(仕様?)なんでしょうか?
あるいは自分の設定かなにかが違うのでしょうか?

297 :nobodyさん:02/05/12 04:17 ID:RwG45MrU
>288
MySQLにはreplace intoというのがあるよ

298 :nobodyさん:02/05/12 20:30 ID:jWhbjITO
>>249 亀レスだが、スクリプトなんぞいらん。さくっとSQL使え

create table moto (c2 int,c1 int);
create table shin as select c1,c2 from moto;
drop table moto;
alter table shin rename to moto;

299 :nobodyさん:02/05/12 22:38 ID:q4IRLeqO
>>298
 制約が消えませんか?

300 :nobodyさん:02/05/13 14:00 ID:bpGvMvHb
>299 じゃあ、ちゃんとしたCREATE TABLEを書いて、
INSERT INTO shin SELECT c1,c2 FROM moto
でいいんじゃないの。
ALTER TABLEで地道に制約付け直すでも良し。
SELECTで指定できるのに列の順序が気になる程度のもんなら、
別に大した設計してないだろ、と煽ってみるテスト(w

301 :299 (!=249):02/05/14 01:45 ID:VEi3hWaX
>>300
煽りに乗ってくれてありがとう。

302 :300:02/05/14 04:06 ID:???
>>301 どういたしまして。

303 :nobodyさん:02/05/14 10:27 ID:dvbYPP4R
質問なんですが、PostgreSQLで以下のVIEWを作成します。

CREATE VIEW v_name AS
SELECT * FROM TABLE WHERE start_date<='TODAY'

開始日が本日もしくは本日以下の範囲を取得するというものです。
通常のselectでは問題なく取得できますが、
例えば日付が明日、明後日となるとその範囲のデータが表示されな
くなります。
で、viewをまた作成しなおすと表示されます。なんで??
TODAYはview作成時の日付で固定となってしまうのでしょうか?

お願いします。

304 :名無しさん@XEmacs:02/05/17 09:54 ID:???
curret_dateを使うべきなのでは?
todayとかnowは、作成時点での日時に固定されます。

http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/datatype-datetime.html


305 :nobodyさん:02/05/17 11:03 ID:fkHus637
ウェブサーバ・データベース利用者に、バックアップ・リストア作業をする機構を作るには、
どうすればよいでしょう。

: 専用データベースクライアントを作る
最近じゃ JDBC とかデータベースを簡単に利用できる API があるので、いいと思う。
: Web 上で、ファイル送信のフォームを用いてCSVファイルを送信してもらい、しかも PHP の system 関数を起動させる
スクリプトを書く
なぜか、俺がやってみたところ、起動しなかった。「system('./thread.rb > /dev/null &'); 」


306 :名無しさん@XEmacs:02/05/17 20:21 ID:???
pg_dump/pg_restoreをするCGIを作ればいいんちゃうん?

307 :nobodyさん:02/05/19 18:43 ID:khVJsytm
C言語からPostgreSQL(7.2.1)を操作したくて、http://www.atmarkit.co.jp/flinux/rensai/postgres03/postgres03.html

ここを参考にソースをコンパイルしてみることにしました
PHPやpsqlからは、操作できたので、postgreSQLはきちんとインストールできてるものと思ってました。

しかし、いざコンパイルしてみると
dbconn.c:6:22: postgres.h: そのようなファイルやディレクトリはありません
と出されたので、postgreSQL7.1.3のソース元から、postgres.h をコピーしてきて

またコンパイルしてみると、更に何かが足りないとでます。
ムカツイタので、includeディレクトリィーごと、全部、パスが通ったところにインストールしたんですが、それでも、最終的に

/usr/local/pgsql/include/postgres.h:48:24: utils/elog.h: そのようなファイルやディレクトリはありません
/usr/local/pgsql/include/postgres.h:49:26: utils/palloc.h: そのようなファイルやディレクトリはありません

とゆうのがでます。何かインストール段階で間違ってるところがあるでしょうか?
インストール手順は、普通に、./configure make make install です


308 :nobodyさん:02/05/19 18:49 ID:a+gm9DOh
PHPの pg_last_oid() (旧 pg_getlastoid()) みたいな動作を
Javaでできないんかな?


309 :名無しさん@XEmacs:02/05/19 22:08 ID:???
>307
> C言語からPostgreSQL(7.2.1)を操作したくて、

> postgreSQL7.1.3のソース元から、postgres.h をコピーしてきて

そこがダウトです。

ソースから手で取ってくるのではなく、インストールした /usr/local/pgsql/include に
あるはずです。

そのプログラムをコンパイルするときに、gcc に -I/usr/local/pgsql/include という
オプションを追加してください。


310 :名無しさん@XEmacs:02/05/19 22:23 ID:DDSBJIFh
>308
7.2のjdbcからは、ResultSetクラスにgetLastOID()というメソッドが
追加されています。これでお望みの機能を得られるかと思います。


311 :308:02/05/19 23:39 ID:a+gm9DOh
>>310
どうもです。
org.postgresql.ResultSet のドキュメントに目を通さずに、
java.sql.ResultSet のドキュメントばっかり眺めてたから、
てっきり不可能なことかと思ってた。


312 :nobodyさん:02/05/21 06:09 ID:A7Xa03Vw
>>308
どうもありがとうございます。
実際コンパイルするときは、gcc -o test1 test1.c -I$POSTGRES_HOME/include -L$POSTGRES_HOME/lib -lpq -lnsl -lcrypt こんな感じでコンパイルしています。
(環境設定で、POSTGRES_HOMEのパスは設定してあります)

それで、/usr/local/pgsql/include を見てみると以下の構成になっています。

c.h ecpgerrno.h ecpgtype.h lib libpq libpq-int.h pg_config.h postgres_ext.h pqexpbuffer.h sqlca.h
config.h ecpglib.h internal libpgeasy.h libpq-fe.h os.h pg_config_os.h postgres_fe.h sql3types.h

見てみると、コンパイルする時に必要な、postgres.hや、utils/ 以下のディレクトリなんかも見当たりません。

実際 http://www.atmarkit.co.jp/flinux/rensai/postgres03/postgres03.html ここのページの真中当たりを見てみると、
include "postgres.h"
include "libpq-fe.h" が必要と書いてあります。libpq-fe.hはあるのですが、postgres.hがないことから、>>307のような行為をしてみたのです。



313 :名無しさん@XEmacs:02/05/21 21:26 ID:???
ていうか、postgres.h ってインクルードする必要性を感じないんだけど。
おいらは postgres.h インクルードしてないよ。
libpq-fe.h はインクルードしてるけど。

314 :名無しさん@XEmacs:02/05/21 21:27 ID:???
あ、@ITの記事は6.5.3ベースだから細かいところが結構変わってると思う。


315 :312:02/05/22 12:56 ID:8kY9gZMf
>>313
解決しました。
インストール段階で、明示的に
gmake
gamke install
gmake install-all-headers
と打ち込んでやる必要があったみたいです

このように打つことで、全部のヘッダファイルがインストールされたみたいです。
いろいろアドバイスどうもでした。


316 :nobodyさん:02/05/27 11:39 ID:3Jjx1/hO
7.2からPL/pgSQLで、REFCURSOR使えるから複数行を戻り値にできるっていうので
試してみたんだけど、これって作成した関数を普通のSELECTで使えないものなの?
サンプルだとわざわざFETCHしてるし。やりたいのは

CREATE OR REPLACE FUNCTION gethoge(int4)
RETURNS REFCURSOR AS '
DECLARE
ret REFCURSOR;
BEGIN
OPEN ret FOR SELECT * FROM hoge WHERE c1 > $1;
RETURN ret;
END;
' LANGUAGE plpgsql;

SELECT gethoge(4);

ってしたら複数行返してくれると嬉しいんだけど。SQL関数のSETOF使うと
妙にキャストしないと駄目だし。誰か詳しい人情報きぼんぬ。

317 :nobodyさん:02/05/29 02:44 ID:VbNebk4I
取り敢えず、サンプルどおりだと次のようになる。

CREATE OR REPLACE FUNCTION gethoge()
RETURNS REFCURSOR AS '
DECLARE
ret REFCURSOR := ''r1'';
BEGIN
OPEN ret FOR SELECT * FROM hoge;
RETURN ret;
END;
' LANGUAGE plpgsql;

BEGIN;
SELECT gethoge();
FETCH ALL IN r1;
END;

で、本当は>>316に書いたように
SELECT gethoge();
だけで結果を取得したいんだが、詳しい人引き続ききぼんぬ。

あるいはJDBCから
BEGIN;
SELECT gethoge();
FETCH ALL IN r1;
END;
を実行した結果をResultSetに入れる方法でもOKです。

318 :nobodyさん:02/05/29 04:06 ID:???
できました。

CREATE OR REPLACE FUNCTION gethoge()
RETURNS REFCURSOR AS '
DECLARE
ret REFCURSOR;
BEGIN
OPEN ret FOR SELECT * FROM hoge;
RETURN ret;
END;
' LANGUAGE plpgsql;


319 :nobodyさん:02/05/29 04:07 ID:???
呼び出すJavaのコード

import java.sql.*;

public class test {
public static void main(String[] args) {
try {
Class.forName("org.postgresql.Driver");
} catch (Exception ex) {}

try {
Connection conn =
DriverManager.getConnection(
"jdbc:postgresql://localhost/iruka",
"iruka",
""
);

Statement stmt = conn.createStatement();
ResultSet rs;


320 :nobodyさん:02/05/29 04:08 ID:???
String sql = "begin; select gethoge()";
rs = stmt.executeQuery(sql);
rs.next();
String cursorName = rs.getString(1);
sql = "fetch all in \"" + cursorName + "\"; ";
rs = stmt.executeQuery(sql);

int c1;
String c2;

while(rs.next()) {
c1 = rs.getInt("c1");
c2 = rs.getString("c2");
System.out.println(c1 + " : " + c2);
}
sql = "end;";
stmt.execute(sql);
rs.close();
stmt.close();
conn.close();
}
catch(SQLException ex){
ex.printStackTrace();
}
catch(Exception ex){
ex.printStackTrace();
}

}
}

321 :nobodyさん:02/05/31 15:27 ID:VOysfiXS
おい、お前ら pg_log が800Mを超えて困っています。
どうしたらいいんですか。Version は6.5.3です。
調べた範囲では消すとまずそうなのですが....
引き継いだシステムなので、バージョンアップとかも
ためらわれる...


322 :nobodyさん:02/05/31 19:22 ID:???
ディスクを増設してシンボリックリンクで流す。

あるいは pg_dumpall して $PGDATA 削除して initdb し直し。


323 :nobodyさん:02/05/31 19:30 ID:???
>>322
ありがd
initdb してみるぽ。
データ飛びませんように。南無南無。



324 :nobodyさん:02/05/31 22:21 ID:???
いや、データ飛びませんようにっつーか、
データ消して作り直しってことですヨ!
バックアップ取って。

気をつけてくださいヨ。おながいします。

325 :18:01 2002/06/02:02/06/02 18:05 ID:KL9d9Dk5
postgresql.orgつながらない(?)よぉ・・・
pingもとおらん・・・

cvsupしようと思ったのにぃ〜


326 :18:14 2002/06/02:02/06/02 18:19 ID:KL9d9Dk5
復活した・・・

327 :nobodyさん:02/06/04 15:01 ID:???
すまそ、PHPと重複投稿になってしまうが、
これって全く求人ないんだけど、皆さんは何の仕事してるの?
WEB系って単純なHTMLの単価が低い仕事ならよく見かけるけど、
そもそも金のあるクライアント・つまり金になる仕事で
フリーのRDB使うような仕事って成り立つものなの?

328 :nobodyさん:02/06/04 16:56 ID:???
>>327
PostgreSQLで金になる仕事してるが何か?


329 :nobodyさん:02/06/04 21:26 ID:???
というか、RDBMSのライセンスに金がかからないぶん、
人間に金かけられるようになると思うのだが。


330 :nobodyさん:02/06/14 23:50 ID:???
最近データベースを構築する必要があって postgresql を perlで叩く方法を1から
勉強しているんだが 何処を探してもphpの記述しか無いような気がするんですが
DBD::Pg は 一般的ではないんでしょうか?

ttp://member.nifty.ne.jp/hippo2000 は見たけど これくらいしか無いような気がする

あと具体的な質問
新しいtableを作るには
my($sql) = "CREATE TABLE suitedb (clumn_1 varchar(16))";
などとして
$dbh = DBI->connect("dbi:Pg……
とコネクトして
$que = $dbh->prepare("$sql");
$que->execute();
$que->finish();
とするように SQL文を丸々書くんですよね。

ttp://web.arena.ne.jp/suite/support/manual/cgi-db


331 :nobodyさん:02/06/15 02:12 ID:???
>>330
情報が少ないのはマニュアル見れば十分だからでは。

332 :nobodyさん:02/06/15 08:03 ID:ovPoj3sh
>>330
 マニュアル(man)に詳しく書いてある。

 $dbh->prepare ではなくて $dbh->do("CREAT TABLE ...");を使うほうが、
よいと思われ。結果が返って来るわけでないし、DDLは自動でCOMMITされる。

 あと $dbh->disconnect; を忘れるとエラーが出る(気がした)
 とにかく試すことだ。

333 :初期不良:02/06/15 20:17 ID:Imc6xOen
なぜかテーブルの情報とかを取得する SQL が用意されてない
PostgreSQL ですけど、ML とかに書いてあった通り、
psql -E で \d とか \d table とかやって一応フィールド名と
フィールドタイプの取得はできるようになりました。
けど、プライマリキーがどのフィールドかってのがわからないんです。
pg_class とかトリガーとか調べれば... とか思っていろいろ調べて
みたんですが力尽きてしまいました。

プライマリキーがどのフィールドかわかる SQL って誰か書いた
ことありませんか?

334 :nobodyさん:02/06/16 02:06 ID:8EBDLVWp
Yahoo!とかFreeMLみたいに、階層にページをわけて、
「aaa > bbb > ccc」みたいに現在地を表示させるには、
postgresだと、データをどうやって持たせるのが得策(定石?)なのでしょうか?

335 :332:02/06/16 10:42 ID:IP4vfeht
>>333
 反則技としては pg_dump を用いて、CREATE TABLE しているところを
確認すればよい。以下のような文が見つかるはずだ。

Constraint "initial_error_no_pkey" Primary Key ("initial_error_no")

>>334
 自己結合(プ

336 :nobodyさん:02/06/16 12:06 ID:O6K9M+cM
>334
3階層のフィールドを用意するだけ


337 :初期不良:02/06/16 17:29 ID:???
>>335
ありがと。なんかやる気出た。

338 :初期不良:02/06/16 17:41 ID:???
キタ━━━━(゚∀゚)━━━━ ?
select indkey from pg_index
where indisprimary=true and indrelid=(
 select oid from pg_class
 where relname = 'tablename'
);
これで int2 の配列が帰ってきて何番目のフィールドが
プライマリキーかがわかる。あってる?

339 :初期不良:02/06/16 17:44 ID:bMMKPpy6
さげてもた

340 :初期不良:02/06/17 09:59 ID:???
>>338
よく見たら \d tablename で出てくるインデックス(tablename_pkey 等)を
調べればわかることだったんだな...
\d tablename_pkey とすると出てくる。
unique の場合は tablename_fieldname_key のようなインデックスができるので
\d tablename_fieldname_key
とすれば unique なフィールドがわかる。
けど、テーブル名から調べる場合は前に書いたやり方の方が良さそうだな。
unique の場合はこうすればよし?
select indkey from pg_index
where indisunique=true and indisprimary=false and indrelid=(
 select oid from pg_class
 where relname = 'tablename'
);

341 :質問君Φ:02/06/19 11:01 ID:qIh4juAy
だれかシーケンスを自動作成するtriggerを作成するヒントくれ
insert delete updateの際に欠番なしでシーケンシャルに増減するような奴

作ってみたんだが、どうしても無駄な番号アトリビュートを使って
orderbyしてupdateするという陳腐な方法しか思いつかん
もっとスマートに出来るはずだ。
よろしこ

342 :初期不良:02/06/20 00:04 ID:???
>>341
ちょっと意味が分からんのだけど
serial で delete すると穴が空くけどそれを詰めたいって事?

343 :初期不良:02/06/20 00:05 ID:???
>>342
俺のも意味が分からんな...
serial 型のフィールドでシーケンスをつくるとって事ね。

344 :質問君Φ:02/06/21 13:36 ID:???
お前あたまいいいいいいいいいいいいいいいいいいいいいいいいい
そう言うこと


345 :初期不良:02/06/21 13:44 ID:???
>>344
どういうの作ったかみしてケロ

346 :nobodyさん:02/06/25 03:48 ID:XBDHwftN
データベース内に指定したものがあるかないかで処理を変えるプログラムを作ろ
うとしています。とりあえず以下のようなものができあがりましたが、もっと簡
単で効率のよい方法ってありますか?

selectrow_arrayref()よりもこの場合に適したものがあるんじゃないかと思って
訊いてみました。

use DBI;

$string = "文字列";

$dbh = DBI -> connect ("dbi:Pg:dbname=testdb", "a");
if ($dbh -> selectrow_arrayref("select * from images where url = '$string'")) { print "ある\n"; }
else { print "ない\n"; }
$dbh -> disconnect;

347 :nobodyさん:02/06/25 03:56 ID:???
>>346
もしそのあとに何かDBでするんだったらPL/pgSQLで書いたほうが
いいとは思うが、Perlからやるんだったらこうか?

my $dbh = DBI->connect(...);
my $sth = $dbh->prepare( 'SELECT 1 FROM images WHERE url = ?' );
$sth->execute( $string );
if( $sth->fetchrow_arrayref ) { # 多分$sth->rowsでも平気かな
print "ある\n";
} else {
print "ない\n";
}
$dbh->disconnect;

348 :nobodyさん:02/06/26 01:44 ID:WIsWhSE/
>>347
なるほど。
ああ…まだまだ勉強不足…。
ありがとうございました。

349 :nobodyさん:02/06/27 18:35 ID:eHTNEubk
インストールしてみたがまともに動いてるのかまったくわかりません。

php4とpostgresqlが入ってたらまともに動くという
超簡単な環境検証用スクリプトみたいなものありませんかね?
本当に小さいものでかまわないです。
php4とpostgresqlに詳しい方であっという間に作れる方いませんか?

350 :nobodyさん:02/06/27 21:37 ID:fDXVhhFf
>>439

まずは PHP を捨てるところからはじめよう。

351 :nobodyさん:02/06/28 00:10 ID:???
>>349
てめー、おちょくっとんか氏ね。

352 :nobodyさん:02/06/28 07:27 ID:xBL4mzWk
>349
逝ってよし

353 :CHANCE FOR EVERYONE:02/06/28 17:31 ID:hU48lsFK
インターネットは使い方次第で個の力を何倍もの力に変えることが可能です。
費用対効果で他の媒体にこれより優れたものは無いでしょう。
長い目で見ても素晴らしいネットワークビジネスの紹介!!
私たちの参加しているネットワークビジネスは 在庫をもつ必要がなく、
製造メーカーの製品を直接広めるものです。
私たちのグループは、製造会社の製品をHPとメールという媒体も活用して、
低価格、高品質なよき製品を広めようという集まりです。
流通コストを消費者に還元して製品を広めるというこのシステムは、
何人かの識者が本などで発言しているのを読んでみると、
人間的かつ将来有効なシステムを創っていける可能性の大きいものだと感じます。
実際、有名な大会社AT&T、GM、マスターカードなども採用しだしています。
興味のある人には、ぜひ参加して一緒にやってみましょう。
以下のホームページでの説明も御覧ください。
http://ailove22.fc2web.com/lpd/index.html

354 :nobodyさん:02/06/29 10:20 ID:???
>>353

>インターネットは使い方次第で個の力を何倍もの力に変えることが可能です。
>費用対効果で他の媒体にこれより優れたものは無いでしょう。

誰だって知ってる

>長い目で見ても素晴らしいネットワークビジネスの紹介!!
>私たちの参加しているネットワークビジネスは 在庫をもつ必要がなく、
>製造メーカーの製品を直接広めるものです。
>私たちのグループは、製造会社の製品をHPとメールという媒体も活用して、
>低価格、高品質なよき製品を広めようという集まりです。

禿げしく既出。

>流通コストを消費者に還元して製品を広めるというこのシステムは、
>何人かの識者が本などで発言しているのを読んでみると、
>人間的かつ将来有効なシステムを創っていける可能性の大きいものだと感じます。
>実際、有名な大会社AT&T、GM、マスターカードなども採用しだしています。

さらに既出のシステムだと自分で公言してるし…。

>興味のある人には、ぜひ参加して一緒にやってみましょう。
>以下のホームページでの説明も御覧ください。

ところで、2chにコピペすることは経営的に見て正解なのか?

355 :libpq:02/07/01 00:16 ID:???
libpq(PostgreSQL 7.2.1)を利用してWindowsのクライアントを作成中の者です。
マニュアルに目を通していると、PQconnectdb()のパラメータにrequiresslを
指定できるとあったのですが、Windowsのクライアントでこのパラメータを実際に
使用している方はいらっしゃるでしょうか?

356 :nobodyさん:02/07/01 10:01 ID:b4xBEoiz
データベースに保管してある、Perlのcrypt関数で暗号化した文字列を
参照してパスワード認証を行う方法を考えています。

以下のスクリプトだとうまくいくのですが…。

print "名前:\n";
$name = <STDIN>;
chomp $name;
$pwd = <STDIN>;
chomp $pwd;
$dbh = DBI -> connect ("dbi:Pg:dbname=testdb", "test_user");
$pre = $dbh -> prepare ("select password from test_list where name = '$name'");
$pre -> execute;
while ($i = $pre -> fetchrow_array) {
print "データベースに保管してあるパスワード\t$i\n";
if ((crypt ($pwd, $i)) eq $i) { print "OK\n"; } else { print "NG\n"; }
}
$dbh -> disconnect;

while文内のif文を、$dbh -> disconnect;文以下にもってくると
うまく処理されません。どうやらwhile文で使った$iは、$dbh -> disconnect;
した後は消去されてしまうようです。

$dbh -> disconnect;した後もスカラ変数や配列に代入された値を
そのまま保持する方法ってありますか?

なんか見当はずれの質問をしているっぽくて不安なんですけど…。

よろしくおねがいします。

357 :初期不良:02/07/01 14:10 ID:???
>>356
なんだか perl な話だが、$i = $pre -> fetchrow_array
って事は array が返ってきているわけだよな?
スカラーに入れるって事はリファレンスになっちまってないかい?
password しか select してないからそれでも使えるのかもしれないけど
本当は参照の代入じゃなくて @i に入れてきちんと値のコピーを取るべきだろね。
そしたら disconnect したあともコピーした方は残ってるでしょ。

358 :nobodyさん:02/07/01 15:01 ID:???
>>356
>while文内のif文を、$dbh -> disconnect;文以下にもってくると
の意味がよくわからんのだが、

$dbh -> disconnect;
while ($i = $pre -> fetchrow_array) {
print "データベースに保管してあるパスワード\t$i\n";
if ((crypt ($pwd, $i)) eq $i) { print "OK\n"; } else { print "NG\n"; }
}
→ $dbhをdisconnectした後にfetchrow_arrayを呼んでも無効

while ($i = $pre -> fetchrow_array) {
print "データベースに保管してあるパスワード\t$i\n";
}
if ((crypt ($pwd, $i)) eq $i) { print "OK\n"; } else { print "NG\n"; }
$dbh -> disconnect;
→whileを抜けた後は$iがundefになっているので比較しても意味なし

のいずれかでは?


359 :初期不良:02/07/01 23:18 ID:???
>>358
>whileを抜けた後は$iがundefになっているので比較しても意味なし
うう、これだぁね、たぶん。
俺の目が節穴だった...

360 :nobodyさん:02/07/03 23:21 ID:9oP/71OL
updateで、set total = total+100みたいな書き方をすると、
Warning: PostgreSQL query failed: ERROR: Unable to identify an
operator '+' for types 'varchar' and 'int4' You will have to
retype this query using an explicit cast in ***.php on line ***
と出て先へ進めません。何か間違ってますでしょうか。

361 :nobodyさん:02/07/03 23:31 ID:???
>>360
自分で書いてるじゃないか。きみはそれでもアメリカ人か?

362 :nobodyさん:02/07/04 00:45 ID:???
え〜と、なになに…。ばーきゃら型といんとふぉー型のどちら向けに'+'を使えば
ええか識別できんって書いとるね。
このコードは多分、ばーきゃら型のtotalにいんとふぉー型と解釈された100を加算
しようとしたからエラーになっとる。型を合わさなあかんてことやね。
ん〜。ほら、後ろのほうに「はっきり型変換してくれ」て書いとるがな。

363 :nobodyさん:02/07/07 02:35 ID:xYfdkDpE
すいません、むちゃくちゃ初心者なのですが、検索してもわからず・・・
postgresのテーブルにそこにExcelデータをインポートしたいのですが、
ふつう、どうやってやるものなんでしょうか?

#アクセスのリンクテーブルでやればいいのかなとも思ったのですが、
postgresのテーブルにしか存在しないフィールド(serial型)があるもので、
ペーストしようとしても、怒られてしまいます。

364 :nobodyさん:02/07/07 05:00 ID:???
おいらはCSVで保存してPerlでパースして、SQL作ってダラダラ流し込んでる。


365 :nobodyさん:02/07/07 07:18 ID:???
無駄に検索する前にマニュアル読もうぜ、なあ兄弟。
http://www.postgresql.org/idocs/index.php?sql-copy.html
ポイントは一番下のユーザーコメントね。

366 :nobodyさん:02/07/07 15:04 ID:???
psqlで、insert into hoge(myouji) values('山田');をペーストしようとしても、
「山田」の部分が「\123\332\222」のような文字列で表示されてしまいます。
(DBにはきちんと登録されている)
これはなぜなのでしょうか?

なお、Teraterm日本語版を使ってます。(送信、受信ともEUCに設定しています)
また、コピーした文字列は、明らかにEUCです。

367 :nobodyさん:02/07/07 16:24 ID:???
>>366
ユーザの環境変数LANGは何?

368 :nobodyさん:02/07/07 16:34 ID:???
createdbのときに--encodingを指定しる。

369 :366:02/07/07 16:36 ID:mEMpxNTI
言い忘れましたがFreeBSDです。
で、setenv LANG=ja_JP.EUC
したのですが、症状は変わらずです。。。
#自分、はずしてますでしょか・・・

370 :初期不良:02/07/08 00:52 ID:???
>>363
漏れも基本的には >>365 と同じなんだけど、
Excel ってセルを選択してコピー、テキストエディタで
ペーストするとタブ区切りのテキストになる。
これ CVS で出力より便利。
これを COPY コマンドで流し込んで、最後に
SELECT setval('table_id_seq', (SELECT max(id) FROM table));
なんてやってやるといいかと。んでリレーションの関係で
INSERT しないといけない場合は >>364 の方がいいかと。

371 :初期不良:02/07/08 01:05 ID:???
>>369
ports/japanese/postgresql7
のを入れると大丈夫だったぞ。
普通のでもなんとかできるかも知れないけど
最後の手段として。

372 :nobodyさん:02/07/08 15:29 ID:Qyr7qWYN
>>363
1.awk か perl を使って先頭に行番号を入れたファイルを作る。
awk '{print NR "\t" $0;}' < source.txt > destination.txt

2.psqlを使ってインポートする
copy "target table" from "source.txt"

3.シーケンスをインポートした数より増やす
select setval('sequence name',10000);

373 :nobodyさん:02/07/08 16:42 ID:???
>370
てゆーか、Excelってタブ区切りファイルに保存できるべ。ふつーに。

374 :初期不良:02/07/09 09:20 ID:???
>>373
いや、それが面倒だから...

375 :nobodyさん:02/07/09 13:48 ID:???
オラクルマスターやめて ポケモンマスターになりたいんだけど
なんかある?


376 :nobodyさん:02/07/09 22:48 ID:???
失礼すマスタ

377 :nobodyさん:02/07/17 22:44 ID:pXjI4Thg
まだ設計段階でPostgreSQLの実行環境がないのでここで
質問させていただきます。

テーブルの継承を行った際のバックアップですが、
上位から継承したテーブルを\copyコマンドで指定して
バックアップをとったら、上位の継承元のテーブルと
いっしょにバックアップされるのでしょうか? それとも
下位のテーブルのみが対象となるのでしょうか?
どなたかご教授お願いします。

378 :nobodyさん:02/07/18 00:51 ID:???
ここらへんかな?

http://ml.postgresql.jp/pgsql-jp-old/pgsql-jp/2001Dec/msg00295.html


379 :ごんた:02/07/18 13:46 ID:q5AT3Pt2
PostgreSQLと相性のいいJ2EEアプリケーションサーバってある?
ただしリーズナブルなやつで。。

380 :nobodyさん:02/07/18 16:34 ID:zcxvlzIl
>>378
ありがとうございます。バックアップできる様ですので
検討してみます。あと継承機能を使った際、処理が増える分、
パフォーマンス的には落ちるのでしょうか?
その辺り触れたページが見つからなかったのでご存知の方
教えてください。

381 :初期不良:02/07/18 20:06 ID:5Jy0ruag
XMLPGSQL って使ってる人いる?
ドキュメントが少ない気がするけど
SoftwareDesign のバックナンバー取り寄せた方がいいのかな?

382 :nobodyさん:02/07/19 14:31 ID:???
>379
jbossかな?

>381
いまんとこ、DOMで事足りてるからねぇ。


383 :nobodyさん:02/07/20 00:24 ID:???
postgres以外のユーザから
psql -U postgres
ってやったらパスワードも求められずにpostgresユーザでログインできたけど
PostgreSQLってそういうモンなの?

384 :Name_Not_Found:02/07/20 00:50 ID:???
>>383
pg_hba.conf で設定しる!

385 :nobodyさん:02/07/20 08:48 ID:???
local all password
host all 127.0.0.1 255.255.255.255 password

ってやってもパスワード聞かれないよ〜

386 :nobodyさん:02/07/20 17:53 ID:???
pg_hba.confの上の方でlocal trustとかやってるに5万リペカ。

387 :nobodyさん:02/07/20 20:34 ID:/K3zxWeq
PostgreSQLって -i 付けて起動しないと
DBD::PgやPHPで使えないんだっけ?

388 :nobodyさん:02/07/21 18:28 ID:???
PHPは使える。
DBD::Pgは使ったことないから分からんけど、多分大丈夫。

389 :Name_Not_Found:02/07/21 23:55 ID:???
>>388
man DBD::Pg すると
-i が必要だよーんって書いてあるよ。

390 :初期不良:02/07/22 03:25 ID:???
>>389
postgresql 用 JDBC インターフェイスも -i が必要だね。
unix ドメインソケットに対応している PHP の方が珍しいのかも。

391 :388:02/07/22 15:07 ID:???
がーん、ごめんよー。

392 :nobodyさん:02/07/24 18:53 ID:xJEMjSg0
将来使うかもしれない項目という理由で、
テーブル内に空のTEXT型のフィールドを10個くらいあらかじめ用意すると、
レコードが大量に増えてくると容量的にどの程度コストがかかりますか?
あとからalter tableで追加シル!という意見は要らないです。

393 :nobodyさん:02/07/25 20:30 ID:4Z9IBTld
>>392
 可変長テキストであるため、NULLが入っている限りたいした量ではないです。
 1個のTEXT型で10バイトもとらないと思われます。

>あとからalter tableで追加シル!という意見は要らないです。
 正規化しましょう。

394 :nobodyさん:02/07/26 03:33 ID:???
hostとportを指定しなかったらDBD::PgでもOKだったよ。<-i 無し

395 :Name_Not_Found:02/07/26 04:30 ID:???
>>394
まじですか。
んじゃ JDBC だけか。
JDBC でも UNIX Socket で動くようにならんかね。

396 :nobodyさん:02/07/26 13:12 ID:it2WH5Xf
PostgreSQLを勉強始めたばかりの者です(2日目)

SOFTBANK社の「はじめてのPostgreSQLプログラミング」
を読んで練習しているのですが、

 select to_char(timestamp, 'now','HH12:MI:SS');
が実行できません。
 ERROR: Attribute 'timestamp' not found
というエラーがでます。
今のところ他の簡単なSQL文は実行できています。

何が間違っているのでしょうか?
どうしたら実行できるでしょう?
よろしくお願いします。

環境:WindowXP PostgreSQL7.2でCSEを使用してます。

397 :nobodyさん:02/07/26 13:36 ID:???
>>396
>  select to_char(timestamp, 'now','HH12:MI:SS');
select to_char(timestamp 'now','HH12:MI:SS');
こうじゃない?


398 :396:02/07/26 13:37 ID:???
自己レスです。
カンマが余計でした。スンマソン
 select to_char(timestamp 'now','HH12:MI:SS');
でできました。逝きます・・・

399 :396:02/07/26 13:38 ID:???
397さんありがトン!

400 :396:02/07/26 15:45 ID:it2WH5Xf
もう一つ質問です。
例えば

 SELECT DISTINCT ON(dept_id) dept_id AS 部門ID
FROM employees;

とするのと、
 
SELECT dept_id AS 部門ID
FROM employees
GROUP BY 部門ID;

とするのは、どっちが早いとか、どっちを使うべきかというのが
知りたいのですが、どうなんでしょうか?


401 :nobodyさん:02/07/26 16:08 ID:???
>>400
"EXPLAIN"を使ってくらべてみ。今やってみたら俺のテーブルでは
全く処理内容は一緒だったけど。

402 :nobodyさん:02/07/27 23:08 ID:V7PX6eYj
RedHatLinux7.2上でPostgreSQL7.2.1のフロントエンドを
libpqを使って開発しています(C言語)。
DB接続用関数「PQconnectdb()」の使い方がワカランです。
引数が可変長なのは理解できるんだけど、その指定方法がいまいち。
マニュアル通り、「keyword = value」ってやってもできん。
どなたか、使用例ってのを見せておくんなまし。

追加でもう一つ。PGstatusの返り値の違いがワカランです。
特にCONNECTION_OKとCONNECTION_AUTH_OKかな?
あと気になるのは(マニュアルより引用)
「CONNECTION_MADE 接続はOKです。送信されるのを待っています」
いったい何が送信されるのを待ってるんだろう。
どなたか謎を解明してくんさい。

403 :親切な人:02/07/27 23:23 ID:???

ヤフーオークションで、凄い人気商品、発見!!!

「 RX-2001 」がパワーアップした、
「 RX-2000V 」↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA#.2ch.net/

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。

ヤフー ID の無い方は、下記のホームページから、
購入出来る様です↓
http://www.h4.dion.ne.jp/~gekiyasu/#.2ch.net/

404 :名無しさん@Emacs:02/07/28 03:17 ID:???
>402
PQconnectdb()でなければならない?
問題なければ、PQsetdb()使った方が簡単だと思いますが。

PQstatus()の返り値は、通常は not CONNECTION_BAD を
調べます。CONNECTION_MADE や AUTH_OK は libpq が
内部状態を記憶するのに使うのであって、
通常アプリケーションの方からは使いません。


405 :nobodyさん:02/07/29 10:45 ID:???
ちょい質。

例えば社員データベースに格納したいデータとして

社員番号、社員名、住所、電話番号

があって、その中で社員番号と社員名は頻繁に問合せされるけど、
住所、電話番号が問合せされることはほとんどない、といった状況があった場合、
次のどれが問合せの効率としてはいいんでしょうか?

1.全て一つのテーブルに持ち、必要な情報だけを問い合わせる
2.全て一つのテーブルに持ち、よく使われる問合せをビューとして定義する
3.よく使われるデータとそうでないデータを社員基本情報と社員付加情報のような
  別テーブルにわけリレーションをはる
4.それ以外

406 :初期不良:02/07/29 12:49 ID:???
>>405
実験した方が...
見た感じ postgresql がやることとしては
1, 2 は変わらない感じだから、3で速くなって
その速度が必要だと思ったならテーブル分けて
結合する view を作って view に insert delete update
できるようにするのがいいかと。

407 :nobodyさん:02/07/29 16:33 ID:???
>>406
あ、もちろん実験はするつもりでした。
ただ、メリット・デメリットがわからない状態で闇雲に実験しても
「実はこういう場合もある」みたいなケースがあるかなと思いまして、
先達の皆様のご意見をお伺いしたかったと、まぁそういうことです。
今のところ

1.テーブル設計が楽。フィールドが増えると検索に時間がかかる。
2.SQLの組み立てが1よりも楽。検索速度は1.よりも若干遅くなるかも。ビュー定義を別に行う必要がある。
3.検索速度が2.よりも速い。ビュー定義が複雑になる。

ぐらいかと思ってるんですけど、本当でしょうか?

408 :nobodyさん:02/07/29 16:55 ID:???
405のテーブルって正規化した結果だよね。それを前提とすると、
3.の場合は社員番号、社員名テーブルと社員番号、住所、電話番号テーブルの
整合性に気を使う必要がある。
というのもあるかも。
つまり、工数が増える->ミスする可能性が増える、ということなので、
俺なら、その部分がボトルネックになってて、かつテーブルを分ける事で
大きく性能が改善される事がベンチマーク等で確認されないかぎりは、
一つのままにするかな。


409 :pg初心者:02/07/29 17:26 ID:???
最近勉強し始めたのですが質問です。
SERIAL型で最大値(2147483648)を超えた場合,
次の値はどうなるんでしょうか?


410 :nobodyさん:02/07/29 18:06 ID:yb513x2/
始めまして。なんか最近面白いサイトが出来たみたいですよ。
キャラクター(笑)とかがタダで持てたり、着替えさしたり・・・・
でも今だけらしいですよ入会無料なのって
詳しくは下記UELをクリックして、確かめて!!
http://www.e-mansion.co.jp/co/ac.html

411 :初期不良:02/07/29 20:23 ID:???
>>409
select setval('seq', 2147483648);
select nextval('seq');
しる

412 :nobodyさん:02/07/29 21:30 ID:???
>>408
です。でもそういう意味ではわざわざテーブルを分けること自体、
正規化の逆を行ってたりします?

確かに気を使う割には件数がそんなに莫大というわけではないので
#実際には社員テーブルではないのですが。。。
とりあえず1.でやってみて、問題になりそうなら考える、という形にします。

どもありがとうございました。

413 :nobodyさん:02/07/29 22:17 ID:+EFE+b01
>>412
 遅いレスだけど、速度を出すときは結合(ソート+マージで高コスト)を
減らす。
 列の数が気になるようだが、サーバーとクライアント間の転送量が最初に
問題になるので、問い合わせ時に絞れば問題ない。
 さらに例示されたテーブルを無理に分割すると、第五正規化・対称制約条
件に従わない、に違反するので非正規化になる。

414 :nobodyさん:02/07/29 22:54 ID:???
>>413
ですよね。大したデータでもないのにわざわざ正規化じゃなくするのは
ちょっとヤな感じがしてきてたところです。これで安心して1.で逝けます。

415 :nobodyさん:02/07/30 00:36 ID:HDFyLWHU
質問です。知っている方,居られましたらご教授下さい。
PostgreSQLVer7.1.3を使っているんですけど,
ロックタイムアウトの時間とかは指定できないんでしょうか?
もし,タイムアウト時間が指定できなければ,どのテーブル(又はレコード)に
ロックがかけられているか調べる術などあるのでしょうか?




416 :nobodyさん:02/07/30 01:09 ID:???
>>415
トランザクション使えば明示的なロックが必要な部分ってかなり少なくなると
思うんだけど、本当にロックが必要?
わかってて聞いてるならスマソ。

やるとすれば、PQsendQuery して自前でタイムアウト処理して、間に合わない
ようなら PQrequestCancel すればいいのかな。やったことないから正しいか
どうかわからないけど。


417 :nobodyさん:02/07/30 01:24 ID:HDFyLWHU
>>416
JavaからDBを触っているんですけど、処理上どうしてもあるレコードが
ロックされているか知る必要があるのです。
(そもそもシステムの設計に欠陥があるのですけど、もう後の祭り…)

「PQsendQuery」調べてみました。
検証してみないとなんとも言えませんが、使えそうな気がするので実験してみます。
アドバイスありがとうございました。

418 :nobodyさん:02/07/30 21:46 ID:w4X2IPfe
insert delete update
などのテーブルのデータに対して使用する関数はようやく使えるようになりましたが
テーブルそれ自体の項目名を変更したり削除したりするのは
どうやったらいいのでしょうか?
今までは間違えたらDrop Table
して一からCreate Tableしていたのですが、
さすがにそれでは追いつかなくなりました。
SQL一覧をみてもそれらしいのが見つからないのです・・・

419 :nobodyさん:02/07/30 21:48 ID:???
>>418
データはないときはalter tableすれば? 載ってなかった?

420 :418:02/07/30 23:37 ID:w4X2IPfe
>419

見事に出ておりました・・・
アルファベット順だったのでこんな上にあったとは・・・

421 :418:02/07/31 00:28 ID:boduSA+6
うーん。でもどうもリネームはできるけど属性だけ変える方法がわからないです。
ALTER TABLE mytable ALTER mycolumn integer;
こんなかんじでtextになっているmycolumnをintegerに替えようとしているのですが・
ちなみに
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/sql-altertable.html
これを参考にしています

422 :nobodyさん:02/07/31 10:32 ID:aLb8xrtM
そもそも、textで作ったものをintegerに変更しなきゃいけないという事態が
頻発するのはどうかと思うが。

新しいテーブルを別に作って select 〜 into 〜 するときに
text を integer に変換して入れる、ってのはどう?

で、古いのを drop して新しいのを rename。


423 :nobodyさん:02/07/31 10:54 ID:v8yqPDdo
>>421
新しいテーブルを作って、サブクエリー付きでinsert intoすればよい。

424 :nobodyさん:02/07/31 11:28 ID:vDTHZH0e
[前の20件][次の20件]みたいなものを実現するのに
LIMITやOFFSETが使えそうですが、20件/1200件
のように全件中の20件のみの表示の場合、全件数を
検索して件数を取得してから、またLIMIT 20 OFFSET 0
とかでSELECTし直して表示させる方法はなんだか
無駄のような気がします。
何か他によい方法はないでしょうか。

425 :424:02/07/31 11:32 ID:vDTHZH0e
説明足らずだったかもしれません。
最終的には例えば、

1200件中の21〜40件を表示しています。

みたいな表示をしたいのですが、
@全件数を取得するクエリと、
A21件目〜40件目を取得するクエリと
2回クエリを実行させないといけないので、
他に何かよい方法がありましたらお教えください。

426 :421:02/07/31 12:07 ID:boduSA+6
>422
うううそうなのですか・・・
たくさんある項目の中で一箇所だけintegerにすべきところをtextにしてしまったのですよね。
まだデータをいれてないのでまあテーブルごと消して直してしまえば
それまでなのですが・・


427 :nobodyさん:02/07/31 13:26 ID:???
>>424
ない

428 :nobodyさん:02/07/31 13:26 ID:???
>>425
だからないっつーの

429 :421:02/07/31 15:27 ID:boduSA+6
mytableにオートナンバーのシリアル値の項目を足そうとして

pgdb=> ALTER TABLE mytable ADD myautonum serial;
このように実行すると
NOTICE: ALTER TABLE will create implicit sequence 'company_autonum_seq' for SERIAL column 'company.auto
num'
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index 'company_autonum_key' for table 'company'
ERROR: Adding columns with defaults is not implemented.
Add the column, then use ALTER TABLE SET DEFAULT.

こんな感じで怒られてしまいます。
tableに項目を足したり削除したりというのがどうもできません。
名前の変更だけはできるのですが・・・

>422
レスありがとうございます。
しかしどうも私の力じゃ理解しきれないもようです・・。
ちょっといろいろネットを当たっては見ているのですが、
postgresは意外と情報が少ないというか
ハイレベルな話が多くて、本当の初心者向けの話が少ないですね。

430 :nobodyさん:02/07/31 20:44 ID:3uNj3n4c
>>429
ERROR: Adding columns with defaults is not implemented.
を日本語に訳せば原因がわかるよ。

あと、Postgres を使いこなしたいなら、シーラカンス本は必須。
とくに DB 使った経験が少ないならなおさら。いまだと改訂第3版が出ている。


431 :f:02/07/31 21:04 ID:ZYUYyFHP

-------風俗の総合商社・MTTどこでも-------

〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
  http://www.mttdocomo.jp/
-----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/
------------------------------------------------

432 :396=400:02/08/01 12:22 ID:???
>401さん
ご解答ありがとうございます。ご返事遅くなって申し訳ありません。
EXPLAIN使ってみました。
このチェックの仕方知らなかったので大変勉強になりました。
速度的には特に問題なさそうですね。
巨大なテーブルがあったらまたチェックしてみます。
ありがとうございます。

433 :nobodyさん:02/08/02 14:00 ID:IWsgOaFu
どなたかpostgreSQL+cocoon分かる方いませんか〜?
oracleのXSQL見たいなことが出来ると聞いたので試してみてる最中なのですが。

ttp://four.sssg.org/documents/
を参考にTomcat/postgres/cocoonは全て起動するようになったのですが、
そこから先がよく分からんです。

ttp://www.atmarkit.co.jp/fxml/rensai/cocoon01/cocoon01.html
も見てみましたが肝心の連動の話はまだ先のようで…

XSPとか使うんでしょうか?

環境を一応…
RedHat7.2J
postgreSQL 7.1.3
tomcat 3.2.3
apache 1.3.20
cocoon 1.7.4

ここではなく他に適当なスレがあるのであれば誘導お願いします…
関連っぽいスレがここしか見当たらなかったので…


434 :osage:02/08/03 01:54 ID:???
>>424
SELECT
 A.*,
 B.ALL_COUNT
FROM
 TABLE_NAME A,
 (SELECT COUNT(COL1) AS ALL_COUNT FROM TABLE_NAME) B
LIMIT 10
OFFSET 5
みたいな感じじゃだめ?

条件にもよるけど、2回 SELECT 発行した方が早いときと、
遅いときとありますたので・・・

>>427
「ない」って言うのは嘘だろ

435 :nobodyさん:02/08/03 06:30 ID:ZbZ4OQz5
FreeBSD + PostgreSQL を利用しようと
./configure したところ、
You must use GNU make to build PostgreSQL
stop in ***********

と出ます。原因は、gmake が無い事だと思い、
とりあえず、ln make gmake
としたのですが、無駄でした、GNUMakefile はどこで手に入れれば良いのでしょうか。
それと、問題そのものの解決策になるでしょうか?

436 :nobodyさん:02/08/03 06:56 ID:ZbZ4OQz5
435 です
何とか解決できそうな気がします。
失礼しました。

437 :nobodyさん:02/08/03 10:21 ID:hyrYRCqD
>>433
取り敢えず、Cocoonは2.0.3にしておけ。
で、ESQLというのがあるので、それを使えば望みは叶うぞ。


438 :nobodyさん:02/08/03 16:43 ID:kR3x2v5A
>>404
かな〜り遅レスですが、寸間祖(ATOK)

> PQconnectdb()でなければならない?
> 問題なければ、PQsetdb()使った方が簡単だと思いますが。
簡単か否かは別として使ってみたいんす
パラメータをどうやって区切るのかわからんのです
(スペースとか、カンマとかやってみたんすけど)
ちなみに同じパラメータリストでPQsetdb()ではできました

> PQstatus()の返り値は、通常は not CONNECTION_BAD を
> 調べます。CONNECTION_MADE や AUTH_OK は libpq が
> 内部状態を記憶するのに使うのであって、
> 通常アプリケーションの方からは使いません。
ありがとうございます
基本的にはフロントエンドでは(CONNECTION_OKと)
CONNECTION_BADを見ればいいってことですね。

関係ないですが、今日はPQclear()し過ぎてて
セグメンテーションフォールト起こしてました。


439 :nobodyさん:02/08/04 18:49 ID:r6DcgMc8
日付のデータで年ごと月ごと日ごと
にも検索できるようにするのですが、年(YYYY)と月(MM)と日(DD)と
別々の列にするのと、YYYYMMDDのひとつ列を正規表現で探すのとどち
らが早いでしょうか
どちらもインデックスは作りません

440 :nobodyさん:02/08/04 20:28 ID:???
日付型

441 :433:02/08/04 23:57 ID:3MVeA/Fz
>>437
亀レススマソ。
2.0.3ですかー。とりあえず上記のアドレスを参考にしたのでわざと最新版にしていませんでした。
あと日本語問題も古い方が良いと話を聞いたので…
ESQLですね。調べてみます。有難うございました。

ついでに、本無いか探してみたのですがモノの見事に
Apache+Tomcat+Coccon+PostgreSQLの本を発見しました…
一から勉強してみますです。


442 :nobodyさん:02/08/05 01:00 ID:YPHySkjn
>>439
日付型

443 :nobodyさん:02/08/05 01:07 ID:???
>>442
前世はやまびこですか?

444 :nobodyさん:02/08/05 01:19 ID:???
いえ、オウムです。

445 :nobodyさん:02/08/05 01:26 ID:???
日付型を使えって事でしょ?
別々の列にする意味あるのか?
CHAR型にする意味があるのか?

446 :nobodyさん:02/08/05 01:32 ID:???
ぼくちんは日付型ってなんか苦手で、int4型にして積算秒のまま格納するよ。

447 :nobodyさん:02/08/05 01:43 ID:???
日付型って内部的には数値型でなかったけ?
ん・・・・それは、Oracleだっけか?

448 :nobodyさん:02/08/05 02:11 ID:???
>>446
それやると30数年後の後輩に迷惑かけちゃうよ。

449 :439:02/08/05 05:10 ID:yM7Bnwzp
>>440 >>442
年と月と日のそれぞれの入力欄があり、
月の欄だけに8と入力すれば、年や日に関係ない8月だけの
データが取り出せます。
また日の欄だけに15と入力すれば、年や月に関係ない15日
だけのデータが取り出せる。
そういった串刺し的にデータが取り出したいのですが、
日付型にして例えば15日だけのデータ
を取り出すとなると、年や月をプログラム等どこかで
補完してやる必要は出てこないでしょうか。
それは省きたいので年月日を別々の列にして検索するか
YYYYMMDDの文字列を正規表現で検索するかを考えています。

450 :nobodyさん:02/08/05 06:03 ID:???
とりあえずマニュアルくらい嫁。

db=> create table test (time_field timestamp);
db=> insert into test values ('2001/08/31');
db=> insert into test values ('2002/05/31');
db=> insert into test values ('2002/08/05');
db=> select * from test;
time_field
------------------------
2001-08-31 00:00:00+09
2002-05-31 00:00:00+09
2002-08-05 00:00:00+09
(3 rows)

db=> select * from test where extract(month from time_field) = 8;
time_field
------------------------
2001-08-31 00:00:00+09
2002-08-05 00:00:00+09
(2 rows)

db=> select * from test where extract(day from time_field) = 31;
time_field
------------------------
2001-08-31 00:00:00+09
2002-05-31 00:00:00+09
(2 rows)


451 :nobodyさん:02/08/05 06:16 ID:iq1uYGQ8
>>450
ありがとうございます。
extractなんてあったんですね。目からウロコでした(;_;)
マニュアルは何回か探したんですが気づきませんでした。

452 :nobodyさん:02/08/05 14:38 ID:LsERs9Oy
>>449
SQL関数で日付型から一部分を抜き出せるよ。

453 :nobodyさん:02/08/07 00:18 ID:???
保全age

454 :nobodyさん:02/08/09 11:01 ID:XpLu47Ro
AccessからODBCを通してデータを移行したら、元はちゃんとした
名前がついていたデータなのに16558とか16559といった数値に
データが変換されてしまっているようなのですが、変換されてしまった
データを元の名前に戻す方法とかってあるでしょうか?

455 :nobodyさん:02/08/09 15:32 ID:FVfbuWof
1/100までの秒数を記録したいので
型式をTIME型にしてDB作って
CAST('01:02:03.45' AS TIME)
をINSERTしても、01:02:03までしか格納されてないみたいなのです。
TIME型は小数点2まで記録できるとあるようですが
DB作る時点でなにかしら設定しておかないといけないのでしょうか?


456 :nobodyさん:02/08/09 17:17 ID:???
>>455
手元の PostgreSQL 7.2.1 ではちゃんと小数点以下も記録されてるよ。


457 :nobodyさん:02/08/09 23:05 ID:Mh8PP7zC
先日からSQL(POSTGRESQL)の勉強を始めたのですが、以下の表示でつまずいてます。何方かアドバイスお願い致します。
やりたい事:面会記録テーブル面会者1、面会者2表示を人物テーブルから名前を引っ張ってくる。
一つでしたら何ら問題ないのですが、二つ引っ張ってくる時のSELECT文のFROMまでどのように記述してよいか
解かりません。↓が例です。

テーブル1:人物テーブル
ID 名前    姓
1  田中康則  男
2  田中真紀  女
3  小泉純二郎 男

テーブル2:面会記録テーブル
ID 日時  面会者1  面会者2
1  8-8-2002 1 2
2 8-9-2002 2 3


SELECT後の希望表示結果:
日時     面会者1    面会者2
8-8-2002 田中康則 田中真紀
8-9-2002 田中真紀 小泉純二郎

簡単そうで、何かうまくいきません。何方かご教授お願いします。

458 :nobodyさん:02/08/10 00:30 ID:???
しのにむ

459 :nobodyさん:02/08/10 00:43 ID:K0BBB4AY
>>457
テーブル設計が腐っています。

select 日時,面会者1 AS 面会者 from 面会記録テーブル
union
select 日時,面会者2 AS 面会者 from 面会記録テーブル

以上のようにして合成し、日時,面会者の形に整理して使いましょう。
まとめると以下のようになる(かも)

select a.ID,a.名前 from
(select 日時,面会者1 AS 面会者 from 面会記録テーブル union select 日時,面会者2 AS 面会者 from 面会記録テーブル) a,人物テーブル b
where a.ID==b.ID

460 :nobodyさん:02/08/12 21:08 ID:wOaAyc1y
>>459
>テーブル設計が腐っています。
(´・ω・`)ショボーン 勉強してきます。

えっと上ので試したけどいまいち訳わからずです。
一度の面会で複数の人に会ったという設定なのですが、
このSQLでよいのですか?

DQNな質問でスマソ。

461 :nobodyさん:02/08/14 04:37 ID:MFUQQkAB
>>460
 アプリケーション側で表示は工夫する必要はあります。
 同じIDの人は、同じ面会であったことになるので、ソートして再構築。
 SQLはwhere句がでたらめだったので、以下のような感じに訂正。(動作チェックはしていません)

select a.ID AS 面接ID,a.名前 AS 面接者名 from
(select 日時,面会者1 AS 面会者 from 面会記録テーブル union select 日時,面会者2 AS 面会者 from 面会記録テーブル) a,人物テーブル b
where a.面会者==b.ID
order by 面接ID

462 :nobodyさん:02/08/14 10:47 ID:???
シンプルに
select m.日時, j1.名前 as 面会者1, j2.名前 as 面会者2
from 面会記録テーブル as m, 人物テーブル as j1, 人物テーブル as j2
where m.面会者1 = j1.ID and m.面会者2 = j2.ID
じゃダメ?
cross join がイヤなら適当に変えてね。


463 :461:02/08/14 16:11 ID:MFUQQkAB
>>462
いける。頭まわっていなかったらしい・・・

464 :nobodyさん:02/08/14 21:30 ID:/c+Z8KBo
>>462
解決出来ました!有難う御座います。
>>461
どうもいろいろ意見有難うございました。unionの用法勉強してきます!

465 :コギャルとHな出会い:02/08/14 22:08 ID:udQrDzAC
http://kado7.ug.to/net/


朝までから騒ぎ!!
   小中高生
 コギャル〜熟女まで
   メル友
  i/j/PC/対応

女性の子もたくさん来てね
  小中高生大歓迎です                 
全国デ−トスポット情報も有ります。
全国エステ&ネイル情報あります。

  激安携帯情報あります。

466 :466:02/08/20 01:22 ID:VsvDpbeq
Postgres初心者です。1週間ほど考えています。アドバイスお願い致します。

データ-ベースを使用するデータ-ベース使用者の数だけPostgresのアカウントを発行するのが嫌だったので
"Administrator" と "User" という2つのアカウントだけつくり、
したにあるようなIDとパスワードを保持する別のテーブルを作って認証を行おうと思いました。
DataBase=# select * from lD_Passwd;
id | password
------------+----------
tanaka | abcdefg
satou | 0000000
guest | guest

上のテーブルにSelectの権限が与えられているのは"Administrator"(=管理者)のみで
その他のデータ-ベース使用者はすべてアカウント"User"を使うことになります。
ところがUserたちが認証する際、読み取り権限がないのでアクセスすることができません。
読み取り権限を与えるとすべての人のパスワードが見れてしまうことになります。
そこで、
関数をつくって、その中で権限をAdministratorにしてそのテーブルにアクセスして、
Idとパスワードが正しいかどうか判断したのち、戻り値(True or False)として
Userに返すという方法を考えていますが関数自体に権限を与えるといったような
簡単な方法はないでしょうか? また、根本的に間違っているのでしょうか?
マニュアルには見当たりませんでした。
どなたかご教授お願いします。

ちなみにデータ-ベースにはlibpgvbというDLLを使ってVBからアクセスしています。

467 :nobodyさん:02/08/20 01:27 ID:Yv31fq1H
http://www.geocities.co.jp/Hollywood-Screen/8924/profile.html
なあ、この女どう思う?

468 :httpd:02/08/20 18:26 ID:cHWvWGpn
以下の場合、hogedbの作者はhttpdじゃないの?
grantしないとpermissionエラーになるんですけど(;_;)
いちいちgrantしたくないので助けてくださいm(_ _)m
要するにhogedbにhttpdでアクセスしたいだけなのですが・・・どこが違うの??

//ユーザー作成
createuser -d httpd
//変身!!
su httpd
//DB作成
createdb hogedb -U httpd
//インポート
psql -e hogedb < db.out

469 :528:02/08/20 18:40 ID:???
>>468
答えは出てるじゃん。そのエラーのとおりだよ。

470 :nobodyさん:02/08/21 11:57 ID:2UYHGwou
おーい、今更なんだけどさ、7.1.xから、7.2.xに乗り換えた香具師。
データの移植は正常だったですか?

おいらんトコは、7.1.xのpg_dumpバックアップファイルが、一部のテーブルだ
けエラーでダメだった。

どーなんてんだ?いったい‥‥‥

471 :nobodyさん:02/08/21 13:04 ID:IYK8rA+A
>>470
EUC 外の特殊な文字とか入ってない?

472 :470:02/08/21 14:12 ID:2UYHGwou
>>471

ないと思うんですけどねぇ‥‥

データの大元は、S-JISのテキストなんですけど、変換かけてEUC
にしてから入力にかけてますんで‥‥‥

473 :httpd:02/08/21 16:30 ID:ie5NkI8Z
>>470
Version覚えてないけどシーケンス発行がトラブった。
つーか、setvalでシーケンスの数字変更する時に。
最後の't'を外したら動いたけど……。

474 :httpd:02/08/21 16:33 ID:???
どもども >>469
やっぱり、これではhttpdの所有になっとらんのですね(T_T)なぜだ……。

//ユーザー作成
createuser -d httpd
//変身!!
su httpd
//DB作成
createdb hogedb -U httpd

475 :nobodyさん:02/08/22 17:05 ID:w2//Sq4y
Perl+Pg.pm+Postgresという環境です。
AというテーブルからBというテーブルへ項目をコピーしたいのですが、その際に
日付/時刻型の「2002/08/22 午前 12:12:12」というデータを「yyyymmddhhmmss」という型に
デコードしてコピーしたいのですが、どういった方法が挙げられるでしょうか?

476 :nobodyさん:02/08/22 21:19 ID:sZeyw1CT
>>475
何のために?
DB に入れておくんだったら、日付型の方が便利。
時刻をフォーマットしたいだけなら to_char() を使うけど。

477 :nobodyさん:02/08/22 23:17 ID:WGWM2PPc
データベースの容量って制限できるの?
ユーザquotaのしばり受けるの?
Postgreの使えるレンタサーバ使おうと思ってるんだけど、HP容量にDB容量が含まれるのか知りたくて

478 :_:02/08/23 14:03 ID:???
>Postgreの使えるレンタサーバ
xreaですか?

479 :nobodyさん:02/08/23 20:42 ID:???
>>477
xreaなら含まれるな。って言うかどこでも含まれる気がするけど。

480 :nobodyさん:02/08/23 20:48 ID:5qP9jqJh
>>479
xreaのHPに、「データベースサイズ:目安は5メガバイトまで。」って書いてあるぞ。
HP容量と違うし


481 :nobodyさん:02/08/23 21:39 ID:5qP9jqJh
データベースファイルのユーザは postgres になってたから、quota は効かないよーな気がする

482 :nobodyさん:02/08/24 05:30 ID:???
>>481
groupquota

483 :nobodyさん:02/08/24 06:47 ID:???
>>482
無理。

initlocation使ってうまく容量制限かけられたとしても、制限にひっかかると
dbが壊れる。

PostgreSQL自体がデータベースごとの最大容量を指定できるようにならない限
りはどうしょうもないと思う。


484 :nobodyさん:02/08/27 15:00 ID:???
DBからユーザを削除したいのですが、
念のため pg_class の中を削除したいユーザIDで検索すると、

pg_toast_XXXXXX_idx
pg_toast_XXXXXX

というデータが見つかります。これって何でしょう?
無視してユーザ消してしまっていいんでしょうか?

485 :nobodyさん:02/08/27 15:28 ID:???
>>484
pg_*テーブルはPostgreSQLの内部テーブルなんでユーザーを消しても平気。
TOASTが何かを知りたいなら↓。
http://www.jp.postgresql.org/projects/devel-toast.html


486 :484:02/08/27 15:59 ID:???
>>485
でも、とあるテーブルのオーナを削除したらまずいんじゃないの?
と思って試してみたら

%createuser hoge
%psql -U hoge hoge
hoge=#create table t1 (a int);
hoge=# \dt
List of relations
Name | Type | Owner
------+-------+-------
t1 | table | hoge
(1 row)
hoge=#\q
%dropuser hoge
%psql hoge
hoge=# \dt
List of relations
Name | Type | Owner
------+-------+-------
t1 | table |
(1 row)
hoge=#\q
%

あ、なるほど。表示されなくなるだけなのね。納得。

487 :7.2.2:02/08/27 23:49 ID:yZsdlGNN
実は本家はマイナーバジョンアップしてるという罠

488 :nobodyさん:02/08/28 00:15 ID:???
create operator classとかset search_path=publicとか
7.2.2でサポートされてます?7.3からかな?

select timestamp( date(now()) );
通るようになったかな。7.2.1だと↑通らん。

SELECT CAST( now() AS date ), now()::date, 'now'::date::timestamp;
通るからまぁいいんだけど。

489 :nobodyさん:02/08/28 06:15 ID:???
7.2.2 は
> ALSO NOTE!!! This is a security update. A number of security related
> bugs were fixed. The update is mandatory!!
ということなので、さっさとアップデートした方がいいよ。

>>488
7.2.xは基本的にメンテナンスリリースなんで新機能は入りませんです。


490 :nobodyさん:02/08/28 06:40 ID:???
>489
マイナーバージョンアップは、PGDATA領域そのまんまでも
OK?


491 :nobodyさん:02/08/28 08:46 ID:???
>>490
OK
以下を参照ね。
http://www.jp.postgresql.org/sitess.html


492 :nobodyさん:02/08/29 11:09 ID:V8Nh7P6Z
遅れ馳せながら
>>476さんありがとうございます。

項目の定義として、システム日付をデフォルトで入れるように
「日付 varchar(14) default to_char('now'::datetime, 'YYYYMMDDHH24MISS')」
という風に設定しているのですが、データを見ると日付の中にはテーブルを作成して
一番最初に取得したYYYYMMDDHH24MISSを何度も入れてしまいます。

名前 | 日付 |
--------------------------
aaa |20020829103253 |
bbbb |20020829103253 |
cccc |20020829103253 |

        ・

といった感じなのですが、このテーブル項目作成の定義は間違っているでしょうか。

493 :nobodyさん:02/08/29 11:43 ID:???
>>492
http://www.postgresql.jp/document/pg721doc/user/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT


494 :nobodyさん:02/08/29 14:49 ID:???
>>493さん
おかげでうまくいきました。
ありがとうございました。勉強になりました。

495 :nobodyさん:02/08/29 15:21 ID:K7zpT3ze
更新履歴をデータベース化しようとしているのですが
INSERT INTO "whatsnew" VALUES(
'2002-08-29',
'{"<a href="/">XXXX</a>を更新しました", "YYYY"}'
);
と書くと前半部分<a href="/が無視されます。
"のエスケープする方法しらないでしょうか?


496 :nobodyさん:02/08/29 15:22 ID:???
( ´,_ゝ`) プッ

497 :nobodyさん:02/08/29 15:32 ID:???
>>495
\"

498 :nobodyさん:02/08/29 15:42 ID:K7zpT3ze
>>497
それはやってみたんだけど、
テーブルの中身を確認したら無視されています。

499 :nobodyさん:02/08/29 15:43 ID:???
ちょっと日本語変でごめん。

500 :497:02/08/29 15:55 ID:???
> '{\"<a href=\"/\">XXXX</a>を更新しました\", \"YYYY\"}'
これじゃだめなのね? なんでだろうね。
あと、"と'を混在しているのはなぜ? 全部"でかいてみ。



501 :495:02/08/29 16:08 ID:???
それでも変化なしでした。
テーブルの中身は「{">XXXX</a>を更新しました","YYYY"}」です。
あと'と"を混合してるのは下のページの影響です。
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/arrays.html

502 :497:02/08/29 16:11 ID:???
ああ、誤解していたよ。これならどう?
> '{"<a href=\"/\">XXXX</a>を更新しました", "YYYY"}'

503 :nobodyさん:02/08/29 16:28 ID:???
それでも駄目でした。
テーブルの中身も変わらず…。

504 :497:02/08/29 16:30 ID:???
テーブルの定義はどうなっている? 配列なんだよね?

505 :495:02/08/29 16:48 ID:???
CREATE TABLE whatsnew(
update date,
content text[]);
こんな具合です。

506 :497:02/08/29 17:03 ID:???
実はMySQL使いなので、MySQLで試しててみたんだけど。。(あまり関係ないと思ふが)
<a href="/"> の、/ って、エスケープ文字と同じじゃない?
だから、エスケープはこうならないかな?
> '{"<a href=\"\\\">XXXX</a>を更新しました", "YYYY"}'

507 :495:02/08/29 17:11 ID:???
それでも駄目でした。
ERROR: parser: parse error at or near "'"

ためしにこっちもやってみたけど
'{"<a href=\"\/\">XXXX</a>を更新しました", "YYYY"}'
こちらも駄目。

508 :495:02/08/29 17:32 ID:???
ごめんなさい。自分が間違っていたみたいです。
'{"<a href=\"/\">XXXX</a>を更新しました", "YYYY"}'
とすれば、テーブルの中身は
「<a href=\"/\">XXXX</a>を更新しました", "YYYY"}」
となっていました。迷惑かけてごめんなさい。

509 :497:02/08/29 17:50 ID:???
ぶーぶー。
でも、解決したみたいなので良かったっす。
# これが MySQLスレだったらもっと良かったのに

510 :495:02/08/29 17:53 ID:???
phpPgAdminを使っていてごっちゃになっていました
'{"<a href=\"/\">XXXX</a>を更新しました", "YYYY"}'
じゃなく
'{"<a href=\\\"/\\\">XXXX</a>を更新しました", "YYYY"}'
でした。
スレ汚し、スマンです。もうちょっと勉強してきます。

511 :sas:02/08/30 04:37 ID:T6Vbh/On
はじめまして! 
Postgresqlにログイン出来なくて困っています…。
postgresql-7.1.3 win32をインストールし、
initdb.exeを実行してデータベースを初期化し、
pgsvmgr.exeでデータベースサーバーを起動し、
psqlj.exeで、ホスト名localhost
ユーザー名 Administrator
パスワードはWindowsで管理者としてログインするときの
パスワードを入力しましたがログインできません。
色々調べてみましたが、原因がわかりません。
どうしたらいいでしょうか?教えてください。




512 :nobodyさん:02/08/30 05:08 ID:???
パスワードあってるの?

513 :sas:02/08/30 15:53 ID:PK97+40Y
WindowsXPにログインする時に、
使っているパスワードなので、
あってると思います。

514 :nobodyさん:02/08/30 16:28 ID:okP1fGcQ
Redhat7.3で最初にインストールされるPostgreSQLの状態って
そのまんまで他のクライアントからODBC接続(Accessでリンクする)はできないんでしょうか?
ODBC--呼び出しが失敗しました。
Could not connect to the server.
Could not connect to remote socket (#101)
っていうエラーがでるんですが・・・(Accessでリンクしようとした時)

515 :nobodyさん:02/08/30 16:30 ID:okP1fGcQ
↑あ、ユーザーとデータベースは作ってあります。

516 :nobodyさん:02/08/30 18:15 ID:???
>>513
PostgreSQLのユーザーはWindowsのユーザーとは別。
pg_hba.confで検索しる。

>>514
Redhatは知らんが、デフォルトではTCP/IPでの接続はできない。
postgresql.confでtcpip_socket = trueする。
たぶん、パスワードとかの設定も必要だろうからその辺は適当に。


517 :514:02/08/30 19:17 ID:okP1fGcQ
>516
うおおおおおお
のた打ち回ってた問題が解決したっ!
あんた神か!? ありがとう!

518 :nobodyさん:02/08/30 20:44 ID:8xSHI6ux
マニュアル読もうよぉ

519 :nobodyさん:02/08/31 02:43 ID:???
とあるパターンを配列に格納し、その出現回数を取得したいと思います。
ところが

 SELECT pattern, count(pattern) FROM t1 GROUP BY pattern;

とやると、

 ERROR: Unable to identify an ordering operator '<' for type '_text'
  Use an explicit ordering operator or modify the query

と怒られてしまいます。ひょっとすると、と思って、

 SELECT pattern FROM t1 ORDER BY pattern;

とやっても案の定、同じように怒られますた。

このあたりが配列の限界なのでしょうか?
ちなみにテーブルは以下のような形です。

 CREATE TABLE t1 (
  pattern TEXT[]
 );
 INSERT INTO t1 VALUES ('{"A", "B", "C"}');
 INSERT INTO t1 VALUES ('{"A", "B", "C"}');
 INSERT INTO t1 VALUES ('{"A", "D", "E"}');
         :
         :

520 :nobodyさん:02/08/31 02:58 ID:mK1R3E6Z
全国の看護婦フェチの方、並びに盗撮マニアの皆さん、お待たせしました!都内某所の病院に盗撮カメラを仕掛けるという一大プロジェクトを敢行!!
ナースステーションのあらゆる場所に仕掛けられた隠しカメラから、知られざるナースたちの秘密を映し出します!
http://210.188.193.18/agency/bnb/form.phtml?banner=wataru

521 :nobodyさん:02/08/31 08:24 ID:???
>>519
operator < (text[], text[]) が無いのが原因。
自分で create operator してやればいいんじゃない?

でも、配列の各要素を別の行にできないかも検討してみるといいかも。
他のDBMSへも移植しやすくなるし。


522 :nobodyさん:02/08/31 11:05 ID:McY4kGnj
普段はAccessでリンクしてデータを追加したり変更したりしてるんですが
テーブル作るときにデフォルトのSQL_ASCIIってのだと文字化けしてるんで
EUC_JPで作り直したらこんどはWebで表示したときに文字化けるように
なってしまって・・・どうすればいいんでしょうか・・・。

523 :nobodyさん:02/08/31 11:09 ID:Eh4H/Twd
>>522
 文字コードが統一できていないから化けるのだと思われ。
 HTMLの文字コードをEUCにするか、PosgreSQLから出したデータをSJISなどに変更しろ。

524 :nobodyさん:02/08/31 17:32 ID:???
>519

contribとintarray,arrayあたり使えばできるよ。
ただ、配列使うとindex使われないからあまりいいスキーマ設計とはいえないね。

まだ
"ABC"、"ADE"とかで前方一致(LIKE)で検索した方がいいような。

525 :nobodyさん:02/08/31 17:32 ID:???

contrib!の!


526 :動画無料サンプル:02/08/31 22:55 ID:AF4irkr1
ブルマ・水着・セーラー服でスケベな事してる
小学生、中学生、女子高生が【無料】で見れる!!
http://www.traffimagic.com/WIPE7MMLZCA/comein/NZKYA

527 :123:02/09/01 02:40 ID:Rn3wDJdF
えっと,PostgreSQLのストアドはいい開発環境とかあるのかな?
SQLはcse使っているけど,あれではストアド作ることしかできないよな。
いい開発環境がないと,どうもそもそも使う気になれない。
ただ,SQLにソースを書くのは好きではないので,PostgreSQLでもストアドはやっぱり使いたい。

誰かいい開発方法知らんかのぉ。
普段使ってるストアドはTransactSQL(SQLserver)になるが,
たとえば,こんなものを作るとする。

DECLARE @no int
SET @no = 1

SELECT *
FROM TABLE
WHERE no = @no

@no = 1 でSELECTするということ。
これをクエリマネージャとか使うと結果も見れる。
ストアドに変えようと思ったらそのまま,
上と下に Createprocedre [selectno](こんなんだっけ) go とかつけて,
SET = としているとこをパラメータ渡しに変えたらストアドになるしね。
こんな簡単なSQLだったら,一発で作れるだろうが,ちょっと複雑なもので
テストとか繰り返して,作ろうと思ったら,開発環境いるよな。

また,コンソールから exec selectno(1)
みたいにしたら,ストアドをキックできて,結果も見れる。
こんなことしながらの開発PostgreSQLで出来るのかな。

とりあえず,ストアド作った後にそれを実行するのが,
プログラムからしかできないのはきつい

528 :nobodyさん:02/09/01 03:21 ID:???
>527
ストアド作るごときエディタでええやん。

頭ん中で流れ考えるんだよ(w
それが面倒ならmssqlserverでも買ってなさいってこった。

pgaccessでやれることが限界では。
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/app-pgaccess.html

テキストベースでできた方が何かと便利。
遠隔操作とかにも都合がいいし、テストをちょちょっとスクリプトで書いたり。

529 :522:02/09/01 18:41 ID:/oI3M69S
>523
PosgreSQLから出したデータをSJISなどに変更
ってどうやるんでしょうか・・・

530 :nobodyさん:02/09/01 21:06 ID:???
client encodingを変えればいいじゃん。

531 :522:02/09/01 23:39 ID:/oI3M69S
>530
psqlで
SET CLIENT_ENCODING = 'SJIS';
とやってみたんですが、Webで表示してる方には変化がなくて・・・。
HTMLのCharsetをEUCにすると日本語はOKなんですが関係ない部分が
なぜか文字化けてしまいました。

532 :nobodyさん:02/09/01 23:45 ID:???
ラージオブジェクトについて教えてください。

@ラージオブジェクトを例えば

  INSERT INTO t1 (id, oid) VALUES (1, lo_import('/tmp/hoge'))

 で作ったとして、それを削除したいときには

  DELETE FROM t1 WHERE id = 1

 で削除するだけでいいんでしょうか?ゴミとかは残りませんか?

A上記の例でさらに

  UPDATE t1 SET oid = lo_import('/tmp/hoge') WHERE id = 1

 なんてしちゃった場合、元のラージオブジェクトはどこに行ってしまうのでしょう?
 自動的に削除されるのでしょうか?ゴミとかは残りませんか?

533 :522:02/09/01 23:50 ID:/oI3M69S
■ ← この文字(記号?)が文字化けてしまいました。

534 :nobodyさん:02/09/06 02:31 ID:tscmWiVv
textデータ型の容量制限が1Gということですが、
1カラムに1Gがのデータを入れると、8kのカラム容量制限に引っかからないですか?

535 :nobodyさん:02/09/06 08:36 ID:KP0wE/mN
>>534
8kのカラム容量制限 は、7.1 で解決済み。
最新版使ってれば全く問題ない。TOAST という技術。
私はメールの本文とかを丸ごと1カラムに格納してる。

536 :ななしし:02/09/06 12:16 ID:o0uKxXbL
>>532
残ります。
lo_unlinkをかけてあげましょう。

537 :532:02/09/06 14:12 ID:???
>>536
ありがとう。

538 :nobodyさん:02/09/06 18:21 ID:6cS1MLb+
>>535
ありがとうございます。
助かりました。

539 :8月のクリスマス ◆zzfy/JR2 :02/09/06 18:37 ID:zUklKDWI
PostgreSQLに接続し
$result=pg_exec("select * from nwpersonal ");
を実行すると下記のエラーが発生するのですが
どうしたらよいのでしょうか?
分かる方よろしくお願いします☆

Warning: PostgreSQL query failed: ERROR: nwpersonal: Permission denied.


540 :nobodyさん:02/09/07 00:41 ID:???
>>539
許(grant)してけれ〜〜、お代官様(w
つか、ちぃたぁマニュアル読め(w

541 :nobodyさん:02/09/08 09:08 ID:???
マニュアル読まなくてもPermission deniedぐらい理解さらせ

542 :nobodyさん:02/09/08 12:44 ID:???
最近、目の前に出ているエラーメッセージすら読まない香具師多数。


543 :nobodyさん:02/09/09 01:15 ID:Ek+d2LV7
掲示板のログを1つのテーブルに入れようと思います。
件数は1万件以上ですが、テキストファイル保存に比べて、
パフォーマンス上問題はないでしょうか?


544 :nobodyさん:02/09/09 16:59 ID:???
>>543
どのような掲示板でしょうか?(と聞いてみる)

545 :nobodyさん:02/09/09 20:33 ID:???
うまく作れば、フラットファイル保存の方が速いに決まってる。

しかし、作り込まれたRDBMSよりパフォーマンスが出るフラットファイルの
入出力を作るのは至難の技。

それに、ふつーに作れば、ネットワークの帯域の方がボトルネックになって、
I/Oなんてどっちもどっち。

イントラとかなら別だが。


546 :nobodyさん:02/09/10 09:52 ID:VSIVhwr4
>>544
普通のスレッド型掲示板です。
スレッドを表示する場合はスレッドIDが一致するものだけ取り出そうかと。

547 :nobodyさん:02/09/10 17:03 ID:20uIzqy9
どなたか教えてください。
Pear DBパッケージのStatementを用いた挿入がうまくいきません。
【PHP】質問スレッドとPHP+MySQLでたずねたのでマルチになりますが。。。
どなたも答えてくれませんので、またここで、質問を投げます。だめですか??
※日付型(書式:yyyy/mm/dd HH:mm:ss)は現在時刻を挿入する。
※日付型以外(文字列、数値型)はうまくいきます。
エラー内容
SQLエラー → ステートは37000
コードは以下です。
/**
* インサートテスト
*
* @access public
* @param ProductState $ps 製品状態情報
*/
function insert($ps)
{
 // DB接続
 $this->connect(); // $this->db = DB::connect( $dsn )にて取得。
 // SQL文
 $sql = "INSERT INTO user (id,name,date) VALUES (?,?,?)";
 // Statement取得
 print "date=" . date("Y-m-d H:i:s",time()) . "\n";
 $stmt = $this->db->prepare( $sql );
 // SQL発行
 // $this->db->execute($stmt, array($ps->id,$ps->name,time())); //これもだめでした。
 $this->db->execute($stmt, array($ps->id,$ps->name,date("Y-m-d H:i:s",time()) ));
 // DB切断
 $this->db->disconnect();
}

548 :nobodyさん:02/09/10 17:05 ID:20uIzqy9
↑DBになるべく依存しないようにStatementを使いたいのです。
自分のイメージ的には、JavaのJDBCの様に使いたいのです。

よろしくお願いします。

549 :nobodyさん:02/09/10 22:04 ID:???
分かんないんだけど、何が問題なわけ?

日付のフォーマットが問題なら、
フォーマットするwrapper関数みたいのを作ればいいじゃん。

100% RDBMS依存を無くしたいなら PEAR に contribute しる。


550 :nobodyさん:02/09/10 22:55 ID:ecEmpk8F
>>548
日付をフォーマットしたいのか?
to_char() 使え。逆の関数もあるぞ。
Postgres 提供の関数だから、SQL 中に記述できるぞ。

551 :nobodyさん:02/09/11 06:26 ID:MyJQslI1
>>548
PostgreSQLはよくわからんのだが、
date("Y-m-d H:i:s",time())
DATE型は「年月日」までじゃないか?入力形式。
H:i:s は無視されるだろ。つか「フィールドの型がちがうぞ!エラー」じゃないか?
時分秒を扱うならTIMESTAMPにすれば?

552 :nobodyさん:02/09/12 03:22 ID:r6MxR56R
現在使用してる容量ってどうやって調べるの?

553 :nobodyさん:02/09/12 11:57 ID:???
du

554 :nobodyさん:02/09/12 12:18 ID:r6MxR56R
>>553
データファイルはどこにあるの?

555 :nobodyさん:02/09/12 12:43 ID:???
/usr/local/pgsql/data

556 :nobodyさん:02/09/13 17:18 ID:39GWJCRQ
Postgres 7.1.2 とAccess2000 を使っているものですが、
平分パスワードで接続できるのですが暗号パスワードで接続できません。
つまりpg_hba.confでcryptとした後接続できません。
どうすればいいんでしょうか?
そもそもパスワード暗号化は可能でしょうか?


557 :nobodyさん:02/09/13 20:30 ID:???
ODBCどらいばがサポートしている方法しかつかえないっしょ。
ドキュメント見れ。

558 :557:02/09/13 22:28 ID:???
そーすみて見たら、ODBCドライバでは
生パスワードとMD5でエンコードしたのしかサポートしてないんだね。
TODOリストみても「やる気有りません」ってかんじでにんともかんとも。
 src/interface/odbc/connection.c
 src/interface/odbc/TODO.txt

というわけで、ODBCつかって平分のパスワードが嫌ならmd5を使えって事で。

559 :nobodyさん:02/09/17 10:12 ID:???
>>556
うちはcse使ってるんですが、やっぱりcryptが使えないです。
pg_hba.confでpasswdに設定してファイル名を指定しない場合は
pg_shadowからパスワードを読むのですが、
暗号化されているのかどうかはなはだ疑問です。


560 :nobodyさん:02/09/17 18:00 ID:???
tcpdumpで見てみれば?

561 :nobodyさん:02/09/18 10:25 ID:???
>>559
っつーか 'passwd'を設定している限り平文だよ。
いいから'md5'って書いてみそ。

562 :nobodyさん:02/09/20 18:55 ID:/MLJ70M7
PostgreSQL で、指定時刻になるとSQLを実行したりストアドを実行するような機能はありませんか。
オラクルやSQL Serverにはあって重宝していたんですが・・・


563 :nobodyさん:02/09/20 19:58 ID:M7U2JFRI
>>562
cron + psql じゃダメ?

564 :562:02/09/21 00:32 ID:???
>>563
psqlでsqlを直接実行することができるのですか?
(もしくは、指定ファイルにSQLを書いてそれを実行するとか………)


565 :ID 変わってるだろうけど、563:02/09/21 00:40 ID:NjgR42bS
>>564
少なくとも、別ファイルに記述した SQL を
psql に読ませて実行することはできる。
方法はマニュアルに書いてあるから調べてごらん。

私の場合、テスト用 DB 構築 SQL を書いたファイルを用意して、
テストするたびに CRAETE TABLE からやってる。

566 :名無しさん@XEmacs:02/09/21 01:35 ID:???
-cだ


567 :nobodyさん:02/09/22 21:46 ID:6gZmFq4J
psql database < some.sql

568 :nobodyさん:02/09/22 22:16 ID:auOB9C4f
windowsでtcl入れてpgaccess使っているんですが、
Preferencesの設定が保存されなくなってしまいました。
以前のWindowsNative版の時は設定保存できましたが、
Cygwinにしたら保存できなくなったようです。
お助けください。

569 : :02/09/25 00:09 ID:???
オライリーのマンモス本買う香具師いる?

570 :nobodyさん:02/09/25 01:31 ID:???
一応買う予定っす。内容がどの程度「practical」かによるけど。


571 :nobodyさん:02/09/25 18:44 ID:GgIwIpkD
Vine Linx2.5、PostgreSQL7.2でPostGISをインストールしようと
頑張ってるんですが、JDBCの部分でつまづいてしまっています。
jdbcのディレクトリでmakeすると、postgis.jarができるようなことが
マニュアルに書いてあるのですが、何故かできません。
(http://postgis.refractions.net/docs/x168.html)
makeは問題なく完了しているようなのですが…
どこが問題なのでしょうか…?

572 :nobodyさん:02/09/25 21:21 ID:???

CGI+PostgreSQLで遊んでみようとおもってるのですが、
データ更新中 or セットの2つのテーブルのうち1つだけ
更新した後にブラウザの停止ボタンを押した場合とか
どうなるんですか?

573 :nobodyさん:02/09/25 21:36 ID:???
トランザクション

574 :nobodyさん:02/09/25 22:14 ID:???
ソースの中でHTML出力より先にSQLがcloseされていたら終わり

575 :nobodyさん:02/09/26 10:22 ID:???
>>574

わけわかりません。

576 :nobodyさん:02/09/27 00:15 ID:???

___|____
aaa|mona
aab|mona
aac|mona
aaa|giko
aab|giko
abc|mora
というテーブルでaaa aab aacを指定するとmona(だけ)を表示するような
selectの書き方を教えてください。

577 :nobodyさん:02/09/27 00:30 ID:???
>というテーブルで・・・

どういうテーブルか説明しないで「というテーブルで」ってキミ!

578 :nobodyさん:02/09/27 00:37 ID:???

>577
スミマセン。
何を説明したらいいのか分かりませんが。。。
テーブル名、カラム名は何でもいいです。
table baka ( foo text, bar text )


579 :hmk:02/09/27 00:51 ID:QE9TB9SP
>>576
>aaa aab aacを指定すると
の意味が分からない。もっと具体的に書きなさい。


580 :576:02/09/27 01:11 ID:???

分かると思ってハショりすぎました。教えて君の悪いパターンですね。
スミマセン。

select bar from baka where foo ~* '^aaa'とかするとmona gikoが表示されますよね?
これをaaa aab aacをAND検索してmonaだけがひっかかるようにしたいんです。

PerlでPgを使ってるので外部プログラムを使ってAND検索を実現する方法でもいいです。

581 :hmk:02/09/27 01:24 ID:QE9TB9SP
>>580
ANDじゃなくてOR検索でしょ。。。

SELECT bar FROM baka WHERE foo='mona' AND bar IN ('aaa','aab',aac');
----
mona
mona
mona

SELECT DISTINCT bar FROM baka WHERE foo='mona' AND bar IN ('aaa','aab',aac');
----
mona

加茂。

582 :nobodyさん:02/09/27 02:43 ID:???
>576

この文でわかってしまった漏れもアレなんですけど、
fooにaaaとaabとaacを含むようなbarを求めろってことっしょ?

>581
のは、ただ
barにaaaか、aabか、aacを含み、かつ
fooにmonaな奴を出すってやつで違うんでは。

例えば、
bar|foo
---|---
aaa sii
aab sii
aac sii

ってのがあればsiiも出したいって事だろ(違うかな?

-----------------------
select tmp.bar from
(
SELECT
bar,
count(*) as cnt
FROM
baka
where
foo in ('aaa','aab','aac')
group by bar
) as tmp
where tmp.cnt=3

583 :582:02/09/27 02:44 ID:???
(続き)

2分で考えた奴で、あまり綺麗でないけど↑でどうでしょう。
cntにはinで指定した要素数入れてくれ。

select * from baka;
foo | bar
-----+------
aaa | mona
aab | mona
aac | mona
aaa | giko
aab | giko
abc | mora
aaa | sii
aab | sii
aac | sii

結果
bar
------
mona
sii

584 :582:02/09/27 02:58 ID:???
explainしてみた。

Subquery Scan tmp (cost=27.79..27.90 rows=1 width=32)
-> Aggregate (cost=27.79..27.90 rows=1 width=32)
-> Group (cost=27.79..27.83 rows=15 width=32)
-> Sort (cost=27.79..27.79 rows=15 width=32)
-> Seq Scan on baka (cost=0.00..27.50 rows=15 width=32)

(;´Д`)y─┛~~
業務にこれ使わないでね(笑) 
そもそもこういう問い合わせしなきゃならないってことはテーブル設計が拙い様な。
もっといいやり方あるかなぁ?

585 :582:02/09/27 03:06 ID:???
あ、やば・・・
嘘かいちった。

foo | bar
-----+------
aaa | mona
aab | mona
aac | mona
aaa | giko
aab | giko
abc | mora
aaa | sii
aab | sii
aac | sii
aad | mona
aaa | mona

586 :582:02/09/27 03:14 ID:???
select tmp.bar from
(
SELECT
bk.bar,
count(*) as cnt
FROM
(select distinct * from baka) bk
where
bk.foo in ('aaa','aab','aac')
group by bk.bar
) as tmp
where tmp.cnt=3;

一人芝居さびしぃ(;´ω`)

587 :hmk:02/09/27 03:27 ID:???
>>586 PuPuPu...
苦戦してますね。
儂は現役を引退して、手許にDBがないので検証できまそん。
でもちょっと考えてみましょうか。。。

588 :hmk:02/09/27 03:45 ID:???
SELECT DISTINCT bar FROM baka bk WHERE
EXISTS(SELECT * FROM baka WHERE foo='aaa' AND bar=bk.bar) AND
EXISTS(SELECT * FROM baka WHERE foo='aab' AND bar=bk.bar) AND
EXISTS(SELECT * FROM baka WHERE foo='aac' AND bar=bk.bar)

こんなこと出来たっけ?


589 :582:02/09/27 03:56 ID:???
>588
通ったよ。
別にこのぐらいで解決するのは苦戦って言わないんだけど^^;

可読性はいいね。コストは俺のがいいかも。
まぁ、explainで判断してもアレですが。

Unique (cost=75024.35..75024.67 rows=12 width=32)

590 :hmk:02/09/27 04:06 ID:???
>>589 thx!

>別にこのぐらいで解決するのは苦戦って言わないんだけど
確かに、、、失礼しますた。

こんなんで>>576君には分かって頂けましたでせうか。。。

591 :576:02/09/27 07:03 ID:???
>>582-590
適当な説明してしてなかったのに、丁寧に答えていただきありがとうございます!
今から家を出ないと逝けないので、帰ってきたら試してみたいと思います。

初期のシーラカンス本片手に個人でシコシコやってるDB初心者ですので
業務に使うとかそういうのはないです。

592 :576:02/09/27 07:04 ID:???
スミマセン
>>581-590だった。。。

593 :nobodyさん:02/09/27 12:36 ID:???
地理データ型について教えてください。

1. point型のxまたはy座標だけを SELECT というのはできるのでしょうか?
2. point型のデータをy座標順に SELECT というのはできるのでしょうか?
(1.ができればできそうですが。。。)

594 :hmk:02/09/27 16:49 ID:???
使ったことないからよくわからんけど、
演算子の ?- や ?| を使えばなんとかならないかなぁ。。。

595 :593:02/09/27 18:55 ID:???
簡単なことでした。。。

最初にテーブルを作るときに point でなく、int にしておけばよかったのですね。

596 :hmk:02/09/27 18:58 ID:???
>>595
pu.

597 :nobodyさん:02/09/27 19:47 ID:OLJtUF/o
下記のようなテーブルで、fooの中でbarの値が最大のものをそれぞれ
取り出したいのですが、簡単そうで全然できませんでした(;´Д`)
凄いSQLの初歩っぽい質問ですが、お知恵を拝借ください…

foo | bar
---------
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3
3 | 1
というようなテーブルから、
foo | bar
---------
1 | 2
2 | 3
3 | 1
のように、それぞれのbarが最大値になっているfooを取得するselect文なのですが…

598 :nobodyさん:02/09/27 20:44 ID:???
>>597
「それぞれのbarが最大値になっているfoo」というのが
いまいち意味がわからんのだが、例示されてる結果を出すだけなら

select foo, max(bar) from hoge group by foo;

で、いける。


599 :nobodyさん:02/09/27 20:55 ID:???
ありがとうございます!
SQL始めたばかりでいきなり躓いたので凹んでいたところでした。
>>598さん、本当に感謝です。

600 :597:02/09/27 21:06 ID:???
あ、599=597です。
すみません、初心者ついでにもう一点お助けください。
先ほどのテーブルにカラムを追加してみたのですが、同じような foo と bar の
関係で baz を取り出そうとしたら全て取得されてしまいました。
SQL > select foo,max(bar),baz from hoge group by foo,baz
では安直過ぎたでしょうか…

foo | bar | baz
------------
 1 |  1 | aaa
 1 |  2 | bbb
 2 |  1 | ccc
 2 |  2 | ddd
 2 |  3 | eee
 3 |  1 | fff


601 :nobodyさん:02/09/27 21:58 ID:???
そんな簡単な事ぐらい、少しは自分で考えれ。

602 :hmk:02/09/27 22:49 ID:???
>>601
おまいはできるのかぇ?意外とむずくねぇか?

>>600
ちょっと考えてみたんだけど、下のを試してみよ。
儂DBもってなくて試せないから、結果の保証はできんが。
間違ってたら藁って下さい。

SELECT DISTINCT foo,bar,baz FROM hoge h1 WHERE NOT EXISTS(SELECT * FROM hoge WHERE foo=h1.foo AND bar>h1.bar);


603 :597:02/09/28 00:30 ID:???
>602

悪くはないと思うけど、

3 | 1 | ggg

があったらどうなりますかね・・・(藁

SELECT
fb.foo,
bb.bar,
bb.baa
FROM
(
SELECT
foo,
max(bar) as bar
FROM
"2ch"
GROUP BY
foo
) as fb
left join
(
SELECT
*
FROM
"2ch"
) as bb
on fb.bar = bb.bar and fb.foo = bb.foo

604 :597:02/09/28 00:31 ID:???
(続き)

あー、PGバイト&飲み帰りで眠い・・・金曜はねぇぇぇ(;´ω`)
>598にちょっと手を加えた手抜きverっす。
スキーマちょっとちゃうけど。

たぶん、Merge Joinじゃなく、Nested Loop Join使った方が、
データ量小さい場合は早いかも。

-----------------------
foobarbaa
11aaa
12bbb
21ccc
22ddd
23eee
31fff
23ggg
------------------------
[結果リレーション]
foobarbaa
12bbb
23eee
23ggg
31fff

605 :597:02/09/28 01:51 ID:???
>>602
ありがとうございます。
ちゃんと期待通りの結果を取得してくれました!
理解できるまで、今まででかかってしまったのですが…

>>603-604
598さんなのでしょうか。度々ありがとうございます。
3 | 1 | ggg は、私も思いついていなかったです。ますます複雑に(;´Д`)
left joinを使ったSQL文は初めて見ました。勉強になります。


うう、思った以上に難しいです。精進します…。

606 :nobodyさん:02/09/28 02:58 ID:???
質問です。
interval型を使って年-日-時でデータを管理しているのですが、
時から日への繰り上がりは24時間でやってくれるのですが、
日から念への繰り上がりは、365日で1年への繰り上がりを期待したら、
どうやら360日で繰り上がってます。

カウントの値ですので、もちろんうるう年などは考慮に入れなくてかまいません。
interval型を使ったときの繰り上がり日数の指定ってできないのでしょうか?


607 :582 ◆6C3D/kPs :02/09/28 03:04 ID:uO9XS1Su
582だった(爆死
変な名前入れちまったな...(汗

朝生見つつ、酔いが冷めました。

608 :nobodyさん:02/09/28 03:19 ID:9vPkzBLd
PostgreSQLでサブクエリ(副問い合わせ)実装したのっていつからなのでしょう?

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

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

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



609 :nobodyさん:02/09/28 03:22 ID:???
TEL like '03%' では???

610 :hmk:02/09/28 03:40 ID:???
>>603に藁われちった。

>>608
こんなことできなかったっけ?
SELECT COUNT(DISTINCT tel) FROM order WHERE tel LIKE '03%';

611 :hmk:02/09/28 03:44 ID:???
>>606
わかりまそん。Postgresの不具合でないのかぇ?

612 :608:02/09/28 04:28 ID:9vPkzBLd
>>609
失礼、そのとおり(^^;

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

 ……でもこっちも×でした(^^;

613 :hmk:02/09/28 04:31 ID:???
>>612
"order" という表名がいけないのでは。。。

614 :608:02/09/28 05:18 ID:9vPkzBLd
>>613

にゃ、確かにコレでは×ですね。でもこれもやっぱり例題なのでし(^^;
こっちのテスト環境では「users_pre」なのでしね

615 :nobodyさん:02/09/28 05:33 ID:2Rxq6k1c
http://yahooo.s2.x-beat.com/

616 :nobodyさん:02/09/28 17:12 ID:???
>>608
例がひどすぎることが指摘されてるんだから、もう一回書き直せば?
あと、そのSQLを発行したらなんと言って怒られたかぐらいも書けば?
更に何故マニュアルを見ないの?
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/release-6-3.html
あんまし、まじめに調べる気にもならんかったから的外れかも知れんが
副SELECTの実装はこの辺りかららしい。

617 :608:02/09/29 03:08 ID: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"

となります

618 :608:02/09/29 03:08 ID:6ztDeH/m
>>617
失敗。

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

でした

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

ロジック(今回はJSPだが)で実装するしかないのかよー


620 :nobodyさん:02/09/29 16:32 ID:???
"WHERE this_date < SYSDATE-7" (Oracle)
ってのは、Postgreだとどうなるんですか??
Postgreも日付を加減したら日数になるの?

621 :620:02/09/29 16:45 ID:???
違うかな、intervalをto_dateか何かで日付にして、
"WHERE this_date < to_date('7日前')"ですかね?
7日前ってのは"'now'-7"??

622 :nobodyさん:02/09/29 16:45 ID:???
>>620
Oracleは知らんので同じ意味かどうか分からんけど
"WHERE this_date < 'current'::timestamp - '7 day'::interval"辺りか?



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

"SELECT this_date-1" で1日前の日付、
"SELECT current_date-this_date" で日数差も出ますた。
"SELECT now()-this_date" だとintervalになるのね……。

624 :nobodyさん:02/09/30 02:51 ID:NEg9lBdJ
つかぬ事をお尋ねしたいのですが、jdbc.postgres.org にある

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

7.1でも動作する下位互換性はあるのでしょうか?
それとも7.3用に作られているのでしょうか?
(Development Driverだから動作が不安定とかいうことではなく
動作対象として7.1も考慮されているかということ)

625 :624:02/09/30 02:52 ID:???
jdbc.postgres.org → jdbc.postgresql.org

626 :v:02/09/30 04:59 ID:XCndXDeC
http://yahooo.s2.x-beat.com/

627 :nobodyさん:02/09/30 21:37 ID: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を使ってます。


628 :nobodyさん:02/10/01 00:33 ID:wXqFyCgz
>>619
> ロジック(今回はJSPだが)で実装するしかないのかよー

 UNION 使えばごまかせる。

629 :nobodyさん:02/10/01 01:55 ID:???
>>627
WEB-INF/lib か、JDK下のjre/lib/ext に置いちゃえば?

630 :608:02/10/01 01:57 ID:B9rqrzrN
>>628

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

……以下に今まで恵まれた環境にいたかってコトだよな、これ(T_T)


631 :608:02/10/01 01:59 ID:B9rqrzrN
もひとつ問題発生

ExecSubPlan: null value returned by expression subselect

ってどんなエラー? ……「expression subselect」って、だから副問い合わせなんかつかってねーっつーの!(T_T)
必要ならSQLあげますが、まずはどんな(場合に出る)エラーか教えてくださいまし(T_T)


632 :582 ◆6C3D/kPs :02/10/01 03:36 ID:???
grepでpostgresのソース検索スレ。


633 :582 ◆6C3D/kPs :02/10/01 03:41 ID:???
http://archives.postgresql.org/pgsql-bugs/2000-06/msg00046.php

つーか、google検索すりゃトップに出るやん。

634 :608:02/10/01 03:50 ID:B9rqrzrN
>>633
英語ページは回避してました(^^; で、自動翻訳……

バグか? バグなのかっ?(T_T) どーすりゃ回避できるんだっ?!
……勘弁してくれ……(涙)

635 :627:02/10/01 07:11 ID:rRTf7Iur
>>629
アドバイスありがとう。
やってみるす。


636 :nobodyさん:02/10/01 11:41 ID:EVd52m24
>>630
 テーブルA、テーブルBがあるとして、inner join だとAとB、両方にある行しか出ない。(SQL1)
 そこでサブクエリーをつかって、Aにあって、かつBにないものを抽出。(SQL2)
 SQL1 union SQL2 とすると、outer join したのと同じ結果になる。
 詳しくは数年前のメーリング・リストの記事を参照。同じネタ出ていたよ。

637 :608:02/10/01 18:25 ID:B9rqrzrN
>>636
サブクエリー使えない出巣(T_T) >>618がエラーになる出巣。

撃つ出し脳(;´∀`)

638 :hmk:02/10/01 18:34 ID:???
>>637
エラーメセジと問題の具体例を出してみよ。

639 :627:02/10/01 21:23 ID:???
見れたっす。文字化けしてたけど。。。
てことはやっぱCLASSPATHがおかしかったのか。。。
CLASSPATHは入念にチェックしてたのにな。


640 :608:02/10/02 01:19 ID:9gZ3jv4a
>>638

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

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

でエラーが出ないことは確認してある出巣(T_T)


641 :hmk:02/10/02 01:42 ID:???
>>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);
こういうのもたぶん駄目なんだろうな。。。
上手い問い合わせはないもんでしょうか。

642 :hmk:02/10/02 03:46 ID:???
>>640
SELECT ... FROM (SELECT ...); のように、
FROM句にSELECTが来る問い合わせをインラインビューと呼び、
これはすべてのRDBMSで実装されてはいないらしい。
ちゅーことは、>>641のような相関副問い合わせなら通りそうなんだけど。。。
儂はPostgres持ってないんで試せまそん。誰かやってよ。

643 :nobodyさん:02/10/02 05:35 ID:TiRO3wLQ
INSERT INTO TEMP(ボソボソ

644 :nobodyさん:02/10/02 18:05 ID:???
timestamp型で登録されてるレコードに対して
”年月日”だけをひっかけて件数を取得したいのですが
何か手はありますでしょうか?

LIKEでやってみたのですがひっかかりません。

645 :nobodyさん:02/10/02 18:12 ID:???
>>644
LIKEって、時間型は文字じゃないんだから…

date型にCASTすれ。


646 :644:02/10/02 18:27 ID:???
>>645
select * from テーブル名 where date(timestamp型)= '2002-10-02';
上記でできました(泣)
ありがとうございます。


647 :nobodyさん:02/10/05 12:51 ID:2T2tvBuJ
Postgre初心者です。
通貨型のmoneyを使ってみたのですが、
サンプルデータとして'123456789'と入れると
($5,392,229.88)
に化けました…。
なぜなんでしょう。
どうやって入力すればいいのですか?
教えてください。


648 :nobodyさん:02/10/06 11:14 ID:???
>>647
桁あふれ。

http://ml.postgresql.jp/pgsql-jp-old/pgsql-jp/1997Nov/msg00092.html


649 :nobodyさん:02/10/06 20:35 ID:YiJCOGQB
SELECT分でDate型のカラムの集計時間を得たいのですが、
SELECT SUM(カラム) as total FROM テーブル;
みたいなことできないでしょうか?



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

1日とか2日とかの日数を表すならInterval


651 :649:02/10/07 23:51 ID:AXMG8FcF
ああ、そうですね。ごめんなさい。


652 :nobodyさん:02/10/08 11:18 ID:???
ポストグレスキュウエルヲインストールシタガ

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

アツカウベキデータガナイノデイミガナイ、鬱だ氏脳。


653 :名無しさん@Emacs:02/10/08 13:59 ID:???
そんなことより

> mein

ちゅースペルが気になる。

654 :nobodyさん:02/10/08 14:38 ID:???
>>653
その後のデータも含めて見てみれ。
meinDaten
つまり、mainDataのドイチュ語版だろ。
Ich bin mein daten !

655 :nobodyさん:02/10/08 20:41 ID:???
>>653,654
'myData' eq 'meinDaten' dayo... pupupu...

656 :647:02/10/08 21:23 ID:???
>>648
なるほど。そういうことでしたか。
よくわかりました。
ありがとうございました。


657 :nobodyさん:02/10/09 07:55 ID:???
だってドイチュ語知らないもーん。

658 :nobodyさん:02/10/09 10:49 ID:???
質問です。

int型のフィールドに対して
''をインサートを実行すると自動で0が入ってしまうのですけど
''のままインサートできないものでしょうか?

659 :nobodyさん:02/10/09 10:50 ID:oibqlApD
redhat8で7.1.3がmake出来ません。何か対策はないでしょうか?

660 :nobodyさん:02/10/09 13:10 ID:???
>>658 ''じゃなくてNULLならどうよ

661 :652&655:02/10/09 13:56 ID:???
>>658
You can't insert NULL STRING into int-type field.
It's でーべーの基本やね.
As >>660 said, using NULL value instead is recommended.


662 :659:02/10/09 17:01 ID:???
>>659
事故レス。
gccのバージョンが絡んでくるんで無理ぽ。

663 :nobodyさん:02/10/10 02:39 ID:dij3CJ32
最近見てなかったけど、
こんな中途半パンパなネタでもないスレタイトルが
でてきてしまうほどここは低下してしまったのか。
なんて。思ったり。
CGI VS PHP!
ワラェネェ。


664 :nobodyさん:02/10/10 02:39 ID:dij3CJ32
つーか誤爆。すまん↑

665 :anonymous:02/10/15 15:35 ID: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.

666 :nobodyさん:02/10/15 19:04 ID:0ZpQ3Voy
>>665
 解決方法、メッセージに出ているよね?

reduce PostgreSQL's shared_buffers parameter (currently 64) and/or its max_connections parameter (currently 32).


667 :login:Penguin:02/10/15 19:38 ID:???
>>665
I'll change parameter of buffer.
thank you.

668 :anonymous:02/10/16 08:44 ID:o+8CpqDw
>>666

具体的にどのファイルのパラメータを変更すればいいのでしょうか?

669 :nobodyさん:02/10/16 12:40 ID:???
ちっとも自分で調べた雰囲気が無いのが笑えるな。

670 :super:02/10/16 15:19 ID:o+8CpqDw
cd /usr/local/pgsql/data

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

どうすればいいでしょうか?

671 :nobodyさん:02/10/16 15:24 ID:???
#!/bin/sh

672 :super:02/10/16 15:49 ID:o+8CpqDw
#!/bin/sh
cd /usr/local/pgsql/data
という内容の start  というファイルを作成しましたが

$./start

しても実行されません。


673 :nobodyさん:02/10/16 16:47 ID:???
で何か表示されるの?

674 :AAA:02/10/16 18:46 ID:ZpB3Pmml
>>673
何も表示されません。
うまく動作したと思って
PWD してみるとディレクトリは
かわっていません

SOLARIS 2.6 ON SPARC です

675 :nobodyさん:02/10/17 00:12 ID:???
内部コマンド

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

環境:
FreeBSD4.5
Postgres7.1.2


677 :nobodyさん:02/10/17 10:07 ID:???
DBD::Pg 使ってます。

ある任意のテーブルの何行目を削除 みたいなことはできるのでしょうか?
(何行目というのを数字で与えるようにしたい)

678 :nobodyさん:02/10/17 10:12 ID:???
つーか、initdbが終わった$PGDATAディレクトリは
postgresユーザのみrwxのはずなんだが。

ユーザー権限とかそんなんでないの? cd できないってのは。

679 :super:02/10/17 12:54 ID: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
$

680 :nobodyさん:02/10/17 16:51 ID:???
テーブルを作成するときに、フィールドのサイズ(長さ)を指定するのはなぜですか。

681 :nobodyさん:02/10/17 18:46 ID:???
>>680
入れ物を作る側(PostgreSQL)からすれば、そうしてもらったほうが楽だからです。

682 :nobodyさん:02/10/18 10:15 ID:???
>679
その「start」ってスクリプトはpostgresユーザー権限で実行してる?
もしそうなら、スクリプトの中身見せてみそ。

683 :nobodyさん:02/10/18 11:12 ID: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」があるすべての部分でエラーがでるわけでは
ないのです。

回避方法をご存知の方がいらっしゃいましたら、ご教授願います。

684 :nobodyさん:02/10/22 22:50 ID:JaiAlXbK
すいません。
ウィンドウズにインストールしたいのですが、
参考になるページありましたら教えてください。

685 :nobodyさん:02/10/22 22:55 ID:???
>>684
この辺、どうよ?
http://www.mattsuan.jp/~intrasv/pstgresql_a_inst.html
http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html
とりあえず、手持ちのURLから。

686 :nobodyさん:02/10/22 22:58 ID:JaiAlXbK
>>685
ありがとうございます。
調べてはみたのですが調べろといわれるかと思いました。
みてみます。

687 :nobodyさん:02/10/22 23:05 ID:???
>>686
他にもいい情報あったら、俺にもシェアきぼん(w

688 :nobodyさん:02/10/22 23:08 ID:JaiAlXbK
>>687
すいません。いまさっき興味をもったばかりなのでほとんど分かりません。
とりあえずリナックスにしようかと思いました。

689 :nobodyさん:02/10/22 23:16 ID:???
>>688
そか。Win32用もPostgreSQLは、まだいまひとつこなれてないからな。
MySQLも平行して評価してみたら?

690 :Disca ◆4ENAfP6znE :02/10/23 10:34 ID:beWxZTYk
単純質問でスマソ。
テーブルのすべての rows の数を取得したいのですが、
どうすれば良いのでしょうか

691 :nobodyさん:02/10/23 12:20 ID:???
>>690
SELECT count(*) FROM テーブル名;

692 :nobodyさん:02/10/25 18:22 ID:jq5EHClS
テーブル foo から、ランダムに1つの行を取得したいのですが、
どうすればいいのでしょう?

また、同じくランダムにn個の行を取得するにはどうすればいいのでしょう?

693 :nobodyさん:02/10/25 20:21 ID:???
rand(), offset, limit

694 :692:02/10/25 22:20 ID:???
>>693
ども。
調べました。

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

ですね。どもども。

695 :nobodyさん:02/10/26 11:59 ID:Rc/ro/Gq
PHP+PostgreSQLで、ユーザーが検索した結果を自由にソートするのに、
いい方法はありませんでしょうか?
検索した結果を一時テーブルにして、それをorder byすればいいかと思ったけど、
うまくいきませんでした。

696 :sage:02/10/26 12:03 ID:???
http://www.430.jp/rak2/user/9_9_9_9/

697 :gn355my0:02/10/26 15:47 ID:???
>>695
XML

698 :nobodyさん:02/10/26 17:00 ID:???
>>695
「ユーザが自由にソート」の意味がわからない。。。

699 :教えてくん:02/10/27 22:04 ID:???
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
と怒られますた!
なんでですのん?

700 :699:02/10/27 22:09 ID:???
ちなみに、'now'でも同じエラーが出ますた。

701 :699:02/10/27 22:13 ID:???
すまそ!
テーブル仕様変更したのに、sql走らせてなかった。
勘違いですた。

702 :nobodyさん:02/10/28 20:00 ID:EWIjH/IC
PostgreSQL7.1.3をLedHatで稼働させています。
社内からtelnet経由で直接アクセスしてきたクライアントのIPアドレスや時間帯を
記録したのですが良い方法はありませんか。(できれば、どのDBやテーブルに対してアクセスをしてきたかも知りたい)
postgres.conf(だったか?)に、log_connections falseという
項目があって、それをtrueにしたのですが、どこにもログが記録されている気配は
ありませんでした。。。何かやり方が悪いのでしょうか?


703 :nobodyさん:02/10/28 20:10 ID:???
>>702
LedHatって聞いたことねぇな(w

IPなんかすぐ抜けるだろ?
それをDBに格納すりゃいいだけじゃねーか。
ポスグレ単体であれこれやろうとしてんのか?モシカシティ

704 :702:02/10/28 20:31 ID:???
>>703
えーと、かなりどうでもいい細かい突っ込み感謝です(w
(RedHatLinux7.2ですだ)

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

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

ちなみに、初心者君ですいませんが、
>>IPなんかすぐ抜けるだろ?
のやりかたを教えてください(や、ほんとにすいません、わからんのです。ネタじゃなくて。


705 :便乗君:02/10/28 20:41 ID:???
たとえばMS-Accessからodbc接続してきたクライアントのIPを取るのもポスグレ単体じゃできないのカナ-?

706 :nobodyさん:02/10/28 20:56 ID:???
>>702 >>705
シーラカンス本持っていないなら買いましょう。
禿しく時間の節約になるYO!

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

707 :nobodyさん:02/10/28 23:32 ID:Uf/igqC3
試しに漏れもlog_connections on にしてみたが、ログはどこにとってくれるんだ???



708 :nobodyさん:02/10/29 00:06 ID:???
pg_ctl -l <LOGFILE>


709 :nobodyさん:02/10/29 16:36 ID:???
質問ですが、
ストアドプロシージャで動的にSQL文を生成できますか?

710 :nobodyさん:02/10/29 16:47 ID:XTgUUCFa
>>709
 できます。7.2からかな?

711 :nobodyさん:02/10/30 17:36 ID:eV7jEixT
質問です。

例えば、testというテーブルがあり、その中身は

no int,
data text

という二つのカラムがあり、no は数値型、dataはテキスト型です。

noカラムの値が「1」のレコードが3つより少ないなら

insert into test value(1,'hoge');

のSQL文を実行したいのです。
「3つより少ないなら」という文と上記SQL文を
一文で書く良い方法はないでしょうか?

別の言い方をすると、noカラムには同じ値のモノが3つまでしか
入れることができないようにしたいのです。

noの値によって「5つより少ないなら」等と変えたいので、
できればSQL文で制御したいのですが、可能でしょうか?


そもそもinsert文にwhere文や副問合せ等が使えるのかも
イマイチわからないのですが。


やはり複数のSQL文にしないとダメですか?

712 :hmk:02/10/30 21:45 ID:WX2r8Afd
>>712
PL/pgSQLっていうんだっけ。それを使えばできるかも。
儂はOracleのPL/SQLなら使ったことあるが、PL/SQLならば無名ブロックを使って、

DECLARE
num number;
BEGIN
SELECT COUNT(*) INTO num FROM the_table WHERE no=1;
IF num<3 THEN
INSERT INTO test VALUES(1,'hoge');
END IF;
END;

こんなんでできたはず(昔のことなんで文法とかあやしいかも知れんが)。
PL/pgSQLでも同様にできるんでないの?間違ってたら須磨祖。
「一文で」というよりは、「一度の呼び出し」でという感じだが。


713 :nobodyさん:02/10/31 02:50 ID:???
Windows上でPostgreSQLを動かすには、
Cygwin上で動かす方法があると思いますが、
その環境で実際運用しているケースってあるんでしょうか?

714 :nobodyさん:02/10/31 02:52 ID:???
>>713
実験レベルと心得よ

715 :nobodyさん:02/10/31 21:26 ID:???
>>670
遅レスだが、誰も答えてないみたいなので。

シェルスクリプトのプロセスの生成、実行、破棄の過程をよく考えれば理由は自ずと分かると思うが、
alias start='cd /usr/local/pgsql/data'
でお望みの結果が得られると思う。


詳しくは、シェルスクリプト関連のスレへ。

716 :AAA:02/10/31 21:54 ID:qzNXYl3V
>>709

Postgresql の解説書でシーラカンス本って、Oreilly から
出ているやつですか?

717 :nobodyさん:02/11/01 02:26 ID:yeaPQaRo
これって、postmasterの2重起動っすか?

[postgres pgsql]$ ps aux | grep post
postgres 2000 0.0 0.4 5056 840 ? SN Oct31 0:02 [postmaster]
postgres 2661 0.0 0.0 4916 0 ? SWN Oct31 0:00 [postmaster]
postgres 3479 0.0 1.1 5072 2308 ? SN Oct31 0:00
/usr/bin/postgres
postgres 3482 0.0 1.1 5072 2308 ? SN Oct31 0:00
/usr/bin/postgres
root 13094 0.0 0.5 2120 1056 pts/0 S 02:00 0:00 login --
postgres
postgres 13095 0.0 0.4 1692 924 pts/0 S 02:00 0:00 -bash
postgres 13624 0.0 0.3 2324 688 pts/0 R 02:07 0:00 ps aux
postgres 13625 0.0 0.4 1692 924 pts/0 R 02:07 0:00 -bash

718 :ois\\\:02/11/01 08:22 ID:ECdYK2+d
>>715
Thank you

postgres
のuser directory /home/postgres/
のどれかのファイルに書くのですね

719 :質問age:02/11/01 11:02 ID:W+9xVgU/
pg_xlog に以下のような巨大ファイルが出来ています。
何なのでしょうか?
削除してもオッケー?

-rw------- 1 postgres postgres 16777216 10月 31 12:52
                    0000000000000000


720 :nobodyさん:02/11/01 16:48 ID:???
バージョン 7.2 を使っていますが、ラージオブジェクトに
アクセス権限はありますか? それともそのデータベースに
アクセスできるユーザなら、誰でも任意の操作ができるので
しょうか?

>>719 消しちゃダメみたい。
http://www.postgresql.jp/document/pg721doc/admin/wal-implementation.html
http://www.postgresql.jp/document/pg721doc/admin/wal-configuration.html

別に増えていくわけじゃないよね。シンボリックリンクを使えば、
別の場所へ持って行くことも可能らしいです。

721 :nobodyさん:02/11/01 17:39 ID:???
>>720
url ありがとです。
消しちゃだめなのね。なんとなく納得.... でもでかいな。(w

722 :これのことだと思われ:02/11/02 13:52 ID:???
>>716 http://www2b.biglobe.ne.jp/~caco/third_edition/index.html
技評でつ

723 :nobodyさん:02/11/02 16:47 ID:???
>720-721
pg_xlog以下は、トランザクションログ(Write Ahead Log)です。

更新を行うときにDBのページファイルを直接いじるのはコストがかかるので、
一旦WALにシーケンシャルに書き出し、
ページファイルへの反映は非同期に行います。

WALファイルは不要になれば(=WALの中身がページファイルへ反映されれば)、
自動的に削除されます。

なので勝手に消すのは(・A・)イクナイ!!

シンボリックリンクで他に流す場合には、ファイル単位でなく
pg_xlog ディレクトリそのものをどっかに飛ばしてください。


724 :7.2.3:02/11/02 22:52 ID:ucdsOWFj
>>717
PostgreSQLでは複数のプロセスが動いています。

postgresはいわゆるサーバデーモンみたいなもの。
postmasterはクライアントごとにpostgresからクライアントごとに
fork()されて、実質の処理を行う。

以上

725 :nobodyさん:02/11/04 02:58 ID:zPFPSFhP
数少ないPostgreSQLの本の中で、PL/pgSQLについて
一番詳しく解説されているのはどれですか?

因みに自分が使っているPostgresのバージョンは7.2.3です。

726 :nobodyさん:02/11/04 04:58 ID:???
>725

マニュアル。

727 :nobodyさん:02/11/04 12:21 ID:???
>>725
最近オライリーから日本語版が出た Postgres 本を
ちょっと立ち読みしたけど、結構 PL/pgSQL の解説
が詳しかったような気がする。

http://www.oreilly.co.jp/

あの表紙は、マンモスなのかな? PHP の本と混同し
そうなヨカン。

728 : :02/11/04 22:39 ID:B1KD5qMH
pg_log 消しちゃったんですけど、
これって空ファイルをUPしてもダメですよね?
DBあぼーん?

729 :nobodyさん:02/11/04 23:25 ID:EX+F+q+x
cygwinでPostgreSQLやるための手順を説明してあるHPなど
ご存知でしたら教えてください。cygwin用パッケージも
ダウソしたんですけど、通常書いてあるような、手順踏んで
も立ち上がらないんですわ。


730 :nobodyさん:02/11/05 04:11 ID:???
>>728
漏れの場合、DBがタイムスリップしただけで済んだけど?


731 :pg_log:02/11/05 11:25 ID:e5LPgkr8
>>730
タイムスリップとは?
バックアップから復旧したってことですか?

732 :nobodyさん:02/11/06 03:26 ID:???
>728
pg_logはトランザクションの状態を保持しているログファイルですんで、
消しちゃうと、以前のトランザクションの状態を忘れちまいます。

きちんとシャットダウンとかできてれば問題ないんですけど、
障害後とかにpg_log消しちゃうとcommitされてたはずのトランザクションが
DBに反映されてなかったりするかもしれません。

通常は、postmaster止めるときには全トランザクションが終了している
はずなので、あまり問題はないのですが。

運用中に消しちまったなら、それはそれでマズいですね。
特にトランザクション中なら。


733 :pg_pconnect:02/11/07 14:59 ID:???
http://www.itboost.co.jp/php/php_10.php の「持続的接続について」に、
「pg_pconnect では、スクリプトが終了してもデータベースの接続を張りつづけます(pg_close が呼ばれれば切断してします)」とありますが、
PHPマニュアルの「pg_pconnect」には、
「pg_close() は、 pg_pconnect()によりオープンされた持続的接続は 閉じません。」と明記されてます。
記事が間違っているわけですよね??

734 :733:02/11/08 10:47 ID:eJxPn4HT
スレ違いすんまそん。
PHPの話題ですた。

735 :AAAA:02/11/08 14:06 ID:P3hOvOBM
>>702
なぜTelnetでアクセス??時代遅れもいいところ

ssh でアクセスしましょう。 REdhat にssh が
入ってなければ、CD-2 にはいってますので、インストールして下さい

Windows からRed Hat へのssh でのアクセスは
ssh でグーグル検索すると、解決できます。



736 :nobodyさん:02/11/08 20:06 ID:???
>>702
http://www15.xdsl.ne.jp/~vfr/debian/magazinedb/postgresql-setup.html

737 : :02/11/12 10:57 ID:???
postgres SQL 7.1.3 を使用してます。
例えば、field01〜field03のフィールドを持つテーブル"Sample"があったとします。
フィールドのどれかが”猿”という文字を含んでいるレコードを検索するには
select * from Sample where
field01 ~ '猿' or
field02 ~ '猿' or
field03 ~ '猿'
;

とすればよいかと思いますが、
これだとフィールドが増えたとき比例してsql文も長くなってしまいます。
何か上手く省略する方法はないものでしょうか?
whereの対象となるフィールドを"全て"と指定する方法が
あれば便利だと思うのですが・・・


738 :nobodyさん:02/11/12 19:42 ID:???
>>737
不定カラムを指定する方法は知らんけど・・・

where field01 || field02 || file03 ~ '猿'

カラム数に比例して長くなることには変わりないが多少は短くなる。
つーのではダメ?

739 :nobodyさん:02/11/12 20:34 ID:???
>737
設計からやり直した方がいいと思います。

パフォーマンスが劣化するのに比べれば、
多少SQL文が複雑になるのなんて問題ではないです。

そういう設計をしていると、
データが蓄積されて止められなくなったときに、
パフォーマンスが劣化して
完全に使いモノにならなくなる可能性が高いです。


740 :nobodyさん:02/11/13 10:10 ID:Ys/0saOj
初心者ですみません、

SQLで動的にテーブルを作成しているのですが、
テーブル名の検索は、出来ますでしょうか。

単純な質問ですがよろしくお願いします。

741 :nobodyさん:02/11/13 12:38 ID:???
できるよ

742 :nobodyさん:02/11/13 20:29 ID:???
select * from pg_tables;


743 :737:02/11/14 11:38 ID:???
レス遅スマソ

>738
その書き方いいですね。
SQLかなりシンプルになりますね。
いただきます。

>739
某企業の製品のWebカタログ用DBなんですけど
完全フリーワードで殆どのカラムを対象にした
テキスト検索をしたいということなので、いっそまとめて
全カラム指定ができればと思ったのですが、
やっぱり738さんのように、カラムは指定した方がいいですね。

お二人とも助かりました。ありがとう。
っていうかもっとマニュアル読まないといかんなと反省。


744 :737:02/11/14 11:39 ID:???
無意味に省略させてしまった。鬱...

745 :age@2chan:02/11/14 20:24 ID:???
>>741
>>742
遅レスでスマソ、ありがとうございます。

746 :nobodyさん:02/11/18 16:05 ID:hHx05UgU
ヤフオクの画像検索ってどうやって実現してんのかな?
キーワードを付けてるわけじゃなさそう。。。。


747 :nobodyさん:02/11/19 23:11 ID:???
リコー


748 :nobodyさん:02/11/20 17:09 ID:9OjQWVpD
747は746へのヒントなの?

749 :nobodyさん:02/11/21 10:19 ID:T0eOANSL
インストールする時での質問です。
ユーザー「postgres」でtar玉を解凍し、./configureしようとすると

> ./configure: /dev/null: 許可がありません

という表示がでてしまいconfigureが出来ない状態です。
どなたか解決策を教えて下さい。

750 :nobodyさん:02/11/21 20:35 ID:???
とりあえずエラーメッセージを読んで理解してください。


751 :749:02/11/22 08:28 ID:VQdZpxGf
>>750
初心者なので…そのメッセージが理解できないんです。

752 :nobodyさん:02/11/22 17:44 ID:hcJNBN1x
君はPostgreSQLを入れる許可がないらしいぞ >749

753 :nobodyさん:02/11/22 17:53 ID:???
>>752
うまい!

山田君、752さんに(略

754 :nobodyさん:02/11/24 14:16 ID:jX5yz0lF
Win版(postgresql-7.2.1-win32)をXPに入れてみたのですが、
psqlで接続できなくなってしまいました。
pg_hba.conf は、ローカルシステム上のすべてのユーザーに
許可するようにしているはずなのですが...
解決策をご存知でしたら教えてください。お願いします。

psql: could not connect to server:
対象のコンピュータによって拒否されたため、続できませんでした。
Is the server running on host localhost and accepting
TCP/IP connections on port 5432?





755 :nobodyさん:02/11/24 14:21 ID:???
win房や。マニュアルぐらい読め。
どうせ、pg_hba.confで設定してないか-iオプションついてないんだろ。


756 :nobodyさん:02/11/26 05:08 ID:9GlaXfXk
postgresって文字列を置換するSQLはないのでしょうか?
(Oracleならたしかったんだけどな。。。)

757 :gn355my0:02/11/26 10:22 ID:???
>>756
>>755

758 :746:02/11/28 11:50 ID:oGIU5VGK
>747 ありがたう。リコーのページ逝ったらわかったよ。

うーん まだ個人が作れるものじゃないのかなぁ・・・・・
キーワード付けるしかないのか・・・・・


759 :nobodyさん:02/11/28 16:49 ID:???
ttp://www.sra.co.jp/public/sra/topics/topics2002/021127.shtml

760 :nobodyさん:02/11/29 14:44 ID:???
7.3age

761 :nobodyさん:02/12/03 13:48 ID:mw59SOfb
トリガプロシージャを作っています。
New.カラム名 とか Old.カラム名 でデータの取得をする時、
カラム名をテキスト型の変数から指定したいと思っています。

例えば、下記のような場合、
column_name varchar(50) := ''data_name'';
・・・↓
new.column_name;
のように指定したいのですが、column_nameを変数ではなく
フィールド名として認識します。
これを、フィールド名として認識させるには
どうしたらよいでしょうか?
PostgreSQL 7.2.3を使っています。
よろしくお願いします。

762 :761:02/12/03 13:50 ID:???
間違えました。訂正↓

column_nameを変数ではなく
フィールド名として認識します。
変数の値をフィールド名として認識させるには
どうしたらよいでしょうか?


763 :?Sメ:02/12/04 12:45 ID:4lhjBjYk
教員のプロフィール(英文字のfirst_name,family_nameを含む これが検索キー)
のデータベースと、教員の受け持つ授業科目のデータベースがあります。

この2つのデータベースから教員のプロフィールに授業科目を加えたものを
つくりたいと思っていますが、うまくできません。

select .... from profile, kamoku
where profile.family_name='*****'
and profile.first_name ='*****'
and ????????????????????

???????????のところで、
うまくプロフィールの方で限定した教員名で科目の方の教員名を
限定したいのですがどうしたらいいでしょうか?

764 :761:02/12/04 13:07 ID:???
>763
テーブルの構造がわからないと、どうしたらいいかなんて
説明できないです。

765 :ベテラン教師:02/12/04 16:27 ID:???
>>764
ぷっ わからんなら答えるなよ

入れ子構造にすればよい こんなの簡単じゃないか はは

766 :761:02/12/04 17:22 ID:???
>765
いやぁ〜副問い合わせがわかるレベルならこんな質問しないでしょう。
副問い合わせ使わなくてもできるかもしれんし。。。

で、ベテラン教師さん、761の質問教えてくださいよー

767 :nobodyさん:02/12/04 21:07 ID:4d678Rrg
設計について質問なんですけど、

2ch型の掲示板をDBで実装(?)するときに、1スレッド1テーブルで、
スレッド一覧、みたいなテーブルを一つ持つ。

っていうのが、全部を一つのテーブルに入れるのとの、欠点(遅くなる)
とかって何なのでしょうか?

できれば、スレッドごとにテーブル、にしたいんですけど。

768 :nobodyさん:02/12/04 21:41 ID:kMXe/HJp
スレッドごとにテーブル用意すんの?
スレッド増えたらテーブルも生成すんの?

769 :767:02/12/04 22:43 ID:4d678Rrg
うん。
まずいかな。。



770 :nobodyさん:02/12/04 23:33 ID:kMXe/HJp
まずいっていうか、テーブル構造もクソもないな。
スレッドを格納するテーブルはバチっと決めておいて、
レコードとしてスレッド格納するように設計すれば?


771 :767:02/12/05 00:07 ID:6rvWMyhf
なるほど。。

最終的には、ツリーっぽいデータ形式にしたい。(スレッドの中にスレッド)
だから、レコードに詰め込んでいくと苦しくなりそう。

で、ばしばしテーブルを増やすことは、無駄なこと、なのかな??
ある程度大きくなることが期待されないと、読むときの効率が悪くなる。?
具体的には、テーブルの生成によるオーバーヘッドみたいな物とかは、存在するのか。

772 :nobodyさん:02/12/05 00:26 ID:vXkLaZQH
動的にSQL投げてテーブル増やすのはやめたほうがいいよ。
そのために、DB設計とか、スキーマ設計ってものがあるんだから。
テーブル内で、あれこれやるのはいいだろうけどさ。
商用プロジェクトだったら、必ずDB設計書を書くだろ。
動的に生成されるテーブルがあるなんて、あんまり聞かないぞ。

773 :nobodyさん:02/12/05 00:40 ID:6rvWMyhf
ぅ。もしかして、ツリー形式のデータをRDBMSにぶち込むのは、根本的に間違ってるとか。かな。
他にちょうどいいのを探すか・・

774 :nobodyさん:02/12/05 01:02 ID:???
>>772

??? 動的にテーブル生成するというは、当たり前のことだよ。

775 :nobodyさん:02/12/05 01:06 ID:Ejjyn6K+
>>774
正規化していないのがばれまくり・・・

776 :nobodyさん:02/12/05 01:11 ID:vXkLaZQH
>>774
だから、メンテできなくなるDBが多いんだよ

777 :nobodyさん:02/12/05 01:15 ID:???
データベース設計とは、例えば「先生リスト」「生徒リスト」というテーブルがあったとして、両方に住所があるから「住所テーブルを作ろう」とか、そういうことをやる。
記事の場合は題名と日付と投稿者と本文しかありえないんだから、テーブルいくつも作っちゃだめ。

778 :nobodyさん:02/12/05 01:29 ID:???
http://www.torikyo.ed.jp/torie-h/
これは、田舎のひなびた小さな学校のHPを100万ヒットの
人気HPにしてあげようという運動です。現在のターゲット校は上記です。
多くの皆さんクリックしてあげて下さい。
HPに飛んだら、2,3回更新していただくと、もっとありがたいです。
どんどんコピペして他の板にまいてください。
http://www.KissLoveTOCO.com/

779 :nobodyさん:02/12/05 01:56 ID:6rvWMyhf
記事にIDをふれば、IDと、内容が対応するようになるから、それでいいんじゃないのか?





780 :名無しさん@Emacs:02/12/05 04:53 ID:???
スレタイテーブルとカキコテーブル作って、
スレタイにスレID振ってカキコにもスレID振ってjoinつーのが
普通の設計だべ?多分。


781 :gn355my0:02/12/05 10:53 ID:???
>>780
それだとスレごとに連番を振れなくなる罠

782 :nobodyさん:02/12/05 11:27 ID:???
uniqで昇順になってれば連番じゃなくていいじゃん。ってのはダメ?
別んとこにsequenceだけ持っておく、というのもアリかも。


783 :nobodyさん:02/12/05 16:31 ID:zuT0nBpD
>>780
スレタイテーブルに最終番号をつけといて

BEGIN;
SELECT 最終番号 FROM スレタイテーブル;
INSERT INTO カキコテーブル(スレid, 最終番号 + 1, メッセージ, ...);
UPDATE スレタイテーブル SET 最終番号=最終番号 + 1;
COMMIT or ROLLBACK;

うちはこうしてる。

>>773
SQLだけでもできるけどメチャクチャ遅くなる。
メモリに読みこんでバイナリツリーかな。
レコードに親番号が入ってれば何とかなるよ。


784 :nobodyさん:02/12/05 18:09 ID:???
plpgsqlで作成したトリガファンクション内で
 CREATE GROUP
は使えますか?

CREATE GROUPの行でエラーになるんですが、
原因の特定がうまくできないもので。。。
使えるか使えないかだけでも、わかる方いらっしゃいませんか?

785 :nobodyさん:02/12/06 18:47 ID:n3ITkPRW
case 文で、NULL の時、'1'を入れるってやりたいんですが、うまくいかないです。

select case NUMBER when NUMBER is null then '1' else NUMBER end from AAA ;


786 :ポトスグレと弱気に発音:02/12/06 19:23 ID:e3P89aGI
最近postgreSQLをさわり始めたんだけど、まぁDB自体もこれが最初。
まぁ、なんとかユルユルと走らせる程度の事はできるんだけど、
何やらよくわからんのはバキュームやらバックアップやら。
バキュームっつーのはつまり、ノートン先生のスピードディスクみたいなもん?
バックアップは通常全部のSQLをどっかに溜めるとかするのか?
バキュームやらバックアップやらはPostgreを走らせながらできるの?頻度は?
なんて事を小学生でもわかるぐらいの平たい文章で説明してるサイト
とかないものか・・・と

787 :nobodyさん:02/12/06 20:34 ID:RV7qzP6C
>>785
型変換だろ?
つまりインテガーとかブーリアンだからそうなるのよ。
わかる?


788 :nobodyさん:02/12/06 20:35 ID:WQv5Y1p0
>>786
シーラカンス本を読むといいよ。

789 :ポトスグレと弱気に発音:02/12/06 23:32 ID:e3P89aGI
>>788
ありがとうございます。ちょいと本屋で購入してみます。

790 :nobodyさん:02/12/08 04:30 ID:cZH6KLf5
redhat環境でpostgres7.2.3から7.3にアップデートしたんですが、
windowsからtcp/ip経由で接続時、パスワードを入力しても不正と言われログインすることが
出来なくなってしまいました。
pg_hba.confなどは特に変更していないのですが、何か設定しなければいけないものがあるんでしょうか?
(認証方法をtrustにすると、tcp/ip経由でもログインすることは可能になります)



791 :☆☆☆☆☆:02/12/08 05:20 ID:mpITnhtZ
http://yahooo.s2.x-beat.com/linkvp/linkvp.html

792 :nobodyさん:02/12/08 12:55 ID:???
Changesにも書いてあるみたいだけどpg_hda.confの書式が変わってるみたいだよ
http://developer.postgresql.org/docs/postgres/client-authentication.html

793 :nobodyさん:02/12/08 16:53 ID:CK0ZspDs
MacOS X にPostgreSQLをインスコしてます。
MacOS X のエクセルで作ったcsvファイルをインポートしたいんですが、
うまくいきません。たぶん、sjisからuecに変換すりゃいいとおもうのですが、
TextEditでEUCにして保存してもエラーがかえってきてしまいます。

で、MacOS Xで動くPostgreSQL用のGUIクライアント(ファイルインポート付き)という都合の良いものはないでしょうか。
当方、筋金入りのマカーなのでWindowsなんてものは自宅にありません。すいません。

794 :nobodyさん:02/12/08 17:49 ID:???
なにが問題なのか理解すれば簡単だと思うよ。
エラーが出る前後のデータをよく見てみれば?

795 :nobodyさん:02/12/08 18:59 ID:J0X/eNGY
>>794
エラーメッセージを書こう。

796 :nobodyさん:02/12/09 16:35 ID:8KLf+wGF
犬 | パトラッシュ | 大型
犬 | ゴン助 | 中型
犬 | カール | 小型
猫 | チャトラン | 長毛
猫 | クロ | 短毛

というテーブルと

犬 | 01
猫 | 02

というテーブルがあった場合、VIEWなりで検索結果を

犬 | 01 | {パトラッシュ,ゴン助,カール} | {大型,中型,小型}
猫 | 02 | {チャトラン,クロ} | { 長毛,短毛 }

なり

犬 | 01 | {{パトラッシュ,大型},{ゴン助,中型 },{カール,小型}}
猫 | 02 | {{チャトラン,長毛},{クロ,短毛 }}

なんて配列に格納し直す方法って、ありますか?
サブクエリーでは、複数の検索結果を入れ込むことが出来ず、やはり
FUNCTIONを作ってLOOPなりWHILEなりで回すものでしょうか?

797 :796:02/12/09 18:31 ID:???
>>796
自己レスですが、やっぱりFUNCTION作ってループ処理させ、
そのFUCTIONをVIEWに組み込んで、あっさり解決しました…

798 :nobodyさん:02/12/09 20:33 ID:KNhGAZpk
DBを作るときに入力したSQLを書き出すコマンドとかってありますか?
*.sqlを間違えて削除してしまいました・・・(泣)

799 :nobodyさん:02/12/09 22:13 ID:???
「DBを作るとき」というのがテーブル定義のことならば、pg_dumpで出せるよ。
データを出さずにテーブル定義だけを出力するオプションもあったはず。

800 :798:02/12/10 09:14 ID:???
>>799
出来ました!ありがとうございます。

801 :nobodyさん:02/12/10 12:53 ID:???
テーブル"A"のフィールド"ID"にあってテーブル"B"のフィールド"ID"に無い
ものをSELECTするってどういうSQL書けばいいんだっけ?

802 :gn355my0:02/12/10 14:04 ID:???
>>801
あ〜 そーゆーの昔流行ったよね〜

オトコにはあるけどオンナにはないもの
とか
ポパイは2でオリーブは1
とかってやつだろ?

この問題は難しいなぁ。。。もうちょっとヒントくれない?

803 :nobodyさん:02/12/10 14:29 ID:8bCVhaMr
>>801
FROM区でAとBをLEFT JOINして、WHERE区でB.idがNULLのヤツだけ選べ。
漏れの借りてる鯖のPostgresは7.0.3だから、JOINが使えなくて試せなんだ、すまん。

804 :801:02/12/10 17:41 ID:???
>>803
ありがとうございます。
SELECT * FROM table_a NATURAL LEFT JOIN table_b WHERE table_b.id = NULL
で出来ました。

805 :nobodyさん:02/12/12 23:43 ID:???
>>801
普通はexistsを使うと思うが…

806 :nobodyさん:02/12/13 11:00 ID:kiLZZUkt
7.2.1から7.3にバージョン上げたら、NOTICEとかERRORのメッセージが2回ずつ出てくるようになっちゃったんだけど…
他にもこの現象起きてる人っている?

807 :bloom:02/12/13 11:02 ID:wUIKbYLk

http://www.agemasukudasai.com/bloom/

808 :nobodyさん:02/12/16 13:10 ID:???
テーブルにカラムを追加したいんですが、
SERIAL型は追加できないのでしょうか?

ALTER TABLE T_EmpEmerg ADD seq_id SERIAL;

809 :nobodyさん:02/12/16 15:21 ID:???
正確なやり方を知らないから7.3で試してみた。
テーブル名はtestね。

serial型を追加しようとすると、
ERROR: Adding columns with defaults is not implemented.
Add the column, then use ALTER TABLE SET DEFAULT.
と言われたから指示通りに

create sequence test_id_seq;
alter table test add column id integer;
alter table test alter column id set not null;
alter table test alter column set default nextval('public.test_id_seq'::text);

とやったらできた。
ちょっとは自分で試してみたの >808

810 :nobodyさん:02/12/16 16:20 ID:qVo6yZm2
すいません、
問い合わせ結果でnullのときは0を返し、そうでないときは結果そのものを返す、
としたい場合は、どうしたらよいのでしょうか。

811 :nobodyさん:02/12/16 16:34 ID:???
>809
ALTER TABLE test ADD seq_id SERIAL;
としたらエラーになったので
ALTER TABLE test ADD seq_id SERIAL SET DEFAULT 0;
とかやってました・・・。
先にCREATEするんですね。ありがとうございました!

>810
CASEをつかえば出来ると思います。↓
http://www.postgresql.jp/document/pg721doc/user/functions-conditional.html

812 :nobodyさん:02/12/16 17:25 ID:???
>811
810です。
CASEでできました!
ありがとうございました。

813 :nobodyさん:02/12/16 18:07 ID:ahIqt+Qv
これまで7.1.2を使っていたのですが、今度は6.5.3に先祖返りしてしまい
ますた。

6.5.3って outer join の概念さえないって本当れすか?



814 :nobodyさん:02/12/16 18:12 ID:???
outer join 構文が無いだけです。同等の集合を得る事はできます。

815 :nobodyさん:02/12/16 18:15 ID:ahIqt+Qv
>814さん すみません。ヒントをいただけますでしょうか? 



816 :bloom:02/12/16 18:44 ID:A19iV2CP

http://www.agemasukudasai.com/bloom/

817 :nobodyさん:02/12/16 18:46 ID:???
>>815
outer join がどういう集合かをよく考えましょう。
たとえばテーブル a と b についてそれぞれの id 列で left outer join するなら
select .... where a.id = b.id union select .... where a.id not in (select id from b);
みたいな感じでいけたと思います。

7.1 が出る前は PostgreSQL の FAQ みたいなもんだったので、探せばこの辺の
解説をしてるドキュメントが色々見付かるんじゃないでしょうか。


818 :あぼーん:あぼーん
あぼーん

819 :nobodyさん:02/12/17 14:52 ID:6p0SRl9w
管理ツールのお勧めあります?
pgadmin2も使ってみましたが、いまいちでした、、
Enterprise Managerみたいのが、あると良いなぁ、、

820 :nobodyさん:02/12/17 17:36 ID:6p0SRl9w
7.2.1なんですが、
psqlで、フィールドの削除のやりかたが分からないのです。
7.3ならできるのでしょうか?

821 :nobodyさん:02/12/17 18:18 ID:???
> 820
7.3は知りませんが、7.2.3ではカラムの削除について下記に書いてあります。
http://www.postgresql.jp/document/pg721doc/reference/sql-altertable.html
下のほうです。

822 :nobodyさん:02/12/18 23:06 ID:???
とあるデータベースの全てのテーブルやらシーケンスの権限を一括して変える方法ってあります?

 GRANT ALL ON * TO PUBLIC;

みたいなのでできれば楽なんだけど。

823 :nobodyさん:02/12/19 02:30 ID:FGefAUMK
すみません。こちらにも書き込ませてください。

PostgreSQLのバキュームについて教えてください。

当方6.5.?なので、バキュームは非常に不安定です。
また、バキュームだけではインデックスは作り替えてくれません。
ですので、代わりにDBのメンテとして
pg_dumpでバックアップし、dropdb,createdbをして
psqlで復元するという方法を使おうと思うのですが、
問題ないですか?
(一度バキュームでDBが壊れたことがありますので。。。)

824 :nobodyさん:02/12/19 18:24 ID:???
timestamp with time zone だと GMT で保存されまつか?
timestamp without time zone で作ったカラムを with time zone で取り出したりできまつか?
仕様ころころ変えんなやなぁ。

825 :nobodyさん:02/12/20 03:03 ID:???
インデックスの作り変えは、reindex か drop index & create index

826 :nobodyさん:03/01/07 00:53 ID:???
postgreSQLでレプリケーションって現実的だと思う?
http://usogres.good-day.net/
http://www.fastconnector.com/
こういうものもあるケド、実際にレプリケーション
やったという経験のある人の意見を聞きたいです。

827 :nobodyさん:03/01/10 11:30 ID:fFednd0x
Redhat7.2 でデフォルトのrpmパッケージで
postgresqlを稼働させています。

文字コードをEUC_JPにしたいのですが、
redhatデフォルトだと、
 template1 | postgres | SQL_ASCII
とSQL_ASCIIになります。

ソースからインストールするときは、./configure
で指定するやり方は知っているのですが・・・

お手透きの時で結構ですので、ご教授願います。

828 :nobodyさん:03/01/10 15:49 ID:???
>>827
Redhatは使ったことが無いのでどういったオプションで
コンパイルされてるかはわかんないけど、
initdb -E EUC_JPとかcreatedb -E EUC_JPではどうですか?

829 :nobodyさん:03/01/11 02:38 ID:???
>>828
その方法だと、見た目はEUCだけど、実際はSQL_ASCIIになっちゃうんじゃなかったっけ?
自信ないから、ごめん。

830 :nobodyさん:03/01/11 03:02 ID:???
普段はSQL_ASCIIにしてるからよく知らないけど、
http://www.postgresql.jp/document/pg721doc/admin/multibyte.html
をみると、それでいいみたい。

831 :nobodyさん:03/01/11 21:35 ID:yqAMD38w
int型UNIX時間をPostgreSQLのtimestamp型に変換するにはどうしたらいいの?

832 :山崎渉:03/01/15 13:33 ID:???
(^^)

833 :nobodyさん:03/01/16 16:40 ID:ru9T9Sg6
TIMESTAMP型のフィールドを持つテーブルがあったとして、
例えば、2002年12月中のデータだけ抽出するには、どんなパラメーター
で出来ますか?

強引に、
TIMESTAMP>'2002-12-01 00:00:00 AND TIMESTAMP<2002-12-31 23:59:59'
とすれば出てきますが、アプリケーションからパラメタとして引き渡すのに
しんどいです。


834 :nobodyさん:03/01/16 19:19 ID:n/WrAFU3
>>833
WHERE to_char(TIMESTAMP, 'YYYY-MM') = '2002-12'; じゃダメ?


835 :834:03/01/16 19:31 ID:n/WrAFU3
うーん、もっとスマートな方法が思いつかない・・・。

「2002年」だけとか「12月」だけとかなら、以下の方法でもいいかも。
http://ml.postgresql.jp/pgsql-jp-old/pgsql-jp/2000Jun/msg00574.html
1.誕生月を指定して、検索(SELECT)するには?
(6.5.3)
SELECT * from birthday from where date_part('month', birth)='6';
SELECT * from birthday from where date_part('month', birth)='06';
(7.0 or later)

836 :834:03/01/16 19:35 ID:???
同じ質問があった。
[pgsql-jp 15577] Re: 日付型のSQLについて
http://ml.postgresql.jp/pgsql-jp-old/pgsql-jp/2000Jun/msg00616.html

837 :833:03/01/17 11:11 ID:tgNj6nW9
>>834
>>835
>>836

ありがとうございます。
試してみたら、めちゃくちゃレスポンスが悪かったです。
>>836の紹介記事にもあったのですが、変換したりすると、せっかく設定
したインデックスが使われないようです。

諦めて、しんどい方法でやっていくことにします。


838 :nobodyさん:03/01/17 15:04 ID:O7wqB+4a
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
createdb: database creation failed

というようなエラーが出てしまい、データベースを作成することができません。
postmaster は起動しているようです。
どうしたらいいのでしょうか?

839 :vvv:03/01/17 15:15 ID:RZuaWe8+
http://www6.ocn.ne.jp/~endou/index2.html
     ★YAHOOOプロフィール★

840 :nobodyさん:03/01/19 17:40 ID:???
>838
man postmasterして-iオプションの項目を読め。
それでも分からなければ、どういう環境でどうやっらだめだったかを書け。

841 :nobodyさん:03/01/19 21:11 ID:???
>>837
元々のtimestampじゃなく、>>834-836のような変換後の値に
関数インデックス、って手もある。


842 :nobodyさん:03/01/20 17:54 ID:Gy69YlCs
>>826
遅レスすまそ。
レプリケーションは7.3で導入する予定だったんだけど間に合わず、
7.4に持ち越しになったんじゃなかったっけ?
というわけで、現行のレプリケーション用ミドルウェア?は
なくなるような気がする罠

843 :nobodyさん:03/01/20 18:40 ID:frlninEM
(゚д゚)ウマー

844 :nobodyさん:03/01/20 20:16 ID:???
>842
レプリケーションは、アーキテクチャや実装、運用環境によって、
複数のソリューションが並立し得るので、
単一の実装に収斂していくということはないでしょう。

845 :nobodyさん:03/01/21 21:43 ID:k4hDw3ac
Software Design 2003年2月号の Webシステムチューニングパーフェクトガイドという特集で、
Postgres での負荷分散と分散トランザクションについての特集やってたよ。

かなり面白い。


846 :nobodyさん:03/01/22 17:56 ID:46vMCsSo
Redhat+PostgreSQL+PHPでwebprogをやっています。
端末は、主にwinから行っています。

SQLに関しては自信があまりありません。
SQLコマンドポチポチうって、テーブルの作成するの面倒でつ。
http://www.hi-ho.ne.jp/tsumiki/のCSEと言うツールを使っているのですが、
いまいちしっくり来ません。
webminのpostgresqlのツールは良いのですが、webmin自体
あまりインスコしたくありません。

なにか(・∀・)イイ!!ツールあったらおしえてください。

847 :nobodyさん:03/01/22 18:23 ID:aZrGkOwn
phpPgAdmin

848 :hmk:03/01/22 18:45 ID:skROudWD
>>846
テキストエディタでテーブル定義のSQLを編集し、psql上にコピペしろ。

849 :nobodyさん:03/01/22 18:59 ID:???
頻繁にテーブルを作ったり消したりするなら、makeコマンドを使うのもいいぞ。
まぁテーブル定義のSQLは自分で書くわけだが。


850 :nobodyさん:03/01/22 19:45 ID:???
なにもコピペしなくても、
psql -f table.sql でファイルを読ませればいいじゃん。

851 :hmk:03/01/23 00:21 ID:???
ふーん。今度試してみよう。

852 :nobodyさん:03/01/23 01:33 ID:aJndFgws
win2000でcygwinをいれてPostgreSQLとPHP
を使って住所録を作ってます。
そこに「最初に登録した日付」と、「最終更新日」をいれようと
思ってるんです。
最終更新日をTIMESTAMPにすればいいというのは、
検索してわかったんですが、最初に登録した日付というのは
どういう設定をすればいいでしょうか。

853 :gn355my0:03/01/23 02:14 ID:???
>>852
now()

854 :ほげ:03/01/23 10:36 ID:Vttepi7g
>>852
default now,
ほげほげ。

855 :nobodyさん:03/01/23 15:18 ID:2Xl85Zl1
PostgreSQL7.3.1-1つかっていて
"pg_relcheck" does not exist
になりました。pg_relcheckはなくなっちゃったんでしょうか。



856 :nobodyさん:03/01/23 16:16 ID:MK3OE1fp
http://jsweb.muvc.net/index.html
     ★こんなサイト見つけました★

857 :nobodyさん:03/01/23 17:24 ID:zqFajCIj
>>855
このページを pg_relcheck と pg_constraint でページ内検索してごらん。
http://osb.sra.co.jp/PostgreSQL/7.3/changes.html

858 :nobodyさん:03/01/24 20:45 ID:+YoyoLvT
pgsql-jpはなんでスレッド切る人ばっかりなんだ

859 :nobodyさん:03/01/27 23:38 ID:qiTUaeBV
apache+PHP+ipc-daemon+postgresといった環境を作ったのですが、
$ psql -U username dbname < database/database.pgsql
と実行すると
\connect: FATAL: user "root" does not exist
となってしまいます。どの設定(環境変数?)を訂正すれば
よいのでしょうか。

860 :nobodyさん:03/01/28 15:08 ID:oYLjlQQn
ユーザを作ればいいんじゃない

861 :nobodyさん:03/01/28 17:58 ID:???
ipc-daemonてことはWindowsか。
>>860のいうようにユーザ作ってから先でまたコケそうだな(w

862 :nobodyさん:03/01/29 20:04 ID:TOlFKMtQ
誰か教えてください・・
複数テーブルの特定の列の中から検索したいんです
下記のようにテーブルを必要なところだけ結合して
そのあと検索文字をいれればいいと思ってたんですが

SELECT A.m,B.n FROM A,B WHERE A.o = B.o
このあとに検索したい文字をいれてもだめなんですよね?


863 :nobodyさん:03/01/29 21:11 ID:???
すいません、解決しました。が、解決してまた困ってます・・・

SELECT A.m,B.n FROM A,B WHERE A.o = B.o AND A.m LIKE '検索言葉%'
はできましたが、
A.m,B.nに対して同じ検索言葉で検索をかけたいんですが
どうすればいいでしょうか・・・


864 :nobodyさん:03/01/29 22:03 ID:???
>>863
WHERE ( a.a = b.a OR c.c = d.c) AND (e.e = f.f)
とかそういう単純な話ですか?

SQLはどこで(あるいはどの本で)勉強してます?


865 :nobodyさん:03/01/31 18:45 ID:9q8lNi9S
PowerGresベータでたね。

866 :nobodyさん:03/02/03 00:09 ID:NaYZglLl
ポアグレは、商用か。。。
最近のWin版ポスグレは、どうなのん?
http://download.desk.ne.jp/win/2/00026/4991.html
http://www.nonsensecorner.com/pgsql/


867 :nobodyさん:03/02/03 01:05 ID:???
PowerGresが30日の限定で凹んで、cygwinのを入れてみた。
一年半ぐらい前に入れたときは自分でcompileしたんだが今のはcygwinのインストール時にインストールできる。
性能はどうだろうなぁ。普段使ってるLinux鯖はCPUパワーも違うのでよく分かんないや。

Win用apache、PostgreSQL@cygwin、php@winでちょっと遊んでみたけど、
ローカルで実験するには問題ないみたい。

ついでにFireBird、MySQLも入れてみたが、どれも正常に動いた。

868 :nobodyさん:03/02/03 01:18 ID:lZTOrefb
ポスグレってユーザごとにデータベースへの、
アクセス権限付けれん?

grantだとテーブルごとじゃんか

869 :nobodyさん:03/02/03 02:12 ID:???
俺も30日限定には参った。
せめて個人用途向けにはFreeで出して欲しかったよ。

Native版pgsqlの作者もPowerGresの開発に携わっていたみたいだが、
7.3.1用psqlは作っていたからその後も継続すると思うんだが。

870 :nobodyさん:03/02/03 10:57 ID:avIlzK7i
やっぱしWinで使うならMySQLがこなれてるかな。

871 :nobodyさん:03/02/03 16:28 ID:KAKRkF84
>>870
WinならFirebirdだろやっぱり。

872 :nobodyさん:03/02/03 20:46 ID:UWLHra2g
PowerGres入れてみたけど、異様に遅い。
まだベータなのでしかたないのかもしれないけど。

CREATE TABLE test (
code VARCHAR(64) NOT NULL,
field001 VARCHAR(64) NOT NULL,

field032 VARCHAR(64) NOT NULL,
PRIMARY KEY (code)
)
(本当はfieldをもっと増やしたかったけど、firebirdの制限に引っかかるため)

これに3万レコードINSERTして、
SELECT * FROM test ORDER BY code;を発行すると、
MySQL-MyISAMが00:13:79
MySQL-InnoDBが00:09:413
Firebirdが00:14:010
PwerGresが13:06:851

ちなみにテストして思ったけど、FirebirdのJDBCドライバってリークしてない?

873 :nobodyさん:03/02/04 01:18 ID:1kJ2WuvK
Firebirdって、実績あるの?

874 :nobodyさん:03/02/04 01:48 ID:???
>>873
元になってるInterBaseは実績あるよ。
続けるならスレ違いになりそうだから、プログラム板にどうぞ。
てか、最近そっちにスレがあることに気付いた(w

875 :873:03/02/04 11:18 ID:1kJ2WuvK
>>874
Thx!!

876 :nobodyさん:03/02/04 13:12 ID:P8TNJ8Cd
ム板のスレ見てみたけど、微妙だね。小規模ならMySQLの方が良いかなぁ。
PowerGresに期待したいのだが、こっちも微妙だ。

877 :nobodyさん:03/02/04 13:56 ID:1kJ2WuvK
海外だと、大規模サイトのバックエンドでも、MySQL使ってるらしいじゃん。

878 :nobodyさん:03/02/04 14:00 ID:P8TNJ8Cd
まぁ、プラットフォームがWindowsだから。

879 :nobodyさん:03/02/04 18:54 ID:ECWcc/cR
MySQLはカーソルとストアドがないからねぇ。
5.0で実装されるらしいけど。

サーバーサイドでFirebirdを使った場合、
同時アクセス200以上に耐えうるかも疑問。
SQLServerだと200くらいから性能が落ちてくるみたいだし。
http://www.eweek.com/article2/0,3959,293,00.asp


880 :nobodyさん:03/02/04 19:48 ID:Ogsd33ZD
SQL-Slammer騒ぎで、もはやSQL-Serverの信頼は地に落ちたね。


881 :nobodyさん:03/02/05 10:06 ID:???
>>880
パッチをあてない社員が社内で信頼されなくなっただけ。

882 :nobodyさん:03/02/05 16:19 ID:???
>>881
一般人はそうは思わんでしょ

883 :nobodyさん:03/02/05 16:40 ID:WE3fnQsD
決裁権のある、企業のお偉方の認識はすでに、
「SQL-Serverはダメだ」

米セキュリティ企業大手も、SQL鯖には落第の"F"をつけたらしいじゃん。

884 :nobodyさん:03/02/05 17:00 ID:???
つまりさ、当てなきゃいけないパッチが多すぎる、
あるいはパッチの副作用が大きくて管理者に敬遠される、という点から見ても
「SQL Serverはダメ」という結論になるわけで。


885 :nobodyさん:03/02/05 17:48 ID:???
てかDBへ接続できるポートを外部に開いてる時点で、その管理者が終ってる気がするな。
管理者といってもDB管理だけの場合もあるし、ネットワーク全体を押さえてる場合もあるわけだが。
やらなくちゃいけない仕事(分野)が多いのも一因かもね。

886 :nobodyさん:03/02/05 20:20 ID:???
そうかもしれんが、世間はそう取らない

887 :nobodyさん:03/02/06 11:38 ID:???
Apacheにすれば安心といって、乗り換えたはいいが結局ボロボロなところ多いからね。

888 :nobodyさん:03/02/06 14:49 ID:???
>>887


889 :nobodyさん:03/02/07 01:27 ID:oK4qVqpT
>>885
> てかDBへ接続できるポートを外部に開いてる時点で、その管理者が終ってる気がするな。
 PostgreSQLやOracleのSSLサポートはイントラでのセキュリティー用かな?

890 :nobodyさん:03/02/07 06:23 ID:???
でも、ぽすぐれのSSLってクライアント証明書使えないんだよね。


891 :nobodyさん:03/02/07 16:55 ID:mSK6L1IK
java だと 日本語文字列をinsertできないって本当ですか?

892 :nobodyさん:03/02/07 17:19 ID:mSK6L1IK
javaのunicodeでinsertされてしまうので、DBの中身もunicodeになってしまうのです。

893 :nobodyさん:03/02/07 17:26 ID:mSK6L1IK
jdbcのせいなのでしょうか?

894 :nobodyさん:03/02/07 18:50 ID:???
>>891
嘘です
>>892
文字コード変換します
>>983
正解です

895 :nobodyさん:03/02/07 22:53 ID:???
>>890
ソースにはサポートコード入ってたと思うぞ。

896 :nobodyさん:03/02/08 13:05 ID:???
>>894
EUCでinsertできるということですか?

897 :nobodyさん:03/02/08 13:29 ID:???
javaの内部ではunicodeだろう。
unicodeを受け取ったサーバがconversionかましてeuc-jpで保存するって話。

898 :nobodyさん:03/02/08 21:33 ID:???
>>897
どうやったらできるの?

899 :nobodyさん:03/02/08 21:55 ID:WzdldZAx
>>872
漏れも試した。
PowerGres萎え。
50クライアント制限萎え。

900 :nobodyさん:03/02/09 22:03 ID:???
javaだとunicodeでしかinsertできない。

901 :nobodyさん:03/02/10 18:38 ID:zGVQOlgy
PowerGres 先行予約販売開始
http://osb.sra.co.jp/PowerGres/pre_sales.php

特別価格の3万8000円(税別)らしいが、
買う予定の香具師いる?


902 :nobodyさん:03/02/10 19:52 ID:???
誰が買うんだ感が未だに拭えましぇん。。

903 :nobodyさん:03/02/10 21:28 ID:???
>>900
ほんとうですか?



904 :nobodyさん:03/02/11 14:19 ID:???
例えば、ある検索条件にマッチするレコードのうちの11番目から20番目だけを
とりだせるように検索条件に指定することって可能なのでしょうか?

905 :nobodyさん:03/02/11 14:24 ID:???
>>904
カーソルか LIMIT でぐぐってごらん。

906 :904:03/02/11 14:31 ID:???
>>905
ashさんのページにありました。どうもありがとうございました。

ただし、ぐぐらずにぐーってしまいましたが・・・

907 :905:03/02/11 14:39 ID:???
>>906
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
質問して解決したらなるべく情報源とか貼ってね。後の人の役にも立つから。

908 :nobodyさん:03/02/12 17:00 ID:???
重複したデータを抽出したいと思います。
emailという、カラムで重複を抽出するには?

909 :nobodyさん:03/02/12 17:36 ID:???
distinct
SQL辞典買うよろし。オレも欲しい。

910 :nobodyさん:03/02/13 00:27 ID:???
euc対応jdbcあるが、一部文字化けあり。

911 :nobodyさん:03/02/13 09:46 ID:???
>>909
それだと、重複したものが除かれるのでは?

912 :nobodyさん:03/02/13 14:53 ID:???
>>908
group by で email まとめて count(*) で数えればイクナイ?
まるっきり自信無しですが・・・


913 :nobodyさん:03/02/13 22:43 ID:???
SELECT email, name
FROM users
GROUP BY email
HAVING count(*) > 1


email name
-------------------
aaa@bbb.com aaa
aaa@bbb.com bbb


こんな感じかな?

914 :nobodyさん:03/02/13 22:50 ID:???
>>901

"PowerGresとは"より

「UNIX/Linux で定評のある オープンソースデータベース PostgreSQL が身近になりました。」



値段のお陰で縁遠になっている悪寒。

915 :nobodyさん:03/02/14 11:08 ID:???
>>913
それだとnameがグループに入ってないと怒られるのですけど。
実際にuniqid,name,emailとあるのに…。なぜでしょう?

916 :gn355my0:03/02/14 11:54 ID:???
>>915
>実際にuniqid,name,emailとあるのに
GROUP BY の中に?

917 : :03/02/14 14:32 ID:???
SELECT * FROM users X
WHERE EXISTS(
 SELECT email FROM users Y WHERE Y.uniqid = X.uniqid
 GROUP BY email HAVING count(*) > 1
)

918 :913:03/02/15 00:02 ID:???
EXSISTSって、たとえば
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とかは載ってないけど、大方これで済む。

919 :913:03/02/15 00:11 ID:???
あ゙、
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
#無責任でスマソ

920 :913:03/02/15 00:21 ID:???
たびたびごめん、
SELECT email, name
FROM users
GROUP BY email
HAVING count(name) > 1
こうかも…。

GROUP BY〜HAVING SUM(〜)とかCOUNT(〜)とかは
よく考えないとエラーになりがちなんだけど、
自分が思った以上にSQLに対する感覚が鈍ってる(w
(使う目的ないけど)リハビリ目的でPostgresインスコしようかなぁ…。
つか誰かうまく説明できる人ににバトンタッチしたひ。

921 :nobodyさん:03/02/15 02:13 ID:S3poV9Xb
PostgreSQL使えるフリーのレンタルサーバってXREA以外でない?

922 :nobodyさん:03/02/15 17:58 ID:/trbWmid
CREATE tbl (
 no 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


923 :nobodyさん:03/02/15 18:57 ID:GmQVtn+r
>>922
INSERT と同じトランザクションブロックにあるなら、
currval('シーケンス名'); で割り当てられた値を取得できるよ。
ちなみに、次の値は nextval だったかな。

924 :nobodyさん:03/02/15 21:32 ID:???
>>923
どうもサンキューです。
それを使ってみます。

925 :名無しさん@XEmacs:03/02/15 23:12 ID:???
>>924
oid使え。

hoge=# insert into a (b) values ('memo');
INSERT 28675 1
hoge=# select * from a where oid=28675;
a | b
---+------
1 | memo
(1 row)


926 :nobodyさん:03/02/15 23:18 ID:vyjm8srS
>>925
INSERT されたレコードを特定するという目的ならこれもいいね。
ただ、割り当てられた OID ってどうやって取得するの? 目視?

927 :tantei:03/02/15 23:37 ID:???
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 24時間受付  090−8505−3086
URL  http://www.h5.dion.ne.jp/~grobal/
メール  hentaimtt@k9.dion.ne.jp
   グローバル探偵事務局 



928 :nobodyさん:03/02/15 23:37 ID:???
>>926
大抵のクライアントライブラリには最後の INSERT の結果の oid を得るって
関数が用意されてるみたいだけど。

929 :nobodyさん:03/02/17 12:16 ID:???
結果セットを返すplpgsqlの関数を作ってExcelから呼び出したいのですが、

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です

930 :nobodyさん:03/02/18 00:43 ID:IIRaGRbN
>>929これなら普通のSQL関数でいいだろ? それはさておき、

返したい列名を定義したテーブルかビューを作っておいて
RETRUNS SETOF テーブル名 AS
ってしてやりゃ、期待通りの動作をするよ。

PostgreSQLは、テーブルやビューはClass(=型)定義として使える。
それを応用するってこった。

931 :nobodyさん:03/02/18 12:06 ID:???
>>930
>返したい列名を定義したテーブルかビューを作っておいて
ビューを作ってうまく行きました。有り難うございます。

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';

932 : :03/02/19 15:56 ID:ce+34SG0
レコード単位の内容が変わった Last Update みたいなtimestamp情報
を取得する方法を教えてください?

933 :nobodyさん:03/02/19 16:44 ID:???
特に知りたくは無いかも....

934 :nobodyさん:03/02/19 16:45 ID:???
ていうか、timestampのフィールドにデフォルト値を設定すればいいのでは・・・。
そもそも更新日時を取りたいという発想自体が間違いだと思うが。


935 :nobodyさん:03/02/19 17:38 ID:???
ほかにいい方法があるのかもしれないけど、
とりあえずそれ用のフィールドを作って、更新時のトリガーで時間を設定。

重要なテーブルに関してはログと証拠を残すという意味で
そういう手段をほどこしたほうがいいんじゃないかな。
まぁ、物理的にログを残す動作をしておかなければわからないということかな。

936 :nobodyさん:03/02/20 13:04 ID:???
>932
こう言うこと?
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)

937 :932:03/02/21 15:20 ID:???
みなさんありがとうございます

>>934 >>936
やっぱり、テーブルのフィールドにタイムスタンプを設けて
置くしか手は無いんですよね、、、いや、
「あれ?知らない間にデータが変わってる・・・
 いついじったんだろ?これ・・・・時間帯がわかれば
 誰がやったか想像つくなぁ・・・」
ってことがありまして、、、それで、知りたいなって
思ったんです。今後、こういうことが起きてもいいように、

timestamp型のフィールドを設けて
更新時にはカレントを突っ込むようにします。
ありがとうございました。

938 :nobodyさん:03/02/24 00:42 ID:???
timestamp型なんですが、過去の値から現時刻までの日数を取得したいと思って
いろいろやってみたんですが、なかなかうまくいきません。

マニュアルで to_char や EXTRACT の部分を見てもそれらしいものが載ってません。

どなたかやってるかたがいましたら教えてください。

939 :nobodyさん:03/02/24 00:57 ID:???
実際にやったことはないんだけど、やるとしたら、
過去の値と現在の時刻をエポックに変換して、
一日の秒数で丸めて、
現在から過去を引いて一日の秒数で割って日数を出す、

かなぁ。


940 :nobodyさん:03/02/24 09:51 ID:???
>>938
select date_trunc('day',now() - '1900-1-1'::timestamp);


941 :nobodyさん:03/02/24 12:35 ID:???
>>938
940のようなやり方、なんかの参考書には書いてあったなあ。
公式ページを書籍化したやつだったかも。
おれもおんなじような事でけっこう悩んだ記憶が。

942 :936:03/02/24 14:37 ID:???
横レスですが>>940勉強になります。
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)

943 :940:03/02/24 15:53 ID:???
すまん、適当に書いてます。>>940
date型を足し引きすれば日数が返ってくる。
>>942だと、
select now()::date- t::date from hoge;
で、数値のみが返ってくると思う。


944 :nobodyさん:03/03/07 14:11 ID:ZFWCWq3y
PostgreSQL 7.2.3からPostgreSQL7.3.2に変更したところ、
lo_unlinkを使用する箇所でエラーと言われました。
もちろん使用しなければエラーと言われません。
動作的に使用しなくても問題はないように思えます。

同じ症状になった人居ますか?

「環境」
Red Hat Linux 7.2
PostgreSQL7.3.2
php-4.2.3
apache_1.3.27


945 :nobodyさん:03/03/07 19:36 ID:???
>>944
心あたりはあるが、マルチのせいでどこに情報を集めるつもりなのか分からん。

946 :sage:03/03/08 17:37 ID:/lGvRuDK
>>954
よろしくお願いします。

947 :nobodyさん:03/03/09 16:41 ID:???
てゆーか小泉うざい。自分のアフォさを客のせいにすんなっつーの。
最後まで客のせいにしてるよ。

948 :nobodyさん:03/03/09 18:33 ID:???
小泉@コイズコムデジタルワークス晒し上げ。
書けば書くほどDQNがばれてんのがわからんのか。
ど素人じゃねぇかよ。ワナビーかっつーの。

949 :nobodyさん:03/03/09 18:36 ID:???
> > マシンが非力(single celeron 800MHz)だったので、ハードウェアのアップ
> > グレードを提案したが、却下(T_T)。
> とか、
> > どうせ作り直すなら…と、一応試してみようとは思ってますが、それであれほ
> > ど速くなるとはにわかには信じがたく(むしろ遅くなるような気が…)、もし
> > かしてJDBCなんかを使ってないか?などと疑ってます。
> とか、
> なんだか、語るに落ちた感がありますが。

そんなに恥ずかしい事を言っているつもりはなかったのですが(^^;;;
いや、お恥ずかしい限りです。


> いやこの際、素人なのでしっかり勉強しますって気持ちで取り組むのも大切かと。(^
^;

自分よりスキルの高い人間が身近にいない(というか、諸々のML以外では見た
こともない)というのは、良くないですね。忙しさに甘んじて勉強を怠っては
いかん、ということがよくわかりました。

950 :小泉に指導される連中って・・・:03/03/09 18:37 ID:???
> うちの場合、PL/pgSQLでやれることはなるべくやらせて、それでも重くなる
> コアなコードはCで書いて組み込むこともあります。
> PHPは入出力と画面遷移、そしてセッション管理だけに専念してくれれば
> いいのではないでしょうか。という発想。

これはやってます(^^)

うちの若いプログラマは、「SQLは嫌いだー」といってなんでもPHPでやろうと
するので、SQLでできないことをPHPでするように口を酸っぱくしています(^^;

951 :nobodyさん:03/03/09 18:44 ID:0jalCBaQ
零細のワンマン社長が井の中の蛙だってのはよくある話。
営業力があって開発に口出さなきゃいい社長になるんじゃないの?
現実には自分よりできる人間は部下にできないだろうがなー(藁

つーかコイズコムデジタルワークス社員は降臨せよ

952 :nobodyさん:03/03/09 18:51 ID:???
     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/<先生!こんなのがありました!
 _ / /   /   \___________
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/shinagawa/

953 :小泉@コイズコムデジタルワークス:03/03/09 20:10 ID:???
> 話の発端としては、基本設計が悪い(破綻してる)のを他人のせいにしているよ
> うにしか見えません。今見直してどうにかできるなら、最初からそういう設計は
> しないでしょう。

他人のせいにはしているつもりはありません。

954 :nobodyさん:03/03/09 20:14 ID:???
本人はしてるつもりはなくてモナー
あの一連の話をクライアントが見たら。。。
とかは考えないんだろうな。、きっと。

955 :nobodyさん:03/03/09 20:43 ID:???
ま、祭?

956 :nobodyさん:03/03/10 01:47 ID:dDkCRfq2
このスレすごいね。小泉もひどいが、他の奴らも
次々と適当な情報流しまくってる。
なんでドキュソはこう誘発するかねぇ。

957 :nobodyさん:03/03/10 02:59 ID:???
なんちゅうか"DB設計の不備"以外の何者でもない話に
何故あんなに盛り上がるのか。何故あんなに怪しい情報が
錯綜するのか。つかみんな"よく知らないですが"って言い過ぎ(w
想像だけであんなにカキコしてどーすんだべ。

958 :nobodyさん:03/03/10 03:17 ID:???
>よく知らないですが
言い切ると粘着されそうだしなぁ。。。明らかに間違ってるのもあったけど。
まあ、あれは設計しなおさないとダメだろう。
小手先修正で自滅していった歴史を披露してたが、学習してないんだろうか(w

実際に担当してるプログラマのことも言ってたけど、同じプログラマとして彼が不憫で仕方ない...

959 :nobodyさん:03/03/10 03:26 ID:???
>>957
「詳しくわかりませんが」はいいけど、「よく知らないですが」はどうかと。
推測ならまだいいけど、想像でっていうのはどうかと。


960 :nobodyさん:03/03/10 06:22 ID:???
類は友を呼ぶ、つーか、DQN呼びすぎ。

PostgreSQLがタダだからってDQN技術者が増えると、
PostgreSQLまでDQNだと思われるよ。。


961 :nobodyさん:03/03/10 11:08 ID:???
pgsql-jp で信じていい人と信じないほうがいい人を
おしえて下さい。


962 :nobodyさん:03/03/10 12:37 ID:???
>>961
教えて君なら皆信じろよ。
間違いを教えられて失敗しても、それが上達の近道。


963 :nobodyさん:03/03/10 21:36 ID:???
K6-3の600MHzマシン(メモリ80M)に入れて
最近使い始めたのですが、遅いです。
CSE使用時の表示で応答時間2.6秒

SQL文の書き方やインデックスの使い方がヘタレ、等の
原因の方が大きいかと思いますが、
単純にマシンをパワーアップさせた場合
処理の高速化にどれくらい効果があるんでしょうか?
あほな例えですがPen4やAthlonの最高速、メモリ1Gとかに変えたとして
今より劇的に速くなったりするんでしょうか。

それとも処理の中身を勉強して最適化した方が有効でしょうか?
インデックス使うとその項目の検索で早くなるんだなぁ、程度の知識ですので・・・

964 :nobodyさん:03/03/10 22:17 ID:???
>963
おまえ、ワザとやってるだろ、、、

965 :nobodyさん:03/03/10 22:32 ID:???
>>963
何をやって2.6秒かかったのか詳細に書かなきゃ答えようがない
100万レコード取得しようとして2.6秒ならかなり速いと思うが。


966 :963:03/03/10 23:48 ID:???
こんな感じの。

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レコードずつくらい。

・・・だめだ、自分で書いててよく判らん。
出直してくるよ。

967 :nobodyさん:03/03/11 00:36 ID:???
>>961
漏れの投稿は信じていいYO!

968 :nobodyさん:03/03/11 00:52 ID:???
>>961
いや、>>967の言うことは信じちゃだめだ!漏れを信じれ!


969 :nobodyさん:03/03/11 01:19 ID:???
とりあえずforceを信じるところから始めようか。
いやむしろ自分か。

970 :nobodyさん:03/03/11 01:30 ID:???
>>961
他人を信じてはいけない。頼れるものは自分のみ。

971 :nobodyさん:03/03/11 01:53 ID:???
>>966
最終的に返ってくるレコード数にもよるけど、もっと速くなりそう。
Explainで実行プランを確認してみ。
Seq scanって出てくるところがあったら、indexつけてvacuumかけて
またExplainしてみてindex scanに変わるかどうか調べる。その繰り返し。

遅いからって短絡的にCPUを速くすればなんて言ってると>>949みたくなるぞ

972 :nobodyさん:03/03/11 02:00 ID:???
K6-III自体は整数演算/Hzの性能は上々だからなあ。
単純にメモリ足んないんじゃないの?

973 :nobodyさん:03/03/11 02:21 ID:???
パート2はまだでつか?


974 :973:03/03/11 02:36 ID:???
たてますた
[PostgreSQL 2テーブル目]
http://pc2.2ch.net/test/read.cgi/php/1047317680/


975 :nobodyさん:03/03/12 19:14 ID:???
Windowsで動くPostgreSQL
http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html

これ使おうと思ったんですが、
create database出来ますか?
initdb.exeで一つしか作れないんですが…
手としてはフォルダコピーして使うとかでしょうか。


976 :nobodyさん:03/03/12 20:05 ID:???
>>975
そういう仕様です。

977 :nobodyさん:03/03/12 20:29 ID:???
>>976
沈みかけのスレなのに
ご回答ありがとうございまつ。
PHPとかの書き方もちょっと違う感じだし、
cygwin+pgにしておきます。


978 :nobodyさん:03/03/12 20:45 ID:???
>>977
PHPの書き方は一緒だろ。
俺の場合本鯖はLinuxなんだが、scriptはWinで書いている。
データベース名が違うのでconnect文だけ環境によって
切り替えるようにしておけば、まったく同一のscriptで桶でし。


979 :山崎渉:03/03/13 17:04 ID:???
(^^)

980 :nobodyさん:03/03/13 21:00 ID:???
抽出条件に limit と offset を使うと便利ですが、以下のようなことができなくて
悩んでいます。

WHERE ID=1 ORDER BY T_STAMP DESC limit 5 ORDER BY T_STAMP ASC

これで最後から5つのデータを昇順に取得できません。ORDER BY 句は複数使えない
ようで、offset に -5 などとマイナス値を与えてもエラーがでます。

結局わたしのテーブル設計がまずいとは思いますが、どなたか出来るかたレスください。

981 :nobodyさん:03/03/13 22:38 ID:???
select * from (select * from table where ID=1 order by T_STAMP limit 5) as foo order by foo.T_STAMP asc;
かな。


982 :nobodyさん:03/03/13 23:33 ID:sXZYIvtY
厨な質問ですが教えて下さい
Red Hat 8.0でpostgresql-7.2.2-1を使い始めました
いろんな解説をネットでみてたらインストールしてはじめてPostgreSQLを起動すると
# su - postgres
とすると、スーパーユーザーで起動しデータベースを初期化しますよねそんであとからユーザーを追加するのは

# su -postgres
$ -bash2.05$ createuser foo

....y or nで2、3問質問に答えたら

CREATE USER foo

とめでたく、fooというユーザーが登録出来たのですが
では、いざユーザーネームfooでデータベースを作ったりPostgreSQLに接続するにはどうしたらいいのでしょうか?
ほとんどのPostgresqlのHPの解説ではユーザーの追加までは同じようなことが
詳しくでてますけど、ユーザーでPostgreSQLを起動したり、データベースを作成する解説が少ないと思います、なにも知らない、ど素人なんでスーパーユーザーでやってたら、怖いので宜しく教えて下さい。


983 :nobodyさん:03/03/13 23:49 ID:???
createuser したときにデータベースを作成させる権限を与えておかないと
データベースは作成できない。
与えていたら、createdbで作成できる。



984 :nobodyさん:03/03/14 00:03 ID:bLaxbE1P
>983
サンクス
$ su - postgres
Password:
-bash-2.05b$ createuser foo with password foo
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
-bash-2.05b$ su - foo
su: user foo does not exist
-bash-2.05b$
こうなるうですが.....


985 :nobodyさん:03/03/14 00:23 ID:???
>>984
ぉぃ。先に実ユーザをつくっとかんと...
#adduser foo

986 :nobodyさん:03/03/14 00:35 ID:bLaxbE1P
>985さん
サンクス
はずかしいです、できました


987 :974:03/03/14 03:24 ID:???
この板では974での次スレは早すぎか。。。


988 :nobodyさん:03/03/14 10:42 ID:???
PostgreSQL って BLOB や CLOB 使えるの?

989 :nobodyさん:03/03/14 16:23 ID:???
ヽ(´ー`)ノ

990 :nobodyさん:03/03/14 21:14 ID:???
>>988
BLOBは使えるYO

991 :nobodyさん:03/03/14 23:33 ID:???
CLOB の利点って何? Text 型じゃダメなの?

992 :nobodyさん:03/03/14 23:55 ID:???
>>991
LOBの特徴を持ちつつ、エンコーディングの変換だけはするということかな?
textはタプルサイズの制約に縛られるから。

993 :nobodyさん:03/03/15 02:10 ID:???
>>990-992
ThanX!
いつもは DB2 使いなんだが今度使ってみるか。

994 :nobodyさん:03/03/15 03:59 ID:???
PostgreSQL 2テーブル目
http://pc2.2ch.net/test/read.cgi/php/1047317680/l50

995 :nobodyさん:03/03/15 03:59 ID:???
こっちに移動しる
PostgreSQL 2テーブル目
http://pc2.2ch.net/test/read.cgi/php/1047317680/l50

996 :nobodyさん:03/03/15 05:15 ID:???
(´-`).。o○(なんで1000取りも埋めもいないんだろう…)

997 :nobodyさん:03/03/15 11:17 ID:YPCssbUz
PHPでPostgreSQLにデータを引き渡すソースを書いているのだが
Parse error:
ばっかりでデバックが難しい、POSTメッソドでデータ入力まではうまく動くのだが、SQL文を書くと同じエラーばっかりだ
Parse error: parse error, unexpected $ in〜 line(最後の行)
PHPでもPostgreSQLでもいいから一行ずつトレースするデバッガーってないのかな?

998 :nobodyさん:03/03/15 11:34 ID:???
>>997
それは PHP のパースエラー。スレ違い。

先に SQL 文のひな形を作って、データを sprintf() で埋め込んで
Postgres に渡す SQL を作るようにしてごらん。ミスを防げる。

999 :999:03/03/15 11:34 ID:???
999

1000 :次スレ:03/03/15 11:35 ID:???
PostgreSQL 2テーブル目
http://pc2.2ch.net/test/read.cgi/php/1047317680/l50

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

273 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)