1 :
名無しさん@お腹いっぱい。 :
03/06/30 17:04 ID:8NOYLAwY 取りあえず立ててみますた
2get!
3 :
1 :03/06/30 17:07 ID:8NOYLAwY
関連スレありそうだけど初心者専用ということで一つ・・・
5 :
1 :03/06/30 17:09 ID:8NOYLAwY
取りあえずFreeBSDでのインスト方法など詳しく解説したサイトキボンム
>>6 俺もキボンヌ
Linuxばっかりなんだよ。起動用に作成するユーザについてもFreeBSDについては説明無いし。
8 :
名無しさん@お腹いっぱい。 :03/07/01 22:37 ID:k8THQo6W
>>6-7 チューニングの話なら兎も角、インストの話かよ。。
まじでそんな説明要る?
>>8 自分が通り過ぎてきた道を忘れているやつハケーン
> 取りあえずFreeBSDでのインスト方法など詳しく解説したサイトキボンム portsで十分。
11 :
8 :03/07/01 22:46 ID:???
12 :
名無しさん@お腹いっぱい。 :03/07/01 22:47 ID:k8THQo6W
13 :
名無しさん@お腹いっぱい。 :03/07/01 22:48 ID:k8THQo6W
14 :
名無しさん@お腹いっぱい。 :03/07/01 23:28 ID:PO9x71v4
ああぁぁ〜、すべてのスレがネタ化して行く、、、
FreeBSD だったら、とりあえず gmake 入れとけって感じ。 ユーザは postgres:postgres でいーのでわ?
16 :
名無しさん@お腹いっぱい。 :03/07/02 05:08 ID:DkSkUTas
gmakeとmakeって何が違うの?
17 :
名無しさん@お腹いっぱい。 :03/07/02 05:32 ID:5fbApEUT
>>16 makeはOS独自のmake
gmakeはGNUのmake
GNUのmakeをmakeにしちゃうと片方のmakeをいちいちフルパスで書かないといけないか
ら。
FreeBSDだったら、たいがいのアプリのportsで勝手にインスコされる。
PostgreSQLといったソフトは、rpmとかportsを使用するのは、 お勧めできた話じゃない。 ま、大した使い方しないなら、それでもいいんだろけど(w
>18 なんで? spec を編集して rpm にし直すんじゃダメなのか?
>>19 ん、rebuildすんならいいよ。
↑あくまで、「勧め」の話しね。勝手にインスコ・・・はお勧めできんと。
でも、PostgreSQLパッケージ作り直しってあんま意味ないとは思うのだが。
#とりあえず、ここはドラゴンボールに汚染されずにすみそ。
またりいこね♪
ポストグレスエスキューエル ポスグレエスキューエル みんなどっちで呼んでる? 俺は後者
>>21 ポストグレス
厳密に表現するときは
ポストグレエスキューエル
ランダムにデータを取り出したい時はoidrandを使うしか無いの? なんかoidrandって遅くない?
PGで実装するほーがよろしいかと。
offsetとlimit組み合わせて、offsetをrandamizeすれば oidrandとか使わなくても大丈夫なんじゃない?
bbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
27 :
名無しさん@お腹いっぱい。 :03/07/13 15:21 ID:0aiQXehE
PostgreSQLのインストールに関する質問はこのスレがお勧め?
>>27 インストールネタかよ・・・・・
で、何?
30 :
27 :03/07/13 15:51 ID:???
なぬ? IDが消えている! これどういうこと? 消えたり突然現れたり。
任意 ID 板だから sage ると ID が消えるよ。
32 :
名無しさん@お腹いっぱい。 :03/07/13 16:58 ID:9++YWdbz
約禁止になりそうと知ったボクの友 人所属嬢が店への不信で退店を表明し
あぼーん
あぼーん
35 :
名無しさん@お腹いっぱい。 :03/07/14 14:30 ID:0xA1rEeF
postgresにCSV形式のファイルからテーブルつくるには? ちなみに、vainLinux postgresね。
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
46 :
山崎 渉 :03/07/15 11:25 ID:???
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
>>19 俺はrpmやportsは使わない。
PostgreSQLをインストールするときはたいがいpl/pgsqlもいれるし
contrib/pgstattupleやcontrib/pgbenchもいれるから。
ま、クライアント側に関しては、必要があればソース追うこともあるし。
# サーバー側のソースはさっぱりわからんが。
↓7.3で消えたdatetime型の復活を望んでるやつ
49 :
名無しさん@お腹いっぱい。 :03/07/15 23:00 ID:v9W7awk7
PostgreSQLをWinで検証できんもんかね。 httpd+AcitivePerlみたく
50 :
名無しさん@お腹いっぱい。 :03/07/16 00:07 ID:BPReIKi5
>48 え、なくなったの!? シーラカンス本第2版読みながら入れたヤツに、datetime型を使った フィールドを作って勉強してたのに・・・
51 :
50 :03/07/16 00:13 ID:BPReIKi5
俺が買ったの、第3版だったかも。スマソ
52 :
名無しさん@お腹いっぱい。 :03/07/16 03:17 ID:2y9Jrw5S
perl+DBI+postgresqlでコーディングしています。 データベースからソートして取り出したデータを順番を保ったままperlで 使用したいのですが、$hash_ref = $sth->fetchrow_hashref をすると順番が変わってしまいます。 何か対処法はご存じないでしょうか? $sth = &WrapSql("SELECT * FROM $TableName order by yomi",$mydb); while ($hash_ref = $sth->fetchrow_hashref){ //順番が保持されていない
53 :
名無しさん@お腹いっぱい。 :03/07/16 08:58 ID:f6TQZj7o
hashrefって、検索した結果に高速アクセスするためのメソッドだから 順番通りに表示するっていう目的には向かない。 別のメソッドfetchrow_arrayrefとかfetchrow_arrayなどを使うべし。
54 :
名無しさん@お腹いっぱい。 :03/07/16 09:03 ID:f6TQZj7o
7.0から、 datetime型をやめてtimestamp型を使うようになった。 7.3からじゃあないぞ。 なお、互換性のため今でもdatetime型はサポートされている。 でも使うなってさ。
>>54 7.3.3入れたけど、本当になくなってたよ。
datetime()関数、now()関数もなくなってた。
timestamp型を使って、
timestamptz()関数、current_timestamp()関数を使えば用は足りるんだけど、
名前長いっちゅうねん(笑)
あぁ、自分で関数定義してかぶせとけばいままで作ったSQLも通るな・・・。
あ、「なくなってた」というのは、下位互換が打ち切られて「きれいサッパリ跡形もなくなってた」って意味です。
>>49 適当にボロいPCみつくろってLinux入れてPostgreSQL入れて、
xinetdでTelnetの設定して、Postmasterを -iSで起動しとけば
別にローカルじゃなくたっていいと思うんだけど?
SQLはTelnetから投げまくりながら組み立てりゃいいし。
58 :
名無しさん@お腹いっぱい。 :03/07/16 19:13 ID:drf5UIry
pg_accessのこともこのスレでいい?
>>53 fetchrow_hashref()とfetchrow_arrayref()の違いは、カラム名をキーに持つ
ハッシュでレコードを取得するか、カラムの並び順の配列で取得するかの
違いだけで、レコードの取得順は変わらないと思ったが?
>>53 つーか、そもそもハッシュというものに順序という概念がない。
PostgreSQLとは関係ないPerlの問題。
fetchrow_arrayref() 使え。
あぼーん
∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
63 :
名無しさん@お腹いっぱい。 :03/08/04 17:54 ID:1cnpzczB
postgres固有の問題じゃないのかも知れないけど質問させてください。 DBI::Pgでtable_info()を使っているのですが use DBI; $dbname="sample"; $dbh=DBI->connect("dbi:Pg:dbname=$dbname", "", ""); $tabsth = $dbh -> table_info(); while ( ( $qual,$owner,$name,$type,$remarks)= $tabsth -> fetchrow_array()){ print "$name\n"; } $dbh->disconnect; を実行すると 本来の目的のために作ったテーブル以外に pg_aggregate pg_am pg_amop pg_amproc pg_attrdef pg_attribute : のようなものが出力されてしまいます。 これを出力させないようにするにはどうしたら良いでしょうか?
64 :
名無しさん@お腹いっぱい。 :03/08/05 02:18 ID:7cvkSzX2
初心者質問ですが、not nullで作成したフィールドを あとでnull ok に変更するにはどうしたらいいですか?
>>64 ALTER TABLE table_name ALTER column_name DROP NOT NULL;
つーか、\h ALTER
>>63 何がしたいかによるけど、pg_はシステムテーブル等なので
$name の、 pg_ で始まるものを除くか、$type で TABLE以外を
省くかすればいいんでないの?
7.2以前なら、pg_ で始まるテーブルを除く。 7.3以降なら、relnamespaceがpg_catalog(OID 11)になっているテーブルを除く。
PostgreSQL って EJB QL の関数をサポートしてないのでしょうか? 例えば、 SELECT OBJECT(a) FROM myTable AS a WHERE SUBSTRING(a,userID 1, 4) = ?1 みたいに EJB QL のSUBSTRING関数なんかを使っていると java.sql.SQLException: ERROR: parser: parse error at or near "{" at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:131) という例外が発生します。 関数を使わなければ、問題なく抽出が成功するんですけど・・・
70 :
69 :03/08/13 15:04 ID:???
あ、すいません。「,」が抜けてました。 SUBSTRING(a,userID 1, 4) = ?1 は SUBSTRING(a,userID, 1, 4) = ?1 に訂正します。 ちなみに CONCAT関数もダメでした。 だれかご存知の方、いらっしゃるでしょうか?
71 :
山崎 渉 :03/08/15 22:08 ID:???
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
72 :
山崎 渉 :03/08/15 22:40 ID:???
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
73 :
名無しさん@お腹いっぱい。 :03/09/09 19:02 ID:QWXRJYI8
すいません。 date を型にしたフィールドに、日付 (ex. 2003-03-31) のほかに空白が入っているレコードもあるのですが、 空白のレコードのみをマッチさせてひきだす SQL をかけません。 where targetdate = null だと何も出てこない。 しかも targetdate != null でも、日付に入っているレコードが出てこない。 どう書くと正しいのでしょう? 格納するときは textfile から \copy で入れたのでよく分からないのです。
>>73 targetdate IS NULL 、targetdate IS NOT NULL は?
あと空文字 '' の可能性はある?
75 :
名無しさん@お腹いっぱい。 :03/09/10 11:49 ID:/hlnUy9M
あるデータベースに属する全てのテーブルを対象に, 与えた値が含まれるかどうか調べ,含まれていたなら 該当するテーブルとカラムを吐き出すような方法ってありますか? システムカタログ調べて,適当なSQLを生成してクエリするような スクリプト書かないとだめでしょうか…???
それしかないような、、、 PostgreSQLについてくるマニュアルやツール類のソースを見れば なんとかなるでしょう
77 :
名無しさん@お腹いっぱい。 :03/09/10 16:42 ID:L8lcGuSV
質問です。 正規表現で Perl で書くと、次の様なことがしたいのですが、 if($keyword ~= /^foo ([^\s]+) bar (\d+)/) {$out = "$1:$2";} SQL の CASE などで実現する方法はないのでしょうか? CASE WHEN $keyword ~ '^foo ([^ ]+) bar ([0-9]+)' THEN "$1:$2"
あぼーん
79 :
77 :03/09/10 16:53 ID:L8lcGuSV
補足です。 ちなみに、SQL の 文字列関数で、文字列の一部を抜き出せばよいのですが、 ここでは簡単に書きましたが、実際の正規表現部分は、複雑で、 とても文字列関数でカバーできそうにありません。
>>74 そ、そうか is を使うのでしたね
面目ない・・・
81 :
75 :03/09/11 11:19 ID:???
76様,諦めがつきますたありがとうございます. こんなもの作ってみますた. つっこみどころ沢山なもんなので $ pg_grep -d hoge -t int 6852 2>/dev/null とかって使いますけど,目的は果たせたので… begin 644 pg_grep.bz2 M0EIH.3%!629364E&U84``0U_@%ST$`!^YL`??^?=CK_O_^]0`SA>QLFQ33AH M)&BGZ),::CQ3U!HT&GIJ,@#0`#3TCU!QDR:,0Q-,!`P)I@C!,3330`8081"0 M$U'ZIZ:GII`:#U#U/4,AD-`T:`/4'&3)HQ#$TP$#`FF",$Q---`!A!)(F(:I MZF:4_0IY$\IL*`T'J`!IZ@?J$::>IA(%R()1%P`21`2!-X'1I_B]NAF!NM"A M/<!2DRTV&&B^AYQ<[@J+WJ%BJI_%IX8BO#C&'QOW9:KOW8L,T0"*0%X))+O( M0"22"02"`2)%5@\\H9:[-CM4B:R7$A((:S]Q^7XD<XW")KZ/K2&H",CSQ"\& M!?)*M<?\)H;C/--P;HNDZP-*@2)9!"ZSN#[74?Z\\:.JF'%IG.%KQR>F MFRJ;>TR$&CTN@KJKQ!XT.E+B;6]5E6S<=:5U\6RAPA17MOR013F=MH;$LYVT MDCZVRBC-U8$I"SS5VT63+4Z=F./W+/(NS&K@G10*"X=$X&1VG);'W=_!=U)" M%P2LTQ\.]J!1;\P6FM\Q'VYU<>#7&KIS%I>OKBA:$R'68?D>?RM5]BTJ-#3S MYG1]\\6]A(FQD9QO2'!LV_$1N"_D`B.-P7AUAY.<P80ZC\4-YZIW@?L&,`4A MTN"(7[(4!"<!SHD;]`:%#'KE%0-(`:>?&=$'(3!A`!\`&R4(PD19143BM^^ M[F>!7B?K3&)2MRUF,P:,!0R32!\R,&&5KU@E`D*!=<N#7F'(,6.WSO0W!.1J M=)F5OYRHK0AQ3A[*!:<$P.5P,BQDQ&0JCX+7/C4M`2G<YED44P=A$(BAVV!_ M@VYYILSA<#+L'*_(H5Y.8?<&V@8ERF8,,F9FK7,<G+C)D/Z*DPP,IGPC!8-K ML2>6FG6FX@1&,=*.):-Z\+(T%G&`18;<P8&1`X#NDGHJI%64&(HT`-7QK&%R M@C;V(S;YIYK64TXA%8X49.SEB9:RM89'!LZ>F5:7?5(7DW#3?Q0,6<">9`(A M*"34B"D`S:FQ'4E--,QI+OW54`1EGND7"E9<@M10R:0R?3B!/P1YVTT75DBI LSRX9D:=1:J-F-:I6B/*"L2L5.H[7#MVP(A0%#,QV1?UG\7<D4X4)!)1M6%`` ` end
教えてください。 集約関数を作って、入力された変数を、 配列として出力したいと思っています。 CREATE AGGREGATE を使えばいいのかと思うんですが、 さっぱりわからなくて困っています。 CREATE FUNCTION dimf(int8[],int8) RETURNS int8[] AS 'SELECT $1,$2 ' LANGUAGE 'SQL'; CREATE AGGREGATE dimout(basetype=int8,sfunc=dimf,stye=int8[],initcond='{}'); SELECT dimout(field) FROM table;
PostgreSQL のフロントエンドの開発ツールって、Access、VB? お勧めある? (VectorにAccess+Posgreのアプリがあるけど、こういうのって 例外だろうか)
dlltool --dllname postgres.exe --output-exp postgres.exp --def postgres.def gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -L/usr/local/lib -o p ostgres.exe -Wl,--base-file,postgres.base postgres.exp access/SUBSYS.o bootstrap /SUBSYS.o catalog/SUBSYS.o parser/SUBSYS.o commands/SUBSYS.o executor/SUBSYS.o l ib/SUBSYS.o libpq/SUBSYS.o main/SUBSYS.o nodes/SUBSYS.o optimizer/SUBSYS.o port/ SUBSYS.o postmaster/SUBSYS.o regex/SUBSYS.o rewrite/SUBSYS.o storage/SUBSYS.o tc op/SUBSYS.o utils/SUBSYS.o -lz -lreadline -lcygipc libpq/SUBSYS.o(.text+0x204b):crypt.c: undefined reference to `_crypt' Info: resolving _optarg by linking to __imp__optarg (auto-import) Info: resolving _optind by linking to __imp__optind (auto-import) Info: resolving _opterr by linking to __imp__opterr (auto-import) Info: resolving _optreset by linking to __imp__optreset (auto-import) collect2: ld returned 1 exit status make[2]: *** [postgres] Error 1 make[2]: Leaving directory `/usr/src/postgresql-7.3.4-2/src/backend' make[1]: *** [all] Error 2 make[1]: Leaving directory `/usr/src/postgresql-7.3.4-2/src' make: *** [all] Error 2
86 :
名無しさん@お腹いっぱい。 :03/10/12 12:48 ID:ne65DEmK
postgresで別DBのテーブルを参照することはできますか? 以前、oracleを使っていたときはDababaseLinkというので 出来たんですが、似たようなものはないでしょうか。 今は別DBのテーブルとjoinできないので、 ループ内で毎回selectしてまつ
87 :
名無しさん@お腹いっぱい。 :03/10/12 14:23 ID:7Sn+DiZr
Postgre これなんて読むの??? 雑誌でよく見かけるけれど、未だに読み方知らないの。
「PostgreSQL」は 「ポストグレス・キュー・エル」 と読む。 ただし、 「ポストグレ・エス・キュー・エル」 と読んでも間違いではない、と言われている。
91 :
NAME IS NULL :03/10/13 21:10 ID:IsgQZpBr
>>89 ,90
DBに携わってるくせして読み方知らなくて困ってたところでした。
ありがとうございますた!!
92 :
NAME IS NULL :03/10/13 21:33 ID:ZNiejyhY
ちなみにGNUはヌーと発音するらしいよ。 動物のヌーのことなんだってさ!
93 :
NAME IS NULL :03/10/13 22:49 ID:cGRdxZXW
初心者ですが、トランザクションの使い方に「?」です。 ふつうのシステムの場合、トランザクションなんて必要ないと 感じるのですが、本などに 「たとえば銀行システムなどでデータの整合性に過ちがあってはいけない場合 トランザクションを使うと有効的です」 とあります。 いやいや、ふつうのシステムでもデータの整合性は重要だろうと思うのですが、 どうなんでしょう? 掲示板のようなシステムにもトランザクションを入れるべきなのだしょうか? トランザクションの有効性について教えろ、ください。
94 :
:03/10/13 23:04 ID:Im1fJxU6
95 :
NAME IS NULL :03/10/13 23:13 ID:cGRdxZXW
>>94 質問の書き方が悪かった。です。
トランザクションの必要性はわかるのですが、
すべてのinsert文などに必要なのかと思ったのです。
なんか、ふつうのinsertとかなら必要ない気がするのですが、
selectでデータを拾ってきてそれを元に
updateする場合などにカンマ何秒のずれで整合性を
保つために必要なのでしょうか?
考え方あってるますか?
それとも電波ですか?
>>95 その目的のためにはSELECT FOR UPDATEがある。
これはLOCKによって整合性を保つからトランザクションの
例としては適当でない。
トランザクションの必要性がわかるならそれでいいじゃん。
実務でシステム組んでみりゃあ、嫌でもトランザクションの
ありがたみがわかるよ。
ひとつヒントをやると、
なんで ROLLBACKができるのか考えるとよい。
おもしろいだろ、ROLLBACK実行すると、
トランザクションの開始前に状態が戻るんだぜ。
COMMITするとそのままDBに反映されるし。
複数の人が互いにトランザクションによって
処理が隔離されているってのもポイントだな。
トランザクションのACIDについて説明されるときに必ず出てくるのが、 銀行のオンラインシステムですね。
>>96 逆に彼は、普通のシステムなら全てトランザクション対象で、
じかにインサートして構わない場合だけ、トランザクションを
切る。
てなのが本当なんじゃないですか?
たまたま、トランザクションっていう処理が後から発明されたから
といって、オプション扱いする必要などないのでは?
と問うてるのでは無いでしょうか?
>>98 さらにいうと、93=95はACIDのCしか気にしていない感じ。
おまいら Invalid EUC_JP character sequence found ってなんよ!! まじ助けて・・・
書いてあるとおりなんじゃ
データベースエンコーディングがEUC-JPになってないんじゃ
ぬうううINSERT時にEUCにする方法あるのかな・・・
106 :
NAME IS NULL :03/10/25 17:56 ID:z5OgLRCX
教えてください。 クロス集計クエリーを作っています。 ちなみに、seq_noはPKです。 select (select count(seq_no) from baseinfo where equip_no = 30 and bun_no = 1 and status = 1 and rel1_no = b.rel1_no) as col1 (select count(seq_no) from baseinfo where equip_no = 30 and bun_no = 1 and status = 2 and rel1_no = b.rel1_no) as col2 (select count(seq_no) from baseinfo where equip_no = 30 and bun_no = 1 and status = 3 and rel1_no = b.rel1_no) as col3 (select count(seq_no) from baseinfo where equip_no = 30 and bun_no = 1 and status = 4 and rel1_no = b.rel1_no) as col4 (select count(seq_no) from baseinfo where equip_no = 30 and bun_no = 1 and status = 5 and rel1_no = b.rel1_no) as col5 (select count(seq_no) from baseinfo where equip_no = 30 and bun_no = 1 and status = 6 and rel1_no = b.rel1_no) as col6 (select count(seq_no) from baseinfo where equip_no = 30 and bun_no = 1 and status = 7 and rel1_no = b.rel1_no) as col7 from baseinfo group by rel1_no union all select count(b.seq_no) from baseinfo b where b.equip_no = 30 and b.bun_no = 1 and b.status between 1 and 7) as goukei; 大体、上記のような感じなんですが、こいつをビューかストアドにしたいのです。 可変項目は equip_no = 30 and bun_no = 1 の部分です。 この場合、ビューは無理ですよね?? そこで、ストアドを検討しているのですが、戻り値のタイプの指定の仕方がわかりません。 アドバイスよろしくお願いします。 creat or replace function getTokei( int,int ) retunrs set of ??? as ・ ・ ・ ・
returns set of record
>>102 cygwinにて同様の症状ではまりまくった経験が・・・
そんときは JLESSCHARSET=japanese-sjis ってやったら直った。
そのへんきちんと設定してる?
109 :
108 :03/10/26 20:08 ID:???
ごめん。ぼけてた。 PGCLIENTENCODING=SJIS ね
110 :
NAME IS NULL :03/10/26 20:14 ID:HgBPAxle
>>107 ありがとうございます。早速試してみます。
ところで、また質問なんですが、
ストアドで、
select count(seq_no)
from baseinfo
where equip_no = 30
and bun_no = 1
and status = 7
and rel1_no = b.rel1_no
and rel2_no in (1,2)
) as col7
上記の、and rel2_no in (1,2)のようにinのリストをパラメータにしたい場合、どうすればよいでしょうか。
動的SQLにするしかないでしょうか?
よろしくお願いします。
質問なのですが、PostgreSQLで正規表現を使った文字列置換処理はどうしたらいいでしょうか? 今は暫定的処置として、SELECTで検索してきた文字列をPHPで置換しそれをUPDATEする、という回りくどいやりかたをしています。 これだとやたら遅いのでできればやりたくないのですが、replace関数を使うと全ての文字列が置換されてしまうので仕方なくやってます。 substring関数をうまく使えないかなと思っているのですが… よりスマートな解決方法がありましたらよろしくお願いします。
頭悪そう…
良さげなGUIの窓クライアントありませんか
114 :
NAME IS NULL :03/11/02 11:42 ID:TMEN+++L
psql: could not connect to server: そのようなファイルやディレクトリはありません Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? psql起動したらこういうのが出ました。 どうやったら戻るんだっけ。
postmasterが起動してないことを確認して /tmp/.s.PGSQL.5432 を削除して postmaster を再起動。
116 :
NAME IS NULL :03/11/02 15:17 ID:yw7/Ow55
>>115 >postmasterが起動してないことを確認して
確認
>/tmp/.s.PGSQL.5432 を削除して postmaster を再起動。
そのようなファイルはありませんと叱られました
先週、公道で猫を跳ねた事に関係してるでしょうか?
SELECTと同時にUPDATEできないすか。 なんとか。 PostgreSQL 7.3.4 on RedHat
どーゆーことよ?
>>117 SELECTで抽出されたデータをUPDATE更新の対象としたいって事なんだろう。
WHEREにSELECT書いてはいけないなんて書いてないからやってみれば良いよ。
>>116 おそらく猫の呪いによって、postgresのデータフォルダに"postmaster.pid"が出来てると思われる。
猫の冥福を祈りつつ削除すべし
>>113 Common SQL Environment
initdbが出来ません。助けてください [PostgreSQL 7.2.1 - initdb startup] The files belonging to this database system --- > will be owned by user "NEC-PCuser" This user must also own the server process. "/usr/local/pgsql/data" has already existed. initialize error(16)!
123 :
NAME IS NULL :03/11/05 02:20 ID:1c90d1IF
アクセスログをとって、その都度別にテキストファイルに吐き出すことってできますか?
>>122 > "/usr/local/pgsql/data" has already existed.
ってことだが?
>>123 アクセスログの意味するところはなんじゃらほい
>>123 access.log自体テキストファイルじゃないのかと・・
>>122 /usr/local/pgsql/data
エラー内容からは既に存在してるって怒られてるよね。
そうじゃなければここのpath自体のパーミッションと権限の問題。
128 :
NAME IS NULL :03/11/05 13:08 ID:K/TV52uS
ODBC(ADO)から VACUUM を実行するにはどうしたらいいいんだ〜???
125,126 説明不足で申し訳ないです 今PostgreSQLで動いてるシステム?みたいのがあるんですけど このシステムにログインしたときとログアウトしたときそれぞれ最近のものと 過去1回分だけが記録されているようなんです。 自分でつくったものでもないし、PostgreSQL自体もまだ初心者なものでわからないのですが このログインログアウトの記録をどうにか全部とることはできないかなーと思ったわけです。
PostgresSQLをEUC-JPで、PHPのスクリプトをShift-JISで利用したいんだけどうまくいきません。 どこを設定してやればいいですか?
それってDBの話じゃないんじゃない?よく見えないけど。 普通DBにログインするとは言わないしなぁ。
132 :
131 :03/11/06 00:22 ID:???
set client_encoding='sjis';
>>130 ねぇ、コードは合わそうよ。いろいろまんどくさいじゃん。
クエリ内でMD5とかDESみたいなので符合化したい んスが、そんな関数は無いんスよね
contrib/pgcrypto/
テーブルは存在してるからcreateできないよと言われて \dしてみると No relations found. となる。再起動したらこうなったのですがなぜ?
えーすきゅぅえる♪
質問です。 TABLE A ID | VAL1 | VAL2 01 10 5 02 15 8 03 9 2 04 10 0 というようなテーブルに対してUPDATEをしたいのですが、 UPDATEの元は TABLE B ID | VAL1 | VAL2 01 8 1 02 2 5 03 23 9 04 1 0 という別テーブルです。 ID同士は結合させるためのキー項目です。 AにあってBに無いIDもあります。 これを一発のSQLで行いたいのですが、どうしたら 良いでしょうか。
>>139 一般的なSQLの話になると思うんだが
B のみに存在するレコードがないと仮定すれば
UPDATE A
SET A.VAL1=B.VAL1,A.VAL2=B.VAL2
FROM B
WHERE A.ID=B.ID
じゃないかな?
141 :
NAME IS NULL :03/11/18 19:50 ID:u72w5U2h
create table test( hoge int4, fuga int4 ); としてテーブルを作ったとき, hoge 列と fuga 列がダブることのみ禁止する # どっちかが異なれば許す ような制約の設定方法は?
わかりにくい日本語だな・・・ CREATE INDEX index_name ON table (hoge,huga); のこと?
INDEXは違うだろ
check (hoge <> fuga) ちゃうやろか?
CREATE TABLE test( hoge int4, fuga int4 check (hoge <> fuga) ); と、 CREATE TABLE test( hoge int4, fuga int4, unique (hoge,fuga) ); の2案が出てるが・・・ (UNIQUE制約=INDEX作成、でないの?)
私供はインターネット上でデータベースサービスを行おうとしています。
http://www.datasource.jp/ みなさんの御意見が欲しいのです。
また、他にPostgreSQLによるデータベースサービスをしているところはありませんでしょうか?
147 :
NAME IS NULL :03/11/26 12:34 ID:TdSv51W9
面白そうですね! コニカがオンラインラボで使用しているそうです。
質問です。 PostgreSQLで作成したデータベース(hoge_db)があるとして、これのファイルが 実際にはディスク上のどこのなんというディレクトリと関連しているかを調べる 方法はありませんか? /usr/local/pgsql/data/base/ のなかは数字のディレクトリしかないので、どれが hoge_db のディレクトリなのかが判りません。
>>148 SELECT oid,datname FROM pg_database;
150 :
NAME IS NULL :03/11/27 02:51 ID:hvLbAuiD
初心者で申し訳ありません。 上のほうにも似たような?質問があるようなのですが、 PostgreSQLとPHPでつくられた学習のシステムがあって(e-larning) 利用者のIDや名前やメールアドレス、講義、講師などはすべてデータベースに 格納されています。 ブラウザでアクセスするとPHPでかかれたページし、 それぞれの学習者に応じたページがでてきます。 これをいじらなくてはならなくなり、 学習者がログインしていろんなページにアクセスされる度に そのログをはきたいと思っています。 普通のアクセスログ(リモホや時間)は吐き出せるですが データベースにあるその学習者のIDなどもいっしょに吐き出したいのです。 PHPで学習者のIDなどが格納されているテーブルに対して pg_execとかnumcolumns,pg_resultをつかってPHPを書いたのですが うまくいきません。 どうすればいいでしょうか?アドバイスをお願いいたします。
それは最早PostgreSQLの話題ではないのではなかろうか?
>>149 激しくサンクス!!!ありがd!!!
これで全てが解決しました!!!!!
select distinct id, key from table order by key; ではなく、order by 用の key なしで select distinct id from table order by key; ってできないものでしょうか。
?
155 :
155 :03/11/28 18:55 ID:???
継承っていまいちわからん。 こんなふうに使えばいいのかな? 表示するスペックの違う商品群A,B,Cのdbを設計する場合、 Not Postgresql--------------------- 商品マスタ_tbl CREATE TABLE master_tbl( id serial, name text, kakaku int ) 商品群A_tbl CREATE TABLE A_tbl( m_id int4 references master_tbl(id) ON DELETE CASCADE, omosa int, keizyou text, zaisitu text ) 商品群B_tbl CREATE TABLE B_tbl( m_id int4 references master_tbl(id) ON DELETE CASCADE, youryou int, ph real ) 商品群C_tbl CREATE TABLE C_tbl( m_id int4 references master_tbl(id) ON DELETE CASCADE, mol real, noudo real ) 以上定義の後、Viewを定義 CREATE A_VIEW A_view AS SELECT *.master_tbl, *.A_tbl from master_tbl,A_tbl where id = m_id CREATE B_VIEW A_view AS SELECT *.master_tbl, *.B_tbl from master_tbl,B_tbl where id = m_id CREATE C_VIEW A_view AS SELECT *.master_tbl, *.C_tbl from master_tbl,C_tbl where id = m_id
156 :
155 :03/11/28 18:56 ID:???
Postgresql----------------------------- 商品マスタ_tbl CREATE TABLE master_tbl( id serial, name text, kakaku int ) 商品群A_tbl CREATE TABLE A_tbl( omosa int, keizyou text, zaisitu text ) INHERITS (master_tbl); 商品群B_tbl CREATE TABLE B_tbl( m_id int4 references master_tbl(id) ON DELETE CASCADE, youryou int, ph real )INHERITS (master_tbl); 商品群C_tbl CREATE TABLE C_tbl( m_id int4 references master_tbl(id) ON DELETE CASCADE, mol real, noudo real )INHERITS (master_tbl); こんな風に設計できるって考えればいいのかな? 継承使っている香具師の意見もとむ
157 :
155 :03/11/28 18:58 ID:???
>>156 ちょっと間違い
商品群B_tbl
CREATE TABLE B_tbl(
youryou int,
ph real
)INHERITS (master_tbl);
商品群C_tbl
CREATE TABLE C_tbl(
mol real,
noudo real
)INHERITS (master_tbl);
158 :
NAME IS NULL :03/11/30 00:16 ID:Ysvje7EU
>>22 「PostgreSQL」の呼び方
PostgreSQLは読みにくい名前だ。その元のなったデータベースソフトウェアは、「Postgres(ポストグレス)」
という名前だった。SQLが追加され、開発がインターネット上で行われるようになると、名前は最後に「SQL」
が付けられるようになった。
PostgreSQLは、「ポストグレス」、「ポストグレエスキューエル」、などと発音されることがあるが、正しくは
「ポストゲレスキューエル」だ。公式Webサイトの
http://www.postgresql.org/ にWAVEやMP3ファイルがあるので、発音を聞くことができる。
〜エキスパートから学ぶPostgreSQL活用テクニック はじめに より
159 :
158 :03/11/30 00:17 ID:Ysvje7EU
まちがた ゲ→グ
PerlからpstgreSQLの全データベース名を取得する方法ってありませんか? データベースを列挙してから、好きなのを選んでconnectするように作りたいのです。 どうぞよろしくお願いします.
template1 に接続して select datname from pg_database
162 :
152 :03/12/08 13:51 ID:???
>>153 ありがとうございます!
やっとできました!
おかげでtemplate1のことも分かったし、万々歳です!
どうもありがとうございました!!
ReplaceとかTranslateって正規表現使えないの? 改行コードをただ別の文字に置き換えたいだけなのにできません。 SELECTするときです。 たーしけてー
>>163 なんでもかんでもSQLでやろうとしない。
SELECTで取ってきたデータを自分で置き換えればいいでないの
ALTER TABLE で VARCHARの桁数増やすことできるんですか。 50→100に 等。
varchar 全部やめて効率のいい text 型にしたら。
cygwinでPostgreSQLをインストールができません。 FreeBSD/Linux/Windows2000で使うPostgreSQL詳解 はじめてのPostgreSQLプログラミング を読んだのですが途中でつまってしまいました。 何かよいサイトか本はありませんか? あとcygwinのPostgreSQLはJDBCと接続できますか? 分かるからお願いいたします。
168 :
:03/12/23 19:25 ID:???
170 :
PIMP :04/01/01 16:14 ID:2bbOSaZO
まいど こんちは だれかご教授ねがいます POstgreSQL7.4+PHP4.3.4+Apache1.3.29の構成 あるテーブルに対してはPHPのCGI経由だとupdate,insert,deleteができません もちろん、psqlコマンドからDBへ直接SQL文をたたく事には問題ありません テーブル内容は create table test (aa text,bb text,cc text,dd text,ee timestamp,ff int8,gg int8); です 権限は grant select,insert,delete,update on test to nobody; です(nobodyがapacheユーザー) 特にエラーも吐かず、一見無事に実行されたかのうように見えるのですが、 updateもdeleteもされていません。 update文はこんな感じにしています update test set aa=ahoaho where bb=baka updateを行おうPHPの方は特に構文エラーもありませんし、他のテーブルに対しては 正常にupdate,deleteは行えます。このテーブルにのみできません。 もうこれで何週間も悩んでいます。 誰かぜひおねがいします。
上のSQLは例えだよね? まさか文字列リテラルをクォートしてないなんてことは・・・ まさかまさかとは思うけどトランザクション切ってないとか・・・ そういう次元の話でないのなら。 とにかくぜんぶsyslogに出す。どの段階まで上手く行ってるのかわかるから。
どうしてもerrorの原因がわかりません 初心者ですが誰かご教授願います。 PostgreSQL7.4+PHP4.3.4+Apache1.3.29の構成で現在動かしているのですが、 PHPからDBをpg_queryしたところ、 Warning: pg_query(): Query failed: ERROR: column "????" does not exist . とはいてくれます。 テーブルのほうにはきちんと????があるにもかかわらず、警告を出しているときって、 どういう罠に陥っているときが多いのでしょうか? 誰か知っている人いましたらご教授願います。
????がカラム名省略してんのか文字化けなのか本当にそういうカラム名なのか判断できねーけど ねーってエラーなんだからとにかくねーんだろが。DBやスキーマ違うとこにでも作ってんじゃねーの
7.2から7.3に移行するとき変えなければいけないことって何? どっかきちんとかいてるサイトない?
>>174 あったら自分も知りたい。
とりあえず pg_dump したとき
default text 'now' を default now() にして動いてるけど。
7.3のChangeLog読めば?
>>176 ChangeLog 読んでもよく分からんよね。
179 :
NAME IS NULL :04/01/26 18:34 ID:GamryImu
インストール時の質問なのですが、 WinXp にインストールしようとして、 Cygwin、Cygipc、PostgresSQL、のインストールまでは、 何とか行きましたが、 ipc-daemon のサービス化がうまく行きません ∴それ以降のpostmaster のサービス化未テスト状態です Cygipc のサービス化ってどうやったら良いですか? $ ipc-daemon --install-as-service を実行したのですけれど、 コントロールパネルからサービス開始しようとすると、 「ローカルコンピュータの Cygwin IPC Daemon サービスを開始出来ません エラー 1053 : そのサービスは、指定時間内に、開始要求または、 制御要求に応答しませんでした」 とのエラーが出て、 Cygwin のコンソールからは、 「$ NET START IPC-DAEMON サービスが制御機能に応答しません。」 とのエラーが出ます。 回避方法ご存知でしたら教えてください お願いします
181 :
179 :04/01/27 17:31 ID:???
>>180 亀レスになってしまいましたm(__)m
今日ネットに繋がらなかったので・・・
ipc-daemon2 でも駄目でした
cygwin、cygipc、のそれぞれの対応バージョンが
違うのかもしれません
またテストしてレス致します
ありがとうございました
>>181 ZoneAlarm や Outpost などの FW 入ってない?
警告なしでブロックしていたことがあったようななかったような。
183 :
虫 :04/01/28 00:23 ID:E9K82Ek2
いまORALCE7ですが、Postgresに変えて大丈夫かな? コケまくりで徹夜なんてしたくないんだが、どうでしょ? フジ痛がPostgresのセミナーしてるみたいだけど何教えてくれるんだろう。
184 :
179 :04/01/28 11:27 ID:???
>>182 ノートンが入ってます・・・
とりあえず、手動での起動終了で我慢しようかと…
情報ありがとうございました
185 :
179 :04/01/28 13:45 ID:???
ぐわ大間違い サービス設定してないと、 インスコ終わってもそのあと何もできん?_| ̄|○
186 :
179 :04/01/28 16:15 ID:???
cygcrypt-0.dll がないと、postmaster が怒ってきた ・・・cygwin、cygipc、ディレクトリ内にもない・・・ もうだめぽ_| ̄|○
cygcheck -c | egrep -i 'cygwin|postgresql|cygipc' はしたのか。 バージョンがそろってなきゃだめぽ
189 :
179 :04/01/29 13:45 ID:???
>>187 cygwin は、1.5.6-1 と出てきました
Cygwin Package Information
Package Version Status
cygwin 1.5.6-1 OK
他は、情報無し?ですかね?
何も結果が出ませんでした
>>188 ありがとうございます、未知のサイトでした
これから調べます
ポスグレ入ってねーじゃんよ。 漏れのはバージョン古いけど、 $ cygcheck -c | egrep -i 'cygwin|postgresql|cygipc' Cygwin Package Information cygipc 2.02-1 OK cygwin 1.5.5-1 OK postgresql 7.3.4-2 OK
>>190 >>186 で postmaster が怒ったと言っているので
>>189 は egrep で postgresql をスペルミスしたんじゃないかな。
とりあえず
>>179 は
>>188 を知らないということは
「cygwin postgresql 7.4 インストール」を Google した結果ページを
全部読むことをお勧めしたほうがいいかも。
192 :
191 :04/01/29 21:05 ID:???
一回 cygwin をアンインストールしてゼロから再出発したら?
193 :
179 :04/01/29 21:41 ID:???
>>190 cygipc、postmaster を共に手動で立ち上げたら、
psql template1
で接続までできたので、インスコはされていたと思います
スペルミスか、インスコしたディレクトリが、
pgsql だったので、勘違いしてpgsqlと打ち込んだのかもしれません
m(__)m
>>191 はい、上記手順で、再出発してます
前のエラーで、dllが無い、という内容でエラーが出たので、
別マシンに、cygwin フルインストールしたのですが、
この場合だと、
>>188 のページでいう
postgres ユーザーでの initdb 実行まで正常に出来ました
なんとなくですが、cygwin、のバージョン違いと、
インストール時に、デフォルトのままでは、必要なdllが入らなかった
のが原因のような気がします
…まぁ、ワタクシ本人の無知が一番の(ry
えと、レスいただいた皆さん、
本当に、有難うございましたm(__)m
194 :
179 :04/01/31 18:23 ID:???
おらっしゃ〜全部完了♪ でも、完了後に、探してたCygwinの本が見つかるなんて・・・ 「すべての問題が解決した後に、 最良の解決策が見つかる(マーフィーの法則)」 ってな感じだなぁ・・・
本なんか売ってるのか。 そんなの要るか?
196 :
179 :04/01/31 18:45 ID:???
それにしてもAllAboutJapanなんかで記事探せばわんさかヒットするわけだが
198 :
179 :04/01/31 19:03 ID:???
>>197 今ソコに行ってみましたが、
めちゃめちゃひっとしました
おそらくこれから開発時に向けて必要だと思われることも
ありがとうございました(泣)m(__)m
え?開発時? 素人が開発するのか?これから? まさか業務マじゃないよな?趣味だよな?
200 :
179 :04/01/31 19:08 ID:???
>>199 今までは、VCでスタンドアロンのアプリ開発してました
DBはオラクルを少しやってましたが
まぁしばらく悪戦苦闘は必須かなと思います
質問です. psqlで作ったテーブルをperlで操作したいと思ってます. insertとかselectとかはできるんですけど, alterを使った,フィールドの追加削除リネームができません. そもそも他のユーザは,alterによる編集は不可能なんですか?
203 :
201 :04/02/03 13:07 ID:???
>>202 レスありがとう.
grant all on table_name to public
↑を入力して全てのユーザ(public)に権限を与えたんですけど
どうやらallが意味するものは
select,insert,update,delete,rule
のみなようです.残念.
なんだかperlでは操作できそうにないっぽいですね.
>>203 create table 権限が必要。alter user を見てみ。
205 :
NAME IS NULL :04/02/03 15:50 ID:9YVWdlg+
ASPサービスで使うようなイメージなのですが、 同じテーブル構成(テーブル名や関連付けなど)を複数作って 管理する場合(※随時増えたり場合によっては削除する)、 別DBにそれぞれ格納してしまうと、joinができなかったり、 データをさっくり比べたい時などに不便だなと考えています。 そこでスキーマを使うという手を考えたのですが、 まだ実用段階ではないのでしょうか。 しかもバージョン7.3.3なのです・・・。 何か思いつくままにでもアドバイスを頂けないでしょうか。 web上で検索などして探してみたのですが、あまり実用的な説明が見つからなかったもので。 よろしくです。
>>205 スキーマのバグは聞かないけど
同様にスキーマの利用例も聞かないね。
テストしまくってバグがあれば報告して 7.4.1 以降に移行したら。
データベースに入っている時間のデータがUTCなので、 ローカルタイムにするために+9時間したデータを出力したいのですが、 どういうセレクト文にすればいいんでしょうか? というか、そういうことできるんですか? ちなみにデータ形式は 2003-01-29 16:05:28 という感じです。
>>207 単純に+9時間したいだけなら、
SELECT 日時+'9 hour' FROM hoge;
209 :
208 :04/02/03 19:57 ID:???
解決しました! ありがとうございます! ちょっと感動
210 :
207 :04/02/03 19:58 ID:???
207でした、すいません
昨日からpostgreSQLの勉強始めました。 一通り本に目を通して、いよいよ俺が扱いたかったデータを取り込んだのだが、 SELECTでテーブルの全データを表示させようとすると、 less: not found って表示されるんです。 たぶん量が多すぎてこうなるんだと思うんだけど、なんか解決策はありますか? ちなみにcygwinで動かしてます。
>>211 less: not found って?
いったいどんな本を読んだんだろう。
メッセージ通り less が見つからないのです。 less を cygwin の setup からインストールしてごらん。 less は「ページャ」と呼ばれるソフトで psql で select した時に画面以上の件数が出たら 出力を区切って出す奴ね。 less は常識中の常識なのでネタと思われても仕方ないね。 UNIX や cygwin について Web や本でもう少し勉強すると世界が広がると思うよ。
>>213 どうもありがとうございます。
「CygwinでpostgreSQLをWindowsで使う本」
っていうのを読んで勉強してます。
常識中の常識だったんですね。
Googleでいくら検索しても見つからなかったので不思議に思ってたんですよ。
思うんだけど、でガイシュツでもあるんだけど、 そんなの本買うほどのことか? Webで情報収集すら出来ないような奴が本を買うのか? 思うにそんな奴が本買ったところで、所詮出来ることは限られてくるんじゃないか?
Oracleで言うrownum指定は、postgresではどのように指定すればよいのでしょうか?
limit と offset で指定できるんですね、お騒がせしました。 しかも rownum よりも使いやすそうです。
218 :
NAME IS NULL :04/02/04 00:49 ID:fFY5eBen
>205 7.3.xのスキーマはnamespaceを指定してdumpできなかったり、joinで うまく動作しないケースがあったりするなど、細かいところで機能不足 なところがあります。期待しない方に一票。 1年ねとげーでPGをサボってたので、7.3.2以降は知らんけど 7.4.xで改善されてるんじゃないかな。
219 :
NAME IS NULL :04/02/04 01:17 ID:fFY5eBen
>217 limitって、重複データがあるときでも強制的に格納順で打ち切られ るので、rownumとは微妙に違うかも。同様にsequence()も応用が利き にくいしな〜(データをグループ分けしてナンバリングするときなど、 使えないに等しい)。 個人的にはrownumの方が利便性が高いような気がします。別にoracle fanではないけど。
>>219 何が便利って、limit・offsetはorder by後の結果で持ってこられるところ。
order byで指定した順でrownumを取得したい場合、副問合せしなくちゃならない。
221 :
NAME IS NULL :04/02/04 21:36 ID:fFY5eBen
>220 重複のないデータであればlimit/offsetがrownumの代わりになると思います。 ただし、たとえば1〜4位まで各1人が入賞し、5位に3人、8位1人入賞したよう なデータがあった場合、そこから6位以降の人を取り出すような問い合わせ が、rownumと違い容易ではないということです。 重複があっても無視できるよな場合(ページごとに30件ずつ取り出して表示 するなど)はlimit/offsetの方が便利だとは思います。
rownumがorder byよりも後に割り振られれば最強
223 :
NAME IS NULL :04/02/05 21:32 ID:P83QRT4M
windowsでそのままつかえる、postgreSQLってどこでダウンロードするの?? だれかオセーテー
225 :
NAME IS NULL :04/02/06 14:50 ID:U4rNRYwJ
JPUGはもうダメポ(´・ω・`)
226 :
NAME IS NULL :04/02/06 14:54 ID:U4rNRYwJ
JPUGはオープンソースに名を借りた恐ろしい談合集団で怖いです。 国家予算や産学予算にばかり狙って粘着してます。 石井を始めうざい連中はどっか逝って下さい。 今まで黙ってたけどいい加減頭に来るので晒して行こうと思います。
227 :
NAME IS NULL :04/02/06 14:54 ID:r07WzhnJ
詳細キボンヌ > 226
explain 結果の見方を解説したページなり本はありませんか? cost が大きいと遅いのは分かるのですが、rows や width について知りたいです。
231 :
229 :04/02/06 18:46 ID:???
232 :
229 :04/02/06 20:21 ID:???
詳しくは分からないんだけど、ドキュメントを読んだ限りの理解では、
PostgreSQLのプランナでは、複数カラム(例a,b,c)のインデックスが
有効になる場合は非常にレア(whereでa,b,cをjoin、a,bをjoin、aのみ)なので、
あんまり使われないよ、と。
だから、インデックスを作る時間とスペースが無駄、と。
それに、実際には1ないし2カラムのインデックスで事足りるから、
よっぽどパターン化されたテーブルでないと、3つ以上のカラムの
インデックスはほとんど意味ないよ、と。
「様式化」の意味がよく分からないけど、原文によると「styled」となっているから
おそらく、カラムa,b,c,...のデータの混ざり具合のことを言ってるんじゃないかな。
http://www.postgresql.org/docs/7.4/static/indexes-multicolumn.html
234 :
232 :04/02/06 21:29 ID:???
>>233 どうもありがとうございます。
MySQL や Oracle で 1 秒を切る select count(*) などが
PostgreSQL だと 20 秒以上かかり、チューニングのことをいろいろ調べております。
原文に読む、という考えが抜けて(逃げて)おりました。
原文のほかの箇所で styled がどう使われているかなど調べたいと思います。
ソースを読むのが一番なのですが、C は分かっても
DB のことが何分よく分からないので何をしているのかチンプンカンプンなのが悲しいです。
Apache や ruby, 太古の UNIX にはソース解説本がありますが、
「ソースから学ぶ PostgreSQL」なんてあると嬉しいです。
>>234 Oracleとかはselect count(col) とかして、colのインデックスを作成していたら
インデックスを使ってカウントしているみたい。今では*でもプランナが、
有用なカラムを選択してインデックススキャンしているかも。
* じゃ無くてカラム指定すると速いという記事をたまに見かける。
ML pgsql-jpでもカラム指定してみれば? というアドバイスをたまに見かけるけど、
PostgreSQLではどうやってもシーケンススキャンしてしまうような感じです。
根本的な解決ではないが、vacuum full で不要領域削除すればその分だけ
速くなる。
>235 >Oracleとかはselect count(col) とかして、colのインデックスを作成していたら >インデックスを使ってカウントしているみたい。 ふつうのB-Treeインデクスをcount()に使うメリットってないんじゃ ないかな?Oracleもそんなことしてないと思うが。
>>236 同じマシンスペックで同じデータをテストするとそうなのですが…。
238 :
237 :04/02/08 03:10 ID:???
>>237 PostgreSQL 7.4.1, MySQL5, Oracle9 で、
Apache のログ 50 万件でのテストです。
like や = で PostgreSQL は 10〜20 秒くらいかかります。
likeは、like '%hogehoge%' として部分一致や後方一致を選ぶと、 インデックスが使われない。 =はよく分からないけど、SQL文とexplain見たら何か言えるかも。
>>238 それってcountじゃなくて、選択にindexが使われるかどうかの話じゃ?
別にcount(*)じゃなくても、select *でも同じような結果になるはず。
異なるDBMSで実行時間だけ比較したって、そのDBMSのプランナが
ヘボいのか、単にまともなチューニングがされていないだけなのか
なんて判断できないし。
#まぁ実際PostgreSQLのプランナはヘボいけど。
まずは実行計画見てみよう。
>Apache のログ 50 万件でのテストです。
>like や = で PostgreSQL は 10〜20 秒くらいかかります。
結果行数いくらくらいの条件でテストしたんだろう?もし単表検索で
結果行が数百行程度だとしたら、よっぽど性能が低いマシンを使って
いるかチューニングができていないかどっちかだな。
241 :
NAME IS NULL :04/02/09 11:47 ID:2C+RVdrk
すみません、教えてください。 selectを使って抽出したデータを、ファイルに保存したいのですが、 どうしたらよいでしょうか? よろしくお願い致します。
一時テーブルにコピーして \COPY コマンドを使う。
243 :
Posgre初心者 :04/02/12 08:58 ID:Z7QtELNG
別スレでも同じ質問してます。すみません。 現在 Windows2000 SERVER 上でPostgreSQLを動作させる為にソフトのインストールを行っています。 cygwin 2.416 cygipc 1.14 postgresql 7.4.1 を使用しています。 Windows2000 PRO では問題なくインストール出来て動作していますが Windows2000 SERVERだと initdb -E EUC_JP を実行した時 fixing permissions on existing directory /usr/local/pgsql/data... ok creating directory /usr/local/pgsql/data/base... ok creating directory /usr/local/pgsql/data/global... ok creating directory /usr/local/pgsql/data/pg_xlog... ok creating directory /usr/local/pgsql/data/pg_clog... ok selecting default max_connections... 10 selecting default shared_buffers... 50 creating configuration files... ok creating template1 database in /usr/local/pgsql/data/base/1... FATAL: could not create shared memory segment: Function not implemented DETAIL: Failed system call was shmget(key=1, size=1081344, 03600). と言うエラーが出て失敗します。 initdb を行う前にipc-daemon2 & も実行していてタスクマネージャーのプロセスで 起動しているのは確認できています。 またipc-daemon2 & を実行していなくても同じメッセージでエラーになります。 cygipcの設定等でSERVER用に何かあるのでしょうか? 同じ方法でインストールした2000PRO(プロフェッショナル)では問題ないので 困っています。どなたか判る方いませんでしょうか?
244 :
NAME IS NULL :04/02/13 03:57 ID:rre/TDii
PostgreSQL 7.4.1をさっきインスコしてみたんだけど、どうもおかしい。 create table s(a text); insert into s values('あ'); insert into s values('い'); insert into s values('う'); insert into s values('えお'); 【クエリ】 select * from s where a='ん'; 【結果】 a ---- あ い う (3 rows) ・・・ナンデ?_| ̄|●
再現できなかったにょ・・・。
文字コード関係じゃないの? SET ALLでencoding関係調べてみ。 ソースからインストールしたならconfigure時かDB作成時にEUC_JP設定してるよね。
失礼、 SET ALL じゃなくて、SHOW ALL
248 :
244 :04/02/13 16:27 ID:rre/TDii
>>244-247 ちなみに文字コード関連じゃなさそうです。
EUC_JPでもSQL_ASCIIでも同じ症状。
まったく訳わからんのは、日本語文字に限り
文字数が一致したら等号演算がTrueを返すってところ。
Ver7.4.1でダメだったから7.3.5入れてみたけど同じ症状が発生。
7.1.3まで落としたら治りました。
もしかしたらLinux自体のバージョンかも・・・。
↓かなり古い奴です。
Vine Linux 2.1.5 (Calon-Segur)
Kernel 2.2.18-0vl4.2 on an i686
249 :
NAME IS NULL :04/02/13 17:10 ID:Wi1Z6lQf
本の貸出管理データベースで、どの本がいつ借りられたか(貸出期間一週間として)、また自分が借りる時はデータベースに、どの本をいつ借りたか、という内容を扱えるデータベースを作りたいんですけど、どのように設計したらうまくいきますか?教えて下さい。
250 :
NAME IS NULL :04/02/13 20:33 ID:WELrMNyo
すいません、初心者です。 毎日の”天気”、”温度”、”湿度”、”出た尿の総量”、”運コの重さ”をデータベースで管理したいんですけど どうすればいいのでしょうか? 一応色々調べたんですがまったくわかりません。 シャレとかじゃなくて真面目な質問です。 どなたか、わかる方お願いします。
>249 >250 設計丸投げ野郎はどっか逝け。
>>250 >>一応色々調べたんですがまったくわかりません。
調べ方が悪いと思います。あと3年くらい調べても分からなかったら、
改めて聞きにきてください。待ってます。
>>251 設計丸投げとかじゃないです
>>252 約3ヶ月しか経ってませんからまだまだですね。
何か、色々な本を読みすぎてわけわからなくなってます
ER図とかいうの作ったんですけどなんだかしっくりきません。
取っ掛りが上手くいかないんですよ
まぁ、ある程度は作ったんですけど・・
スレ汚してごめんなさいでした。
>ER図とかいうの作ったんですけど まあ、お前は作ったと思っているだろうけど 本当は作れてなんかいないと思うよ。
>>248 7.2だか7.3からは、initdb で --no-locale 入れること
EUC-JPも、make時じゃなくてここで入れる
$ initdb --no-locale --encoding=EUC-JP
256 :
255 :04/02/14 01:33 ID:???
EUC_JP だった。あちこち違うから大変だな・・・
>>250 DBを使う必要はない。ファイルでじゅうぶん。
毎日の”天気”、”温度”、”湿度”、”出た尿の総量”、”運コの重さ”なら、
username,date,weather,temp,humidity,pee,poo
......
でいいんじゃない。検索はPerlででもやれば。
258 :
244 :04/02/14 05:14 ID:wJPgykvM
259 :
Posgre初心者 :04/02/14 20:37 ID:K8DOvVy5
>> 243です。 自己レスです。 cygwinのバージョンがWindows2000 SERVERが1.5.7、 Windows2000 PROが1.5.5でした。 一日違いのインストールで何故Windows2000 SERVERが1.5.7で Windows2000 PROが1.5.5になってしまったかは分かりません。 ただWindows2000 SERVERにcygwin 1.5.5をインストールすれば 問題なく動作しました。cygwinはsetup.exeでインストールしているので 自動で最新がインストールされていると思っていたのですがどうも Windows2000 PROでインストールした時は1.5.5が入ったようです。(何でだろ〜???) cygwin 1.5.7 では何度再インストールしてもinitdbはやはりエラーになります。 ipcsでも共有メモリ等が設定できていませんでした。(ipc-daemon2 &は実行済み) と言うことでcygwin を1.5.5で運用します。
260 :
NAME IS NULL :04/02/15 11:27 ID:7KEaGl15
>>254 ちゃんと作りましたよっ
Diaというソフトを使いました。
何でしっくりこなかったかというと。
テーブル1つしか要らないだろうものを大げさに考えてたからです。
出来上がったER図が妙に意味の無い単純なものでコイツは絶対におかしいとか考えてました。
>>257さんの
テキストで十分でひらめきました。
ありがとう。
>>260 その ER 図を公開したら建設的な意見がもらえるかもしれませんよ。
「どのように設計したらうまくいきますか?」だけでは
丸投げと思われても仕方がないでしょう。
>>260 言葉の意味も読みとれないお前は、向いてないかも知れないな。
出来上がったそれがER図として役に立たないなら、それはすでにER図ではない。
つまりお前にはER図は作れていない。
ER図の書式に乗っ取ったラクガキは作れたかも知れないが。
Mainichi INTERACTIVE Mailより。 Cover Story★★………………………………………………………………………………… SI業界はデフレ・スパイラル? 同じ情報サービス業界 業態で明暗くっきり …………………………………………………………………………………★★Cover Story 受託開発を主業とするシステム・インテグレーター(SI)会社の業績回復が遅れて いる。回復はおろか、前期に比べ大幅に悪化するところさえ非常に多い。一方で、サ ーバー、ネットワークなどの構築を営む基盤構築企業は業績回復が鮮明だ。同じ、企 業の情報化投資を担う企業でありながら、なぜ、違うのか? SI業界は「デフレ・ス パイラル」かもしれない。
■■好調な基盤構築系の企業 昨年5月以降の株式相場上昇など景気の改善を受け、企業の情報化投資が動き出し た。しかし、2003年度ではまずインフラ整備が優先されている。企業はネットワーク のブロードバンド対応、2000年問題に対応する時に導入したサーバー更新に動いた。 ネットワーク構築、サーバー構築を営む企業の業績回復は、これを受けた結果であ る。 本来であれば、来期は受託開発系企業の業績回復が予想されるのだが、どうもこの 関係企業には自信がないようだ。過去においては、受託開発系企業の業績は基盤構築 系の企業に半年から1年遅行する傾向が観察された。 システム構築を高層ビル建設にたとえると、いきなり最上階から建設することは不 可能である。まずは、土台となる基盤構築工事が先行する。システムの世界もこれに 同じである。まずは、業務システムが稼動する基盤(ネットワーク、サーバー、スト レージ、ミドルウエアなど)の設計から始まるのである。これと同様に、今期の基盤 構築系企業の好調は、そのまま来期の受託開発系企業の回復を示唆するはずなのだ が、現実を見るとそうならない要素が見えてくる。
■■最大の不安は過度な値下げ圧力 まず、最大の不安要因は、受託開発サービスの世界を蝕む過度な値下げ圧力だ。昨 今、SI会社の中で「不採算案件の発生」を理由に業績下方修正を発表する企業が相次 いでいる。大手では3社に1社の割合で、中堅以下は10社に9社とほぼ壊滅である。 ここまで各社が共通して「不採算案件の発生」を業績不振の口実にあげたのはおそら く今回が初めてであろう。これはSIサービスの世界が過度なデフレ・スパイラルに入 ったことの証ともいえる。 ここまで「不採算案件の発生」が強調されると、競争過多のあまり、本来、到底請 け負えない金額での安値受注が横行しているのではないかとさえ思う。この業界は大 手元受業者による安値受注が中堅以下の下請けSI会社にも波及するため、メーカーを 含む大手SI企業の安値受注合戦は業界全体の危機と言えよう。 確かに日本のSIサービスは国際的に見て割高な点がかねてから指摘されていた。中 国への外注、海外パッケージ導入などにより、少しづつに是正されて行くのは自然で ある。しかし、対応力を超える過度な値下げは、また、そこまで競わせるユーザーの リテラシー低下は問題だろう。
■■「トラブル多発」イコール「ユーザーの不利益」 この先、日本のSI業界は本格的な構造改革期を迎えよう。最近、銀行の勘定系シス テムのように従来トラブルなどありえなかった巨大システムの事故が後を絶たない。 こうした事故は複雑巨大化する基幹システム、2007年問題、レガシーからオープン へ、そして過度な値下げ競争、現在SI業界が抱えるさまざまな問題が集約された帰結 と思える。 「システムトラブル多発」はイコール「ユーザー(利用客)の不利益」であり、そ のまま、企業の不利益だ。その意味で発注する企業の情報サービス部門は、システム 投資のあり方を見直し、それを受けるSI企業も開発のあり方を見直す時期に入ったと 言えよう。 そうした見直しが行われれば、顧客サービスの安定、便利さで10年後、ユーザーの 情報サービス部門はかつての復権を取り戻し、CIO(Chief Information Officer)の 社内ステータスは今以上に高いものになっていよう。ただ、SI会社は淘汰され、企業 数が半減している可能性はある。だが、残った会社は顧客企業と適正な価格での取り 引きが行われ、健全な経営のもとで、そこが作ったシステムが安全に稼働し企業とそ の顧客に役立っていると考える。
>>対応力を超える過度な値下げは、また、そこまで競わせるユーザーの >> リテラシー低下は問題だろう。 >> ただ、SI会社は淘汰され、企業数が半減している可能性はある。 おまいら、SIなんてやってていいのですか。 デフレ圧力で単価の異常に安そうな(260のような)プログラマが ER図とやらを書いてシステム作る時代だ。 DB板にはりついてるようなおれたちのような連中に明日はなさそうだぞ。
>おまいら、SIなんてやってていいのですか。 ↓ >おまいら、死なんてやってていいのですか。
269 :
NAME IS NULL :04/02/16 13:35 ID:w03qSW6m
redhatで構築してますが。 ./configure --with-java ./gmake gmakeでインストールにつまっとります・・ javaのコンパイルでエラーに・・なぜだ・・。
>>269 もっと詳しい状況説明がないと答えようがないだろ、阿呆。
ほんとに阿呆ばっかりだな。
で、CLASSPATHはちゃんとしてんの?BINに/xxx/jdk/bin は入ってんの?
>> 269 つうか、javaインストールしてんだろうな。
javaんときはantにもパス通ってないと無理じゃなかったか
すんません、エラーは長いですがこんな感じ [javac] Compiling 77 source files to /usr/local/src/postgresql-7.4.1/src/interfaces/jdbc/build [javac] /usr/local/src/postgresql-7.4.1/src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3Statement.java:28: error: Invalid checked exception class `java.sql.SQLException' in `throws' clause. The exception must be a subclass of an exception thrown by `org.postgresql.jdbc1.AbstractJdbc1Statement.createRefCursorResultSet(java.lang.String)' from class `org.postgresql.jdbc1.AbstractJdbc1Statement'. [javac] public PGRefCursorResultSet createRefCursorResultSet (String cursorName) throws SQLException [javac] ^ [javac] /usr/local/src/postgresql-7.4.1/src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3PreparedStatement.java:23: error: Invalid checked exception class `java.sql.SQLException' in `throws' clause. The exception must be a subclass of an exception thrown by `org.postgresql.jdbc1.AbstractJdbc1Statement.createRefCursorResultSet(java.lang.String)' from class `org.postgresql.jdbc1.AbstractJdbc1Statement'. [javac] public PGRefCursorResultSet createRefCursorResultSet (String cursorName) throws SQLException [javac] ^ [javac] /usr/local/src/postgresql-7.4.1/src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3PoolingDataSource.java:29: error: Method `org.postgresql.jdbc2.optional.PoolingDataSource.getDataSource(java.lang.String)' was defined with return type `org.postgresql.jdbc2.optional.PoolingDataSource' in class `org.postgresql.jdbc2.optional.PoolingDataSource'. [javac] static Jdbc3PoolingDataSource getDataSource(String name) [javac] ^ [javac] /usr/local/src/postgresql-7.4.1/src/interfaces/jdbc/org/postgresql/jdbc3/Jdbc3CallableStatement.java:23: error: Invalid checked exception class `java.sql.SQLException' in `throws' clause. The exception must be a subclass of an exception thrown by `org.postgresql.jdbc1.AbstractJdbc1Statement.createRefCursorResultSet(java.lang.String)' from class `org.postgresql.jdbc1.AbstractJdbc1Statement'. [javac] public PGRefCursorResultSet createRefCursorResultSet (String cursorName) throws SQLException [javac] ^ [javac] 4 errors
パスは通しているんですが。。 $ echo $PATH /usr/kerberos/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/local/j2sdk/bin:/usr/local/j2sdkee/bin:/home/postgres/bin $ which ant /usr/bin/ant
275 :
NAME IS NULL :04/02/18 13:07 ID:tWiWwt8M
CLASSPATHがないんかな?
javaのバージョンが古いっぽい
277 :
NAME IS NULL :04/02/20 02:16 ID:ZvTh55HA
SELECT A.ID ,A.NAME ,A.AGE ,A.SEX,,B.CORP FROM ATABLE AS A INNER JOIN BTABLE AS B ON (A.ID = B..ID) WHERE A.YEAR = '2004' AND A.CODE = '1' ORDER BY A.AGE こういうSQLがあったとして 取得するデータが A.ID ,A.NAME ,A.AGE ,A.SEX,,B.CORP 01あいうえ 43男 A 03かきくけ 33男 B 02さしすせ 12女 A として、このデータをそのままPostgreSQLで各テーブルにInsertするにはどうすればいいのでしょうか? 一つのテーブルならともかく、二つ以上のテーブルが重なってるのがよくわかりません 教えてください
2つのテーブルから抽出したデータを、 何のためにその2つのテーブルにINSERTするのか。 まずその理由を述べたまい。
279 :
NAME IS NULL :04/02/20 02:50 ID:KwDMmL5N
>>278 意味がないといえばはないけど
とりあえずダブる二つのデータを作成したいです
2テーブル扱うビューを作ってそれを更新するのに トリガを使う例がどっかにあったような
すいません、php4とPostgres使い始めなんですが、 phpから入ってくるデータを、必ずEUCでPostgresに入れるにはどうすればいいのでしょうか?
282 :
280 :04/02/20 11:23 ID:???
どなたかplease...
$Sql = "SELECT * FROM y"; $Sql .= " WHERE ps_id = " . '$id'; $Sql .= " OR flg =" . '1'; $Sql .= " ORDER BY ply_id desc"; $result = pg_Exec($db, $Sql); $Rows = pg_numrows($result); コレで&ROWS長さが帰ってきません、SQL文に問題があるんでしょうか
いったんテキストに出力して、psqlからコピペして 結果を確認してみる
286 :
232 :04/02/20 13:01 ID:???
>>280 マンモス本
>>281 mb_convert_encoding($str, 'EUC-JP', 'auto');
>>283 $Sql の内容を psql に流したら何件でるのさ。
>>287 すいません、なんとか解決致しました、ありがとう御座います
解決時のコード(さっきとは変数名が少し変わっています)
$szSql = "SELECT * FROM tm_player";
if($in_psid == 99){
$szSql .= " WHERE (ps_id = '$in_psid'";
$szSql .= " OR ps_id = '88')";
}else{
$szSql .= " WHERE ps_id = '$in_psid'";
}
$szSql .= " AND yb_flg = 1 ";
$szSql .= " ORDER BY ply_id desc";
$result = pg_Exec($db, $szSql);
$Rows = pg_numrows($result);
それで早速なのですが $arrData = pg_fetch_array($result, 0); で得られたデータの $arrData["birthday"]の中身が char(8)なのですが 11111111が入っていた場合1111/11/11のようにHTMLに出力する場合どのようにすればよいのでしょうか 出力ロジックはあるので$arrData["birthday"]の内容をPHP側で編集したいのです
291 :
NAME IS NULL :04/02/20 19:56 ID:WOIPhY1A
現在DBに接続中のセッションを調べ、 特定のセッションを強制切断させる方法を ご教授下さい。 T-SQL(MSSQL Sybase)だと sp_whoで調べて kill セッション# Oracleだと SELECT SID, SERIAL#, STATUS, USERNAME, SCHEMANAME, OSUSER, TERMINAL, MACHINE, PROGRAM, A.NAME FROM V$SESSION S, AUDIT_ACTIONS A WHERE S.COMMAND = A.ACTION; で調べて ALTER SYSTEM KILL SESSION 'sid,serial#'; です。
初心者です。質問させて下さい。 PostgreSQLを使えば複数の書き込みが重なることによって ファイルが壊れる(空になる)ことがなくなるんですか?
293 :
NAME IS NULL :04/02/22 19:06 ID:lkTMtM8E
postgresをpostmaster で起動すると一般ユーザーでもrootでも起動できるのですが。 起動スクリプトで /etc/rc.d/init.d/postgres start と起動するとrootでは起動できるのですが一般ユーザーでは起動できません。 must be in tty ... とエラーがでます。一般ユーザーでログイン後に起動させるにはどうすればいいのでしょうか? アドバイスよろしくお願いします。
起動スクリプトはrootしか起動できません。そういうものです。 pg_ctlを調べなさい。
>>294 なるほど。
でもrootしか起動スクリプトを起動できないなんてなんかもったいないような気がします。
アドバイスありがとうございました。
ゴールデンレター このレスを見た人はコピペでもいいので 30分以内に7つのスレへ貼り付けてください。 そうすれば14日後好きな人から告白され、17日後に あなたに幸せが訪れるでしょう
297 :
NAME IS NULL :04/02/22 23:33 ID:vGCsoKgV
298 :
294 :04/02/23 08:59 ID:???
つうか/etc/rc.d/以下の起動スクリプトはデーモン起動用だから、 むやみに誰でも起動できちゃあ危険なんだよ。 DB野郎はモノをしらんな。もう少しUNIXを勉強せい。 UNIXも仕事道具の一つだろ。
299 :
NAME IS NULL :04/02/23 09:40 ID:82dGYiiz
だから、起動スクリプトの中で sudoを使えばいい。 そんなことは定石だろ?
300 :
NAME IS NULL :04/02/23 10:01 ID:1zYluZIV
>>299 が正解。
>>298 は
>>293 が
>一般ユーザーでログイン後に起動させる
>にはどうすればいいのでしょうか?
一般ユーザが自動起動によりで起動したいと
いっているのに、分かっていないようだ。
>>300 それは違うような。
> 一般ユーザが自動起動によりで起動したいと
>いっているのに、分かっていないようだ。
とはいっていないはず。なぜなら
> 起動スクリプトで
>/etc/rc.d/init.d/postgres start
>と起動するとrootでは起動できるのですが一般ユーザーでは起動できません。
と"手動"で起動しているから。
/etc/rc.d以下はroot以外使わないのが"正しい"。
一般ユーザが起動したいのなら、起動スクリプト"pg_ctl"を使えばよい。
パーミッションもよく分かってなさそうな素人にsudoを教えるなど論外。
しかし、、起動ユーザーの問題は残るけどな ユーザー'postgres' にsuできるのはrootだけって設定にしていると pg_ctlだけじゃすまない。いったんrootになる必要がある まあ、postgresをロックしないでパスワード設定すればいいんだけど
303 :
NAME IS NULL :04/02/23 16:41 ID:1zYluZIV
>>301 >/etc/rc.d以下はroot以外使わないのが"正しい"。
そんなことはない。適正なユーザで実行権限を与えるべし。
うちのSolaris(一部)なんかこうだよ。
-rwxr--r-- 5 root sys 911 1月 6日 2000年 syslog
-rwxr-xr-x 1 root sys 119 8月 19日 2003年 tcpserver
-rwxr--r-- 1 root sys 304 1月 6日 2000年 ufs_quota
Linuxでもいっしょ。
別に特定ユーザにそのデーモン実行について全て
を委譲し、実行に問題ないなら(←強調)、
起動スクリプト実行権限はその特定ユーザに
与えても構わない。
但し、起動スクリプトへの書き込み権限は別。
MTA や 鯖系のインストールドキュメント
は余裕で起動スクリプトに対して、
chmod 755(750)出してるよ。
オレが言っているのは、
起動スクリプトをrootで起動させても、
スクリプトの中ではsudo(su -c )を使用し、
特定ユーザでpostgresを実行させろってこと。
ただし、自動起動時はrootで起動されるから
sudo(su -c)などのユーザの変更が必須。
君はsudo(su -c)を教えない、使わせないと言っているが、
じゃあ、君は例えばpostgresを自動起動させる場合、
postgresをroot権限で実行させろというのか?
そっちの方がやべーじゃん。
まとめると、安全な方法は
postgres自体は一般ユーザで起動させる。
起動スクリプト自体はroot権限で実行させる計画なら
rootで実行させ、スクリプトの中のpg_ctl はsudo(su -c )により
特定ユーザ(postgres)にて起動させるってことだ。
あんまり、素人には、とか言うなよ、
誰だって最初は分からないんだから。
こういうことで覚えてけばいいじゃんか。
起動時にrcスクリプトが実行されるときはroot権限だから、 rcスクリプトの中でsudoするのには何の問題もないけど、 一般ユーザーがsudoするにはパスワード入力が必要だし、 rcスクリプトの中で環境変数(PGDATAなど)を設定している場合も多いから、 起動時に自動実行されることが前提となっているrcスクリプトを 一般ユーザーがそのまま使うのは簡単でない場合が多い。 もちろん、「確率」の問題だから使えることもあるけれど、 そのあたりを切り分けできる程度のスキルがないと、 rcスクリプトの使い回しなんてロクなことにならないと思う。 一般ユーザーでpostgresqlを起動するとはどういうことなのか、 rcスクリプトでは何のためにsudoをしているのか、などが分かってりゃいいが、 分かってない人に「rcスクリプトを一般ユーザで使うには」みたいな ことを教えてもムダだと思う。正直。 逆に分かってる人なら、「スクリプト」なんて一行ずつ読んできゃ 分からないわけないんだから、自力でなんとかできるだろ。
305 :
303 :04/02/23 17:08 ID:1zYluZIV
ごめん s/postgres自体は一般ユーザで起動させる。 /postgres自体は特定ユーザ(postgres)で起動させる。 起動スクリプトのユーザの使い回しはしていません。
おまいらが頭良いのは分かったから喧嘩するなよ
>>303 うざいからここだけ。
> じゃあ、君は例えばpostgresを自動起動させる場合、
>postgresをroot権限で実行させろというのか?
/etc/rc.d/init.d/postgresqlを実行できるのはrootだけだが、
少なくともredhatの/etc/rc.d/init.d/postgresqlは、
内部でsu -l postgres ...
を実行している。つまりユーザpostgresで起動するわけ。
俺は301=307、304じゃない。念のため。
309 :
NAME IS NULL :04/02/23 21:22 ID:82dGYiiz
>>307-308 別に誰だっていい。
そうやって書かれてあるならそれでいい。できあいのスクリプトなんかしらねーよ。
root以外で起動させたければ起動スクリプトをそのユーザ所有にしとけ。
危険でもなんでもない。
以上
えっ・・・postgresユーザで動かすのが普通かつ常識じゃなかったのか・・・。
311 :
NAME IS NULL :04/02/23 22:06 ID:WJrjzaRO
おいおい、どういう常識なんだ? ユーザなんて、自由にかえられるだろ? postgresのインストールディレクトリ、ファイルの 所有者をpgsqlというユーザに変更したら pgsqlユーザで動かすじゃないか。 Unix系OSにあらかじめpostgresユーザが作成される とでも思っているのか? インストーラのrpmが勝手に作成して設定してるだけだ。
postgresユーザで動かしてたとして、なにか不都合でもあるのか
313 :
NAME IS NULL :04/02/23 22:32 ID:F7TEU9gy
pg_ctlをuser:postgres以外にも使えるようにすることはできますか?
300=303=305=309=311は、300で墓穴掘って以降、 趣旨をずらしながら自己弁護を続けた.....集中放火浴びつつ。
315 :
NAME IS NULL :04/02/23 23:23 ID:WJrjzaRO
>>312 別に不都合ねーよ。実行ユーザ名なんか自由に設定できるってことだ。
>>313 chgrp -R 他に使用したいユーザのグループ postgresインストールディレクトリ
chmod -R 774 postgresインストールディレクトリ
つーかさぁ、ソースからビルド、インストールしたりすれば
OSの使い方とか自然に分かってくることじゃん。
configure;make;make installじゃあOSなんて理解できねえよ と燃料投下。
317 :
NAME IS NULL :04/02/23 23:38 ID:WJrjzaRO
違うがな、誰でもいいじゃねーか。
誰がどんなレスしたって知ったこっちゃない。
そんな低レベルな話題でしか煽れないのか?
>>316 暇だから釣られてやるよ。
postgresのビルドに何が必要か調べてみろ
あとそれだけじゃあ、rootでないと起動できないぞ
マルチバイトもjavaもサポートさせないのか(w
> マルチバイトもjavaもサポートさせないのか(w さては7.3以降の変化を知らんな(w
319 :
NAME IS NULL :04/02/23 23:57 ID:WJrjzaRO
>>318 dbinit -E EUC_JP
createdb -E EUC_JP
318のために解説しよう。 7.3以降、configure時に--enable-multibyteを指定せずともマルチバイトコードに 対応するようになったのだ。 initdbもcreatedbも"OS"とは関係ないので注意しよう。 なお、initdb実行時に--no-localeを忘れずに。 ちなみにdbinitじゃなくinitdbだ (w
壁|-`).。oO(dbinit...)
> 318のために解説しよう。 しもた、自分にレスしちまった。 > 319のために解説しよう。 のつもりだったのに、はずかしい。
324 :
NAME IS NULL :04/02/24 00:47 ID:GH2U194d
なんかさあ、言葉のはしはしをつっつくだけじゃん。 べつにコマンド間違えたらお前が突っ込まなくても OSが突っ込んでくれるよ(w >initdbもcreatedbも"OS"とは関係ないので注意しよう。 OSからみたらコマンドだろ。postgresインスコディレクトリ/bin 配下にあるだろ。OSから起動させるから関係なくねえじゃん。 まあ、がんばれ。
> >initdbもcreatedbも"OS"とは関係ないので注意しよう。 > OSからみたらコマンドだろ。 ぷっ
326 :
NAME IS NULL :04/02/24 01:10 ID:GH2U194d
笑うとこか?
>> OSからみたらコマンドだろ。postgresインスコディレクトリ/bin >> 配下にあるだろ。OSから起動させるから関係なくねえじゃん。 先生!! createdbを100回実行したらOSが分かりますか? dbinitを100回実行したらOSが分かりますか (w
まあなんだ、 ID:GH2U194dは/etc/rc.d/以下の意味が分かってなかったということで。
分からんよ。 OSからコントロール (実行や実行ファイルの削除が)できるから 関係あるといってるだけじゃん。
330 :
NAME IS NULL :04/02/24 01:24 ID:GH2U194d
>>328 あなたのような大先生ほどではありませんが
私が設定した自動起動スクリプトでも問題なくシステムは
回っていますです。
331 :
NAME IS NULL :04/02/24 01:34 ID:GH2U194d
>>327 パスが切ってあるとか、それこそ実行権限の設定だとか
全部じゃないけどOSの話の一部じゃないのか?
環境変数の設定の仕方とかOS(シェル)の話じゃないのか?
> OSからコントロール >(実行や実行ファイルの削除が)できるから > 関係あるといってるだけじゃん。 今、僕はUSBライトで部屋を照らしているのですが、これはOSに関係あるでしょうか? USBライトはOSを起動しないとライトがつかないのでOSに関係あるように思いますが、 PCの電源と連動しているだけのようにも思えます。 USBライトを研究するとOSのことがわかるようになるかどうか心配です。 なにを勉強すればOSがわかるのでしょうか?やはりinitdbでしょうか。
333 :
NAME IS NULL :04/02/24 01:43 ID:GH2U194d
話曲げてるのお前じゃん(w ドライバ使って明るさ明るさ変えるやつは あるんでないの? そうかもなinitdb調べて見ろよ。
334 :
NAME IS NULL :04/02/24 01:44 ID:GH2U194d
明るさが1コ多かった
> 私が設定した自動起動スクリプトでも問題なくシステムは > 回っていますです。 それは運がよいのか、環境がヌルいだけと認識しなさい。 例えていえば、他の車が全く通らない自動車学校のコースをぐるぐるまわって 俺は無事故だといっているようなもの。 もちろんそれで済むならそれでいいが、一般的には危険だ。 何人かsudo関係で注意していたと思うが、 君はそれを聞き入れるだけのレベルには達していないようだ。
336 :
NAME IS NULL :04/02/24 02:04 ID:GH2U194d
sudo や suでrootユーザでなく 一般起動ユーザで起動させて何が危険だ。 危険ということを具体的に言ってくれ
>>335 >> 環境変数の設定の仕方とかOS(シェル)の話じゃないのか?
OSとシェルの違いすら怪しい厨房の相手なんかすんなよ(w
>> まあなんだ、 >> ID:GH2U194dは/etc/rc.d/以下の意味が分かってなかったということで。 agree.
339 :
NAME IS NULL :04/02/24 02:10 ID:GH2U194d
もしかして、おれはとんでもない厨房と
話しているのか?
そうでないなら早く、
>>336 を言えよ。
危険危険って何が危険なんだ?
> 危険危険って何が危険なんだ? 君の考え方
341 :
NAME IS NULL :04/02/24 02:19 ID:GH2U194d
また、勘違いされるとかなわんから もう一回書くが sudo や suにより、rootユーザでなく 特定起動ユーザでデーモンプログラムを 起動させて何が危険だ。?
>> > 危険危険って何が危険なんだ? >> >> 君の考え方 同意。 もうやめて寝れ。
>> sudo や suにより、rootユーザでなく >> 特定起動ユーザでデーモンプログラムを >> 起動させて何が危険だ。? 厨房決定。
344 :
NAME IS NULL :04/02/24 02:29 ID:GH2U194d
ふーん、何だ言えないのか?
言えないのに煽るな。
>>343 厨房はおまえだろ。全部デーモンプログラムを
rootで起動させとけ。
きっと自分一人しかログインしないマシンを使っているのさ、 だからrootと一般ユーザの区別がいまいち分かっていないのさ。 大人のルールを分からない奴は厨房なのさ。 君子危うきに近寄らずってのを理解できん奴は厨房なのさ。
346 :
NAME IS NULL :04/02/24 02:35 ID:GH2U194d
>>345 ハァ?自分で自分のクビ締めることいってないか?
あっそうか、こいつ等のことをいっているんか。
なら同意。ゴメン
>> 厨房はおまえだろ。全部デーモンプログラムを >> rootで起動させとけ。 /etc/rc.d以下の起動スクリプトをrootで起動するのと、 それにより起動させられるデーモンプログラムがrootで起動するか suで別のユーザ権限で稼働するのかは別問題なんだなあ。 混同してるだろ。起動スクリプトの実行ユーザと、デーモンの所有者について。
348 :
NAME IS NULL :04/02/24 02:40 ID:GH2U194d
何度もいってるだろ デーモンプログラムをって、 起動スクリプトって言ってないだろーが。
ID:GH2U194dの母です。postgresqlの有意義な話をすべきスレで、私供の愚息が スレを浪費してしまいまして、誠に申し訳ありませんでした。 またなにか書き込むでしょうが、皆様、無視するようなにとぞお願い致します。
> 起動スクリプトって言ってないだろーが。 話の発端はお前の起動スクリプト話だったんだが。都合の悪い話は忘れたか。
ID:GH2U194d cross fire!
352 :
NAME IS NULL :04/02/24 02:49 ID:GH2U194d
はぁ? オレは、自動起動時の場合は例え起動スクリプトの 所有者を変更していてもroot権限で起動スクリプトを実行させるから、 適切な起動ユーザにてデーモンプログラムを実行するように スクリプトを書けって何回もいってるじゃねーか。
ところで、お前、
>> > マルチバイトもjavaもサポートさせないのか(w
>>320 :NAME IS NULL :04/02/24 00:03 ID:???
>>
>> 7.3以降、configure時に--enable-multibyteを指定せずともマルチバイトコードに
>> 対応するようになったのだ。
--enable-multibyteはスルーだな(w
やっぱ都合悪いことは...
ID:GH2U194dは自家中毒を起こし始めました。
このスレは 『ID:GH2U194dの、こちとらrootじゃ!』 になりました。
356 :
NAME IS NULL :04/02/24 02:57 ID:GH2U194d
それは悪かったな。 7.3移行はconfigure付けなくても マルチバイトはデフォルトでサポート。 すごい重要なことです。勉強になりますた。 それで、オレの意見は考え方が危険とか 具体的なことがないけど。
357 :
NAME IS NULL :04/02/24 02:58 ID:GH2U194d
s/configure付けなくても/ configureオプション付けなくても
358 :
NAME IS NULL :04/02/24 03:02 ID:GH2U194d
悪いもう一つ、s/移行/以降
はやく、
>>352 の具体的な危険とやらを
教えてクリ。
359 :
NAME IS NULL :04/02/24 07:39 ID:GH2U194d
昨晩はつきあってくれてありがとうございました。 発端は >つーかさぁ、ソースからビルド、インストールしたりすれば >OSの使い方とか自然に分かってくることじゃん。 ですかね。 そうですね、これだけではOSの使い方は 全部わかりませんよね。 いろいろ調べたり、オリジナルの設定を行ったり、 慣れ親しんで覚えていくと、知識が広がると 言いたかったのです。 私の意見も勘違いさせるような内容だったりと、 反省していますし、私自身もまだまだ未熟である と自覚しています。 他の人もちょっと入り込めないようにしてしまった のでお詫びします。 OracleやDB2のDB鯖を仕事で使っているけど postgresも使ってみると負けてないですよ。 みなさんもがんばってください。
で、どこを縦読みするのかね?
Solarisを触り始めて(Unixをまともに使い出したのはこれが最初) これのMake,インストール・立ち上げはかなり苦労したなぁ 当時は6.5.xだったが。おかげでいろいろ覚えたよ
362 :
NAME IS NULL :04/02/24 12:46 ID:lGzRYFqg
初めまして、質問なのですが、 timestamp同士の計算結果を分で返すようにしたいのですが、 どうやって戻り値をフォーマットしたらいいのでしょうか? select age(now(),'2004-02-24 09:50:00'); これを「□時間□分働きました」ってな具合にしたいんです。 よろしくお願いします。
>>361 禿同。antやzlibやreadlineが無いって怒られて、
これでもか!っていうくらいインストールがこけたよ。
>>359 の言っていることも合ってると思うよ。
364 :
304 :04/02/24 13:23 ID:???
あ、祭に乗り遅れた・・・。(´・ω・`)
>>362 Maybe date_trunc().
366 :
:04/02/26 00:42 ID:FEZ04nhN
リクエストしているSQLの内容をモニタ(ログでも可)するにはどうしたらいいのでそ シーラカンス本にはdebug_print_queryというログのエントリがあるんですが それを設定すると FATAL: unrecognized configuration parameter "debug_print_query" て怒られます
7.3以上のものならlog_statement に変わったモナ
368 :
366 :04/02/26 01:10 ID:FEZ04nhN
なるへそぉ。ありがとうございます。 さっそく試してみます
へ?to_charって廃れたものなの? 知らなかった。漏れも使い倒してる……orz
>>370 , 371
Only "to_char(interval, text)"
to_char(interval, text) の代替案は?
intarvalって判定程度しか使ったことないけど、 代替はdate_partでこつこつとするしかないのかな?
SELECT * FROM foo WHERE のあとに、 x = 1 と y = 2 の2つを書きたいとしたら、その2つはどうつなげればいいのですか?
>>376 SELECT * FROM foo WHERE x = 1 AND y=2
でいいのか、、、
どうもありがとうございます。(初心者丸出しでスマソ)
何か凄いモンを見た気分。
こっちもナイス.
805 名前:アキ :04/03/01 17:11 ID:XoJMlHgP
mysqlでtimestampから30日経ったものを書き出したいのですが
下記の書き方だと1日以上経ったものは全て出てしまいます。
なにか良い方法はあるでしょうか?
SELECT * FROM table WHERE (TO_DAYS(NOW())-TO_DAYS(timestamp))
よろしくお願いします。
806 名前:NAME IS NULL :04/03/01 18:03 ID:???
SELECT * FROM table WHERE (TO_DAYS(NOW())-TO_DAYS(timestamp)) > 30
807 名前:アキ :04/03/01 18:07 ID:XoJMlHgP
>>806 どうもありがとうございました!できました。
他のスレで答えた知ったかが お礼を言われたので、うれしさのあまり 自慢するスレはここですか(w
妙にひねくれてますね。ID:XoJMlHgPですか > 382
ID:XoJMlHgPは普通に感謝してるのになんで捻くれるんだ?
>>383 も妙に捻くれてる気がする。
お前ら、この俺を差し置いてひねくれ談義をするな 真にひねくれているのはこの俺だ!
じゃあ俺も混ぜろ!
pupupu...
>>383-386 ジエン厨ばかりだな
こんな閑散板・スレで
一気にカキコがあるわけないだろ。
ところで"(フラ"ってのはどういう状況だ?
ジエン厨をからかうと
・すぐに相手を特定したがる
・名前に386=388=390
てな感じでこの中の一部はオレだよという。
必死なのが面白すぎてハライテー
じゃあそろそろ
>>383-385 のお出ましですか?
フラワラフラフラワラ
実は全部自演王国だったりして
お前ら暇でさみしいやつらだな。 煽りはスルーすれよ、釣られるなよ。 釣るのも厨、釣られるのも厨。 あっオレは本当にこいつらじゃないよ 今、昼休みに覗いただけ。あんまり言うと オレもジエンなんて言われそうだな。
いいよ
捻くれてますね
すみません。質問していいでしょうか? 現在int 型のデータがあるのですが int8 に属性変更したいのですがどうすればいいでしょうか? int型に格納されているデータを保持しつつint8型に移行したいのですが・・・
>>400 対象テーブルがtable1とすると、
1.対象テーブル名を変更 table1→table1_old
2.新しいカラム仕様のテーブルを対象テーブル名で作成。
table1を作成 (対象カラムがint8のカラム、残りのカラムはtable1_oldと同じ)
3.insert 対象テーブル名 select * from 名前を変更した元のテーブル
insert table1 select * from table1_old
残ったtable1_oldは好きなようにしてくれ。
int→int8なら問題ないが、
3.で型変換が必要なカラムに関しては
select メンバのにおいて、
型変換の関数で型変換を行う。
もちろん、文字型の場合のレングスを縮める
にはぶった切ることが必要。
これは汎用的な方法。どのDBMSにもいえる。
insert into 〜 だったな
暗号化した文字列をvarcharの項目に挿入しようとすると 「Invalid EUC_JP character sequence found」 という形で怒られてしまいます(DBの文字セットをEUC_JPにしてます)。 この文字列を格納する場合は、char,varchar以外のデータ型でないといけないでしょうか?
>>403 どのように暗号化したんかわからんけど。
バイナリになってんならbytea型にいれれば。
>>404 ありがとうございます。
暗号化と言っても文字単位でビット反転させてるだけの貧弱なものです。
byteaを試してみます。
406 :
NAME IS NULL :04/03/11 18:46 ID:i6CB+NDS
postgres で過去24時間の時間表示って出来ないですか? 例 hoge=> SELECT hoge; fuga --------------------- 2004-03-10 19:00:00 2004-03-10 20:00:00 2004-03-10 21:00:00 2004-03-10 22:00:00 2004-03-10 23:00:00 2004-03-11 00:00:00 2004-03-11 01:00:00 2004-03-11 02:00:00 2004-03-11 03:00:00 2004-03-11 04:00:00 2004-03-11 05:00:00 2004-03-11 06:00:00 2004-03-11 07:00:00 2004-03-11 08:00:00 2004-03-11 09:00:00 2004-03-11 10:00:00 2004-03-11 11:00:00 2004-03-11 12:00:00 2004-03-11 13:00:00 2004-03-11 14:00:00 2004-03-11 15:00:00 2004-03-11 16:00:00 2004-03-11 17:00:00 2004-03-11 18:00:00 (24 row) みたいな感じに表示できるhogeって無いですか??
>> 406 できる。そういう関数を作れば。
>>406 DB板が出来る前だっけか、以前にもあったな。
たしか乱数を必要数欲しいってのが。
409 :
NAME IS NULL :04/03/13 20:53 ID:V9ijufwP
ECPGの質問です。 ProCの代わりの開発環境にと思い、RedHat9にインストールしてみました。 簡単なDBを構築し、ローカルで接続するだけのCプログラムを作成しました。 で、プリコンパイル、コンパイル、リンクが滞りなく終わったので 実行させると、libecpg.so.4にリンクできないというメッセージがでます。 バージョンは7.4.2です。 RedHatのパッケージは使わず、/usr/local/pgsqlにgmakeしています。 tcp/ipごしにもアクセスできるし、インストールに問題はないと思うのですが・・・。
410 :
409 :04/03/13 22:28 ID:???
自己レスです。 共通ライブラリが登録されていなかったのが原因でした。 etc/ld.so.confに/usr/local/pgsql/libを記述して、 sbin/ldconfig -v を打ったら実行したら動くようになりました。 Linuxではこのようにライブラリを登録するのですね。
はじめまして postgresqlのことは、ここに聞けということで 質問いたします。 あるファイル(テキストファイル)を読みこんでDBにデータを登録したいと思います。 つまり、バッチ的な処理なのです。 (インターフェース的にはブラウザでファイルをアップロードさせて処理する) これを、ファイル読み込みからDB登録までストアドで行いたいと 思います。(速度重視の為) で質問ですが、ストアドでそんなことできるのでしょうか? ファイル読み込みとかの処理が。。。 ストアドはpl/pgsqlでできればうれしいのですが。。。 Cでストアドを作成すればいいのでしょうか? 以上、よろしくご教授ください。 バージョン:7.4.1
>>411 plpgsqlから COPY コマンド使えばできるけど。
まあそれならplpgsql使わなくてもいっしょだけどね。
>>412 >
>>411 > plpgsqlから COPY コマンド使えばできるけど。
> まあそれならplpgsql使わなくてもいっしょだけどね。
ありがとうございます。、
なるほど、COPYコマンドですか。。
それってあのpostgresqlのcopyコマンドですよね?
psqlで入ってpsqlのコマンドプロンプトから実行するやつの。
それって、ストアドでも動かせるものなのでしょうか・・・
普通のSQLのselect文みたいに・・・・
あっ!でも、そうか、select文と同じレベルであれば
ストアドにする必要もないのか?!
でも仕様で、1つのCSVファイルの1レコードで複数の
テーブルを更新する必要もあるかもしれないのです。
となると、COPYコマンドではできないということになるのですよね?
質問ばかりですいません。
414 :
NAME IS NULL :04/03/15 00:55 ID:EkYcJnVb
すいません教えてください A B − − 10 2 22 3 11 4 19 1 というテーブルがあった時 AとBを乗算してその結果に対して順位をつけたいとき どうすればいいのでしょうか? つまり A B C − −− 10 2 3(20) 22 3 1(66) 11 4 2(44) 19 1 4(19) という風に順位をつけたいのですが どうすればいいのでしょうか 教えてください
>>414 SELECT a,b,(SELECT COUNT(*) FROM hoge AS foo WHERE foo.a*foo.b >= bar.a*bar.b)AS c FROM hoge AS bar;
頻繁に使用するならSQLよりも、a*bのカラムで並び替えしてSQL文を発行する
プログラム側で番付した方が速いんじゃない?
Cygwin環境が壊れたぁ〜ε=ε=ε=ε=ε=( T)/
正確には、cygwin内、postgresが死んだ、だな 何でpostmaster 起動しなくなったんだろ なぞだ、昨日まで動いてたのに・・・ガ━━Σ(゚Д゚;)━━ン!
すまそん、 date型で、 2000-xx-xx 2001-xx-xx 2002-xx-xx 2003-xx-xx 2004-xx-xx とデータがあるんですが、 たとえば、2003年のデータだけをSELECT文で抽出するには、 どうしたら、良いんですかね?
>>419 WHERE date_part('year',column)='2003'
421 :
NAME IS NULL :04/03/20 20:45 ID:x6JQSuBa
なんて読むの? ぽすたぐれえすきゅーえる。
423 :
NAME IS NULL :04/03/21 10:09 ID:mik+BDX1
Host A(192.168.0.101)にあるPostgreSQL-Aに自作のアプリでinsertしたデータと同じデータを ネットワーク経由でHost B(192.168.0.102)上のPostgreSQL-B にも書き込みたい。 一番いい方法は、アプリ側で、PQconnect(192.168.0.102,"",XX,YY)として、ネットワーク接続するのがいいのでしょうか? (アプリとはC言語で自作したものです)
424 :
NAME IS NULL :04/03/24 12:25 ID:gWYY//Hx
WindowsXPでPostgresを動かそうとして行き詰ってます。。。 cygrunsrv --install postmaster --disp 'Cygwin PostgreSQL' --path \ /usr/local/pgsql/bin/postmaster --args "-D /usr/local/pgsql/data -i" --dep ipc-daemon2 \ --termsig INT --user 'postgres' --shutdown で登録したサービスを開始しようと cygrunsrv -S postmaster とすると cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: そのサービスを開始できませんでした。 というエラーになります。 ユーザ「postgres」で postmaster -D /usr/local/pgsql/data とすると開始され、接続(psqlなど)もできます。 この問題の解決方法をご存知のかたいらっしゃいませんか?
425 :
424 :04/03/24 12:48 ID:???
自己レスです /var/log/postmaster.logを削除したら開始できました 1週間以上はまってしまった。。。 失礼しました
426 :
NAME IS NULL :04/03/24 13:44 ID:Sjs49UlX
PGCluster使っている人っている?使ってみたらスピードが5分の1くらいなった。
427 :
NAME IS NULL :04/03/30 12:33 ID:sc8OhhFH
PostgresSQLでDBサーバー構築を考えているんですが、バージョンの選択で 悩んでいます。7.3系と7.4系のどちらのほうが安定してつかえるでしょうか。 また、JDBCで接続した場合、どちらも日本語に関しては問題なく使えるでしょうか?
Cygwin+PostgreSQLを試そうとしている初心者です。 Windows2000でcygwin最新をインストールして、↓ Package Version cygipc 2.03-2 cygwin 1.5.9-1 ipc-daemon2をバックグラウンドで走らせ、ipcsを実行すると 以下のようになるのですが、これってうまくいってませんよね? $ ipcs ---------- Shared Memory Segments -------- shmid key bytes nattch status ---------- Semaphore Arrays -------- semid nsems key ---------- Message Queues -------- msqid used-bytes messages どうすればうまく共有メモリの設定?ができるのでしょうか?
429 :
NAME IS NULL :04/04/01 20:48 ID:rsKETXs8
初心者です。 Tableを作成してユニーク番号を付けようと思っているのですが、 SequenceとSerialの違いはなんでつか?
>>429 sequenceは自動連番生成器という感じかな。
create sequence 文で定義する。
serial(型)はsequenceをデフォルト値とする型なんで、
create table 文でカラムにserial型をしているすると、
sequenceを作って、それをデフォルトとして定義してくれる。
431 :
NAME IS NULL :04/04/02 09:06 ID:njItBrYz
>>430 説明ありがとうございます。
じゃあcreate sequence 文で定義しても、データ型をserialにしないと
連番を生成することはないんですかね?
>>431 ちったマニュアル嫁よ。
create sequence seq;
と定義した場合。
select nextcval('seq');
で連番は取れる。
typoしてた。 × select nextcval('seq'); ○ select nextval('seq');
434 :
NAME IS NULL :04/04/02 11:17 ID:soHeYQpF
トランザクション中はテーブル全体にロックがかかるんですか?
なんでFirebirdスレでも同じ事聞いてるの?
$ cat file.sql createdb t3 $ sh file.sql したところ、file.sql の改行コードが CRLF だったため、 $ psql -l List of databases Name | Owner | Encoding -----------+-------+---------- t1 | user | EUC_JP t2 | user | EUC_JP | user | EUC_JP template0 | master | EUC_JP template1 | master | EUC_JP (5 rows) となってしまいました。 この t3 を dropdb するにはどうしたらいいでしょうか?
>>437 別ポート、別データディレクトリでinitdbして
pg_dump -C t1 | psql -d template1 -p 新ポート
pg_dump -C t2 | psql -d template1 -p 新ポート
で別に作ってから、データディレクトリ変更が簡単でいいのでは
一瞬でも止められないなら無理だが
439 :
437 :04/04/08 13:12 ID:???
>>438 アイディアありがとうございます。ちょっと怖いですね…。
440 :
438 :04/04/08 14:56 ID:???
推奨されるかわからんが、漏れはこうやって消したことはある &psql tempate1 template1=# update pg_database set datname = 't2' where datname='t3'; template1=# \q &dropdb t2 具体的に書いてみたが、要はpg_databaseのDB名を変更して、dropdbするだけ 今もサービスで問題なく動いてるぞ(まぁ自己責任で
441 :
437 :04/04/08 15:37 ID:???
>>440 コマンドラインから cretedb t3 としたら
$ psql -l
List of databases
Name | Owner | Encoding
-----------+-------+----------
t1 | user | EUC_JP
t2 | user | EUC_JP
t3 | user | EUC_JP
| user | EUC_JP
template0 | master | EUC_JP
template1 | master | EUC_JP
(6 rows)
となりました…。
template1=# select datname pg_database order by datname;
t1
t2
t3
t3
しかし、
template1=# select datname pg_database where datname = 't3';
datname
---------
t3
(1 row)
むむむ…。
それは同じように改行コードがCRLFの dropdb t3 というファイルを作って $ sh file.sql するだけの話なんじゃないか、、、?
443 :
438 :04/04/08 15:42 ID:???
select datname pg_database where datname like '%t3%' だとどんな結果が返ってくる?
444 :
438 :04/04/08 15:57 ID:???
すまん。。難しく考えすぎてた
>>442 の方法でやるのが一番だ(一応責任感じてテストしてみたが、問題なし)
445 :
437 :04/04/08 16:44 ID:???
>>442 おー、その通りでした。
ちゃんと消すことができました。ありがとうございました。
>>438 いろいろとお付き合いいただきありがとうございました。
# ちなみに 443 は 2 件返ってきました。
逆もまた真なり、でしたね。
446 :
NAME IS NULL :04/04/10 02:55 ID:6SXrOSQg
ラージオブジェクトって複数作れないですか? テーブルのように
447 :
NAME IS NULL :04/04/10 07:39 ID:EVOnXvq0
昨日、秋葉原のトライタワーで 怒首領蜂大往生の19.8億が達成されました
448 :
NAME IS NULL :04/04/27 13:34 ID:uNy9hB+w
PHP+PostgreSQLでシステム構築を行っています。 ブラウザ(PHP)から、処理が非常に重いSELECT文を実行したあと、 処理時間に待ちきれずユーザが停止ボタンを押したとします。 そうすると、PostgreSQLのプロセスが終わらず30分くらい残ってしまいます。 SELECT文のタイムアウト時間を指定することってできますか?
450 :
NAME IS NULL :04/04/27 14:59 ID:uNy9hB+w
>>448 恐れ入りますがやりかたを教えていただけますでしょうか?
やはりpostgresql.confで設定するのでしょうか?
451 :
450 :04/04/27 15:00 ID:???
statement_timeout かな。SQLでも設定できるよ。
453 :
448 :04/04/27 17:35 ID:???
>>452 ありがとうございます。
でもstatement_timeout はバージョン7.3からの対応みたいです。
使用バージョンは7.2.3なのです。。。
SQLでの設定の仕方というのも教えていただけますか?
>>453 いや、postgresql.confを弄るんじゃなくてSQLでstatement_timeoutを設定できるよってことだ。
455 :
Cygwin :04/04/27 20:43 ID:fES63bVJ
今度、とある自治体に導入するWebアプリを開発しています。 そろそろ納期であせっています。 OSは、Windows Server 2003 Apache+PHP PostgreSQLをCygwinで動かします。 同時アクセスは、80クライアントくらいを想定しています。 PostgreSQLをCygwinで動かすのは、本も出ているくらいなので、 結構実績があるとは思うのですが、それをWindows Server 2003 で動かすのは、ちょっと不安です。 Windows Server 2003 というのは、先方様の要望なので、 守らないといけません。 経験のある方は、アドバイスいただけるとありがたいです。
人柱だな。
間違いない。
調べもせずに導入するなんてアフォだな。
459 :
NAME IS NULL :04/04/27 23:29 ID:GmnkUrwA
Webで拾ったServletで作られたWebアプリを展開しようと 思い、同梱のshを実行したらエラーが出ました。 直前に、 pg_ctl -m i stop で停止して、 pg_ctl start で起動させました。 やりなおす前は何もエラーなく実行できたshなんですが、 何か変わってしまったのでしょうか??ポート5432が開いてない ってエラーっぽいのですが、pg_ctlで起動させたのに 違うポートで起動しているのでしょうか。。。。(?) psql: could not connect to server: Connection refused Is the server running on host localhost and accepting TCP/IP connections on port 5432? psの実行結果です。 $ ps -ax | grep postgres 11086 std S 0:00.00 postgres: stats buffer process 11088 std S 0:00.00 postgres: stats collector process 11471 std R+ 0:00.00 grep postgres よろしくお願いします
461 :
460 :04/04/30 01:28 ID:???
自己解決しました。 data/postgresql.conf の中のtcpip_socketのコメントアウトを 外し、trueにしたらいけました ありがとうございました>漏れ
462 :
NAME IS NULL :04/04/30 02:48 ID:iNONXmpV
DELETE、又は UPDATE した時、 削除、又は更新された古いレコードを表示させるには、 どうすれば良いですか?
初心者にいい本ってどんなのがありますか?
その前にselectしとく
465 :
462 :04/04/30 11:27 ID:iNONXmpV
>>462 >>464 言葉足らずでした。
誤って DELETE してしまった時、
ファイルに残っているデータを表示させたいのです。
466 :
NAME IS NULL :04/04/30 11:42 ID:+krH8wxm
cygwinの話だけど、 導入時、initdb実行すると cygcygipc-2.dllがないといわれるんだけど。。。 そんなファイルない罠。 cygipcもpostgreSQLにも入ってない。。
>>465 ロールバックしろ馬鹿
ていうかファイルって何だ。
468 :
462 :04/04/30 12:23 ID:iNONXmpV
>>462 ,
>>464 ,
>>465 ,
>>467 何度もすみません、(釣られてますか?
誤って DELETE してしまった後に、
$PGDATA/base 内のファイルを解析して、
削除済みのデータを表示する様なプログラムは、
どこかに無いものでしょうか?
という感じです。
だから、誤って DELETE したら rollback しろ。
470 :
462 :04/04/30 12:58 ID:iNONXmpV
PITRが実装されたら復旧させることは(簡単に)可能になるのかな。
>>470 > DELETE の後に、COMMIT されています。
ここに問題があるので、ぐだぐだ言うな。
>>470 確かにVACUUMがまだなら戻せそうな気がするねぇ。
やり方は知りません。ごめんなさい。
今日の昼食はから揚げ定食でした。
474 :
NAME IS NULL :04/04/30 19:27 ID:uFFxOZ+Z
PostgreSQLとMySQLは共存出来ますか?
475 :
463 :04/04/30 20:15 ID:???
WebサーバとかPHPを使いつつ学んでいくつもりですが、 どの本がお勧めですか?立ち読みしたけど、どれもいまいちだったので。。
>475 本が無ければ身につかないくらいなら、最初からやめとけ 色んなWebサイトで初心者向けの内容も見つかるし 最初は今ある環境で試行錯誤して、少し分かってきて 本格的に何かやってみようと思ったときに、必要な本を買えばいい
477 :
NAME IS NULL :04/04/30 21:04 ID:kwdBew79
PostgreSQLの7.4.1を使ってるんですケド、 DBのバックアップでシステムカタログとか テーブルのOID(-o を付ける)とかも含めて バックアップする利点みたいなのってあるん でしょうか? あと、ラージオブジェクトとか使ってるんです けど、pg_restoreで -dを指定しないと上手く リストアしてくれないのってナンデDETH?
ご教授願います。
現在、サーブレットを開発しているのですが、時々
DB接続時に,connectでエラーが発生します。(JDBCのエラーです)
内容的には、
javax.servlet.ServletException: Something unusual has occured to cause the
driver to fail. Please report this exception: Exception: java.lang.IllegalArgumentException
Stack Trace:
java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:218)
at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:575)
at java.lang.StringCoding$CharsetSD.decode(StringCoding.java:186)
at java.lang.StringCoding.decode(StringCoding.java:224)
at java.lang.StringCoding.decode(StringCoding.java:230)
at java.lang.String.(String.java:371)
at org.postgresql.jdbc1.AbstractJdbc1Connection.openConnection(AbstractJdbc1Connection.java:226)
at org.postgresql.Driver.connect(Driver.java:122)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
:::::::::::::::::::::(以下省略)::::::::::::::::::::::
のような感じです。
しかし、毎回起こるのではなく、時々起こるので原因の切り分けができてません。
ちなみに同様のことが以下にも出ています。
ttp://www.jajakarta.org/kvasir/bbs/technical/494?msg=2#msg1757 なにか情報お持ちの方いらっしゃいませんでしょうか?
以上、よろしくお願いします。
<環境>
Postgresql:V7.4.2
JAVA:1.4.2_04
>>477 意味ワカラン。
-oするメリットはあんたの設計したDBがOIDに依存するかによる。
pg_restoreに-dが必要なのはアタリマエ。
482 :
NAME IS NULL :04/05/02 21:45 ID:3RQME9l/
>> 481
pg_restoreに-d使わないとダメなのはナゼ?
別に当たり前だとは思わないが。
http://www.postgresql.jp/document/pg732doc/reference/app-pgrestore.html 引用:
pg_restore の操作には 2 つのモードがあります。
データベース名が指定された場合は、そのアーカイブは直接指定したデータベースにリストアされます。
さもなくば、データベースを再構築するために必要となる SQL コマンドを内容とするスクリプトが作成され
(ファイルもしくは標準出力に書き出され) ます。
この内容は、pg_dump のプレインテキスト形式の出力に似ています。
従ってこのスクリプトの出力を制御するオプションのいくつかは pg_dump のオプションに類似しています。
>>482 ラージオブジェクトはバイナリデータをそのままそのまま入れるからだろ。
484 :
481 :04/05/03 10:45 ID:???
・-d付ける = リストアされる
・-d付けない = SQLをファイルか標準出力に出力(リストアはされない)
・477曰 「けど、pg_restoreで -dを指定しないと上手く
リストアしてくれないのってナンデDETH?」
>>482 何が疑問?
timestamp 型って 2004-05-05 10:10:00.000000 みたいに 秒以下まで入るんだけど これが入らない型ってある? データベースから取り出して使うときにうざいんです。こんな細かい精度は必要ないんで。
そんなもんフォーマット次第でどうにでもなるだろうがこの無能 お前は一生text型だけ使ってろ
>>486 あるかないか聞いてみただけなのにそんなムキになるなよ
490 :
NAME IS NULL :04/05/04 11:44 ID:jR8ayW8M
CygwinにPostgreSQLをインストールして「initdb」コマンドを打ったところ 以下のエラーがでました。対処法が全然わかりません。。 Administrator@windows2000 ~ $ initdb -E EUC_JP The files belonging to this database system will be owned by user "Administrator ". This user must also own the server process. The database cluster will be initialized with locale C. initdb: The directory /usr/local/pgsql/data exists but is not empty. If you want to create a new database system, either remove or empty the directory /usr/local/pgsql/data or run initdb with an argument other than /usr/local/pgsql/data. [1]+ Done ipc-daemon どうすればいいんですかね。。誰か分かる人は教えてください
491 :
490 :04/05/04 12:04 ID:jR8ayW8M
ちなみに「pg_ctl start」コマンドを打つと以下のようになります。 Administrator@windows2000 ~ $ pg_ctl start pg_ctl: Another postmaster may be running. Trying to start postmaster anyway. FATAL: File /usr/local/pgsql/data/PG_VERSION is missing. This is not a valid da ta directory. pg_ctl: cannot start postmaster Examine the log output.
492 :
490 :04/05/04 12:09 ID:jR8ayW8M
だれか、教えて♥
493 :
490 :04/05/04 12:17 ID:jR8ayW8M
なかなか、回答が返ってきそうもないので、他サイトにも聞いてしまいました。 マルチポストですが、ゆるしてくだしゃい。 両方とも随時覗いていますので、分かる人は返事書いてください。よろしくお願いします。
あーっとここで板住人全員が
>>490 をスルー!!!
r'::::::::i
トーf/__
/ イ| 、ヽ
//_〉 l_l i_ノ、
\\ (_ニノ 〉____〉〉 〉
/ } / ,_-‐、
/\/,ー 'ヾ i"_Y 〈i
〈 < / ゝ^-'"
\i"ヽ、 \\ //
├ i\i カ ,、
495 :
NAME IS NULL :04/05/04 12:33 ID:RkWi75TY
496 :
490 :04/05/04 12:41 ID:jR8ayW8M
そんなこといわず教えてくださいよ〜。今から、本屋言ってしらべてきます。
497 :
NAME IS NULL :04/05/04 17:32 ID:RkWi75TY
498 :
490 :04/05/04 18:10 ID:9HDvEtuY
>>497 どうもありがとうございます。
ipc-daemonとかPostgreSQLとかCygwinは、書籍のCD−ROMのものを
そのまま使ったので、大丈夫だと思います。ちなみに、OSのバージョンも
書籍のとまったく同じでした(Windows2000SP3)
もう一度、Cygwinを最初から入れなおしてそれでもだめだったら、参考サイト
のをやってみたいと思います。
それで、完全にできるとおもいます。
大変感謝しています。pukiwikiなんていうサイト全然知りませんでした。
こんなにいいサイトがあるんですね。
本当に感謝しています。どうもありがとうございました。
499 :
490 :04/05/04 23:55 ID:a+AlgonX
一度Cygwinを全部uninstallして、フォルダも全部消去して、書籍の通りやりなおしたら、できました。 再起動をなんども繰り返しながら、丁寧に1つずつ作業をこなしたら、問題なく動作するようになりました。 なにが、悪いのかは分かりませんが。。 本当にどうもありがとうございました。色々な本やサイトを見て勉強になりました。
500 :
NAME IS NULL :04/05/06 20:59 ID:Zxg8RjCW
Solaris9 + Posgre 7.4.2でtestというEUC_JPのDBを作りました。 そのあとhogeというテーブルをつくり、insert文を入力すると、 test # insert into hoge values('APPLE','りんご'); では正常にinsertされるが、 test # insert into hoge values('ORANGE','みかん'); とすると、次のプロンプトが test'# となってしまう(SQLがまだ途中だというプロンプト)。 どうやら、文字の最後が'ん'だうまくエンコードされていない みたいなんだけど同じような経験をして解決した人っています? (あとposge 7.4でも同じ現象です)
501 :
500 :04/05/07 19:38 ID:HqD8igVp
事故レスです。 .inputrcというファイルをつくり 以下の3行を記述をすれば直りました。 set convert-meta off set meta-flag on set output-meta on しかし、人すくね。
502 :
NAME IS NULL :04/05/08 00:28 ID:RCkpyBUa
PostgreSQLを使っているサーバの管理を任されたのですが、プロセスを見るといきなり暴走してますた。 hoge$ ps -ax | grep postgres ~ 88743 ?? R 8131:51.08 postmaster: postgres hoge [local] VACUUM (postgres) ~ たぶんDBが壊れてるのだとは思いますが、こいつを何とかしないと処理が重くて耐えられません。 VACUUMしてるときって殺してもいいんでしょうか? #DB鯖は初めてなもんでアホみたいな質問だとは思いますがよろしくお願いします。
503 :
NAME IS NULL :04/05/08 03:53 ID:TPloDnuD
PostgreSQL(に限らないのですが)、3次元配列をDBに入れたいです。 どういうテーブル構造にすればいいでしょうか。 具体的には、int hoge[1024][1024][1024]; くらいの配列です。
>>503 どのように利用(抽出/検索)するかによる。
505 :
503 :04/05/08 08:00 ID:???
>>504 単純に、hoge[1][2][3]がさす内容を得たいのです。
色々考えたのですが、1024*1024*1024 の一次元のレコードを
つくらなきゃいかんのでしょうか。
三次元だったらこれでいいだろ、ふつう。 create table hoge ( x int, y int, z int, val int, primary key(x,y,z) );
507 :
503 :04/05/08 08:27 ID:???
>>506 それだと1点しか保持できないのですが。。
509 :
503 :04/05/08 08:39 ID:???
>>508 あ!目から鱗がこぼれました。
ありがとうございました。
pg_ctl -m f stop で強制終了しようと思ったが、 エラーが出たので、 /usr/local/pgsql/data/postmaster.pid を削除し、 pg_ctl -w start したらエラーが出る。 StreamServerPort: bind() failed: Address already in use Is another postmaster already running on port 5432? If not, wait a few seconds and retry. /usr/local/bin/postmaster: cannot create INET stream port ............................................................failed psコマンドで調べるとまだプロセスが生きている(??) killコマンドを使っても消す事ができない。。。。 5432のデフォルトポートで起動させたいのですが、 どうしたらよいでしょうか? postgres% ps -ax | grep postmaster 13747 p1- S 0:03.71 /usr/local/bin/postmaster 1742 std R+ 0:00.00 grep postmaster postgres% ps -ax | grep postgres 8343 ?? S 0:00.01 postgres: postgres xxxxx 127.0.0.1 idle 20066 ?? S 0:00.15 postgres: postgres yyyyy 127.0.0.1 idle 20067 ?? S 0:00.55 postgres: postgres zzzzz 127.0.0.1 idle 13748 p1- S 0:00.04 postgres: stats buffer process 13750 p1- S 0:00.68 postgres: stats collector process どれもkillで殺せない。。。。rootになっても
>>510 kill -9 プロセス番号
で、やってみれ。
>>511 できました ありがとうございました。
pg_ctl -w start でpostgreSQLの起動もできました。
513 :
NAME IS NULL :04/05/09 17:04 ID:jvcKDhUN
select時に N件目以降って指定できますか? 例えば 商品番号の昇順の51番目以降を取得とか
514 :
NAME IS NULL :04/05/09 17:24 ID:nHdD8ST+
OFFSET
515 :
NAME IS NULL :04/05/09 17:38 ID:xsuEz4KC
このスレ読んで
>>291 現在DBに接続中のセッションを調べ、
特定のセッションを強制切断させる方法を
ご教授下さい。
T-SQL(MSSQL Sybase)だと
sp_whoで調べて kill セッション#
Oracleだと
SELECT SID, SERIAL#,
STATUS, USERNAME, SCHEMANAME, OSUSER,
TERMINAL, MACHINE, PROGRAM, A.NAME
FROM V$SESSION S, AUDIT_ACTIONS A
WHERE S.COMMAND = A.ACTION;
で調べて
ALTER SYSTEM KILL SESSION 'sid,serial#';
です。
の方法が私も知りたいです。
ご存じの方ご教示ください。
なにをどう調べるのかよくわかんないけど、 ps awx | grep postgres して kill か、 select * from pg_stat_activity して kill かどっちかじゃない?
517 :
NAME IS NULL :04/05/10 08:12 ID:6QlAp3nc
>>516 >なにをどう調べるのかよくわかんないけど、
postgresに接続中のセッションIDを表示させ、
そのセッションに対するログインユーザ名とホスト名
を特定させたいです。
518 :
NAME IS NULL :04/05/10 08:56 ID:h5OTSXD4
>>516 pg_stat_activityで調べることができました
pg_stat_***で
システム情報をしらべることができるのですね。
ありがとうございました。
初歩的な質問だけど、 フィールドでvarcahr(10)に定義すると 2バイト文字は5文字?10文字? 1バイト文字なら10文字まで入るのはわかるんでつが^^; さらにサイズを指定するのがメンドイので、 文字列が入る部分はすべてtextにしようと思うのですが パフォーマンスに影響はあるのかなぁ・・・
>>519 10文字。
substrとか文字列を弄る関数も全てマルチバイト文字でも1文字は1文字。
あと、varcharの実装はtextに文字数制限を付けているだけと聞いたことがあるので、
text型にしたらパフォーマンスが落ちることはないと思うのだが。
>>520 ありがと^^;
ということはtext型が一番楽ということでつね。。
523 :
520 :04/05/11 17:08 ID:???
>>522 えー、違ってましたか?
確かに、text型がvarcharに比べてパフォーマンスが落ちるかどうか検証してないんだけど。
あと、text型が一番楽とは言っていない。
525 :
520 :04/05/11 17:36 ID:???
>>524 いや、マルチバイト文字でも10文字入る。
ひょっとして、オプションによって挙動が違うのか?
く、腐ったエンコーディング?
ウンコーディング(うんこのようなエンコーディング)
まあバジョーソ書いてないから仕方ないな。
531 :
NAME IS NULL :04/05/13 12:16 ID:UXUbe/SN
オレも他のDBMS(OracleやSQLServer)
から最近postgresを使用することになって
いじくりまわしている最中だけど、
>>515-516 つーことは、ユーザの接続はスレッドではなく
プロセスで生成されるのか...
>>526 バージョンは7.23でつ。。
ということは10文字入りまつね^^;
>>531 そう。今開発中のWin32版もプロセス。
PowerGres on Windowsはスレッド使ってるらしいけど。
534 :
NAME IS NULL :04/05/13 22:22 ID:Y6NPbISv
やったことないけど、 普通にlibpq++かlibpqxxか使えばいいんじゃない?
phpPgAdminを入れて、ログインしたら、以下のメッセージがでてしまったのですが、 解決法はないでしょうか? Warning: main(./classes/database/Connection.php): failed to open stream: No such file or directory in /usr/local/apache/htdocs/phpPgAdmin/libraries/lib.inc.php on line 151 Warning: main(): Failed opening './classes/database/Connection.php' for inclusion (include_path='.:/php/includes:/usr/local/lib/php/Smarty') in /usr/local/apache/htdocs/phpPgAdmin/libraries/lib.inc.php on line 151 Fatal error: Cannot instantiate non-existent class: connection in /usr/local/apache/htdocs/phpPgAdmin/libraries/lib.inc.php on line 152
537 :
NAME IS NULL :04/05/15 00:01 ID:B63BO6N2
psql -l ではデータベースを指定しませんが、これを実行した時に 実際に接続されるデータベースはtemplate1であってますか? それともpsq -lの場合はは何か特別な事をしているのですか?
解決策ないでしょうか? あるいは、ウェブインターフェースでアクセスできる管理ツールってないでしょうか?
540 :
NAME IS NULL :04/05/15 02:31 ID:Lqh5Fsrq
CygwinにPostgreSQL 7.4.1をインストールしました。 initdb --no-locale --encoding=unicode で初期化しています。 timestamp型のフィールドに now() をインサートすると、 9時間前の日時が入ってしまいます。これは何故でしょうか? --no-localeがいけないのでしょうか?
541 :
もっきん200 :04/05/15 07:28 ID:JX8A6yQk
システムカタログの内容を一般ユーザーで見せるために、 viewを使用してそのviewのアクセス権限を変えればいいんすかねぇ〜?
542 :
NAME IS NULL :04/05/15 09:40 ID:fblKz0vv
すみません。 PostgreSQLをWindowsで動かすには、 必ずCygwinを入れて、 その上で動作させる必要があるんでしょうか?
>>542 Windows版PostgreSQLも出てる。
544 :
NAME IS NULL :04/05/15 17:16 ID:ySbJ5v5+
PostgreSQL 7.3.xxを使っているのですが、 配列型の列を参照するときにどれか、 WHERE句でその配列型のフィールドにあると言う条件を マニュアルを見ながら書いたのですが、わかりません。 教えていただけないでしょうか? WHERE AAA = ANY(HOGE);
545 :
NAME IS NULL :04/05/15 22:35 ID:B63BO6N2
>>542 じゃありませんが
cygwin使わずに起動しようとした場合
pg_ctlはシェルなのでpostmasterを直接起動するしかないんですか?
powergrestなら大丈夫なのかなー
ipc-daemon(C:\cygwin\bin\cygrunsrv.exe) 後 C:\cygwin\bin\cygrunsrv.exe
ああ、うちの環境そのままコピっちゃったけど まあ、そんな感じ
548 :
NAME IS NULL :04/05/15 23:17 ID:gzzd/Q6R
>>540 cygwinの環境でのdateコマンドは
日本時間になってる?
549 :
540 :04/05/16 01:00 ID:???
>>548 今確認してみましたが、dateコマンドでは日本時間が表示されました。
550 :
NAME IS NULL :04/05/16 02:13 ID:064W36JR
>>540 SET TIME ZONE 'JST';
か
起動時に設定したかったら
postgresql.confで
timezone=JST
か
PGTZ環境変数にJST
をセットしてみる。
テーブル内に関数の格納ってできるものでしょうか? 例えば、 syori1(input text) return integer as '(略) と、 syori2(input text) return integer as '(略) 等の関数があるとして syori_functionsテーブル id | function ------------------- 1| syori1(input) 2| syori2(input) 3| syori1(input) 、、、、、、等といったように関数をしまっておき select function('さいたま') where id=1; 等指定してやって望む関数が使われるように格納してみたいのですが、 そんなのできるでしょうか? とりあえず、テーブル内に関数をしまっておいて、 それを呼び出す方法があればそれほど手段は問いません。
ただ、この「どの関数を使うか」と言うのは入れ替わる可能性が高いので、 できれば、関数内で分岐してごりごり、、、と言うのではなく、 sqlで必要な所だけ変えれるのがいいのですが、、、、。
一部訂正 syori1(input text) return integer as '(略) と、 syori2(input text) return integer as '(略) ↓ CREATE FUNCTION syori1(input) return integer as '(略) と、 CREATE FUNCTION syori2(input) return integer as '(略) select function('さいたま') where id=1; ↓ SELECT function('さいたま') from syori_function where id=1;
連投すみません。 関数本体でなくても、先のテーブルに CREATE FUNCTION syori1(input text) return integer as '(略) と、 CREATE FUNCTION syori2(input text) return integer as '(略) 等の関数があるとして そのoidがそれぞれ10000,10001だとします。 でsyori_functionsテーブルに、 id | function ------------------- 1| 10001 2| 10000 3| 10001 といったようにoidを格納して、 SELECT function('さいたま') from syori_function where id=1; とやった時に、そのoidを見て関数を呼び出す関数をつくると言う事でもいいかも知れません。 ただ、関数のoidから関数を呼び出す方法って誰か知らないでしょうか_
>>554 いったい幾つ位の関数を使う予定なんだろうか?
CASEで関数を切り替える方法はどうよ。
556 :
NAME IS NULL :04/05/16 13:13 ID:0id9T6PE
本は何が良いですか?
>>556 何がしたいかによるんじゃない?
とりあえず俺は
「PostgreSQL 全機能 リファレンス」
>>556 Google Hack。Google を使いましょう。
>>555 最低でも数十個単位でありますが、見当が付きません。
と言うより、まだ設計も殆どできてないので何ともいえないのです。
ただ一ついえるのは半年から一年に一度ぐらい処理の方法が代わるのです。
しかもそれは事前に内容は予測できません。
ですので、できるだけ見通しをよくするために、
関数もテーブルに格納しておきたいのですし、
変更の無い部分に間違って影響がでないように一つの関数にまとめるのは避けたいのです。
関数名だけをテーブルにいれておいて、plpgsqlで、
文字列繋いでSQL文にしてやるという手も思い付いたのですが、
できれば、もっとスマートな方法がいいんです、、、、。
>>556 本ってのは相性があるから、他人に教えられた本がいいとは限らない。
俺のやりかたとして。
とりあえず、検索だけで何とか数日頑張ってみる。
で、つまずいて、解決法を模索してみる。
あるいは、そうやっていろいろ探す中でできるかどうか微妙だが、
じぶんがやりたい奴のキーワードを覚えておく。
(ODBCとかreplecationとかplpgsqlとか)
何日か頑張ったあと大きめの本屋にいって、索引なんかでそのつまずいたのや、やりたい事がすぱっと見つかった本を買っている。
>>559 そのplpgsqlで動的sqlでいいんじゃないかな。
どうしてもoidでやりたけりゃ、そのoidでpg_procを
検索してやればできるけど、それもあんまスマートじゃないよね。
563 :
NAME IS NULL :04/05/17 21:31 ID:LAIVjm5a
----+----+---- row1 |row2 |row3 ----+----+---- a |d |a b |d |e c |f |d ----+----+---- ↑の様な表の row1〜3の列の値一覧を重複しないように取り出すには どういうSQLを書けばいいでしょうか?
>>563 質問の意図を取り違えているかも知れんがこういうことか?
SELECT row1 FROM table UNION SELECT row2 FROM table UNION SELECT row3 FROM table;
row1
------
a
c
d
e
f
565 :
563 :04/05/17 23:02 ID:LAIVjm5a
SELECT * FROM foo WHERE attr LIKE 'BB%'; とかのクエリーにINDEX張るにはどうしたらいいんだろ。 関数インデックスじゃないしなぁ。 CREATE INDEX ON foo(attr);として作ったINDEXは使われるのかしら EXPLAN ANALYZE してみると、 Index Scan using foo_pkey on foo ... Index Cond: ((foo >= 'BB'::bpchar) AND (foo < 'BC'::bpchar)) Filter: (foo 〜〜 'BB%'::text) ってなる。ということは使われているのかなぁ。 最後のFilterの意味がわからん。。どなたか教えてもらえると助かりまふ。
567 :
NAME IS NULL :04/05/19 19:22 ID:k1Y8rwe3
初心者なんですが、nullで作成してあるフィールドを not null に変更するには、どうしたらいいんでしょうか?
>>567 ALTER TABLE table_name ALTER column_name SET NOT NULL
569 :
NAME IS NULL :04/05/19 22:12 ID:CIiGscPP
PostgreSQLの文字コードをSJISで使う方法を教えてください。 Redhat9+PostgreSQL7.4.1です。 $configure --enable-multibyte=EUC_JP ・・・ $initdb $postmaster -S -i $createdb -E EUC-JP TEST で createdb: SJIS cannot be used as a database encoding といわれてしまいます。
570 :
569 :04/05/19 22:13 ID:CIiGscPP
570 は $createdb -E SJIS TEST の間違いです。EUC-JPなら大丈夫なんですけど・・・
571 :
569 :04/05/19 22:15 ID:???
また間違えてた・・・
>>569 でした。
慌てすぎですね・・・
データベース本体はSJISに対応してないよ。 そして、client_encodingでググれ。
573 :
569 :04/05/19 22:30 ID:???
>>572 早速有難うございます。
サーバサイドはSJIS対応してなかったんですね・・・
client_encodingで、さっそく調べてみます
彷徨ったあげく分からず。。。初歩的な質問なのかもしれませんが、 timestamp型のフィールドはNULLに出来ないんでしょうか?
576 :
574 :04/05/20 09:13 ID:???
がふっ。普通に出来た。 アポなこと聞いてごめんなさい。
577 :
NAME IS NULL :04/05/20 14:33 ID:OG7wfj+B
質問です。1テーブルあたり数百〜数千MBある主キー付きテーブルを数百持ったDBがあります。これに VACUUM ALL をかけるときにかかる時間の試算は、概算として、いくつかのテーブルを個別 VACUUM したときの平均から求められますか?
578 :
NAME IS NULL :04/05/20 16:06 ID:6/MxRmhX
WindowsXP Pro Cygwin 1.5.9-1 PostgreSQL 7.4.1-3 cygipc 2.03-2 createdb DB名 psql -e DB名 < File_name >& log.log で、リストアしました。 以下のコマンドを実行すると、 DB名=# select * FROM table1; ERROR: relation "table1" does not exist テーブル名を”(ダブルクオテーション)で囲っても 同じエラーです。 \dや\dtを打っても「No relations found.」と出ます。 ためしにダンプを出すと、0バイトのファイルが作成されるかと 思ったら同じくらいのダンプファイルが作成されたんです。 なんでテーブルが見えないのでしょうか。 教えてください。
579 :
NAME IS NULL :04/05/20 17:04 ID:6/MxRmhX
がふっ。ユーザを変えてログインしたら出来た。 アポなこと聞いてごめんなさい。
580 :
NAME IS NULL :04/05/21 23:51 ID:1uYvLAry
libpqの関数について質問があります 以下のようなコードを書いた時@、Aの位置でres1,res2の持つ内容が PQexecで返された時のものと同じ内容である事は保証されているのでしょうか? PGresult* res1; PGresult* res2; res1 = PQexec(.....................); res2 = PQexec(.....................); //@ここでres1の内容は保証されるのか? PQclear(res1); //Aここでres2の内容は保証されるのか? PQclear(res2);
されてます。 PQexec()からPQclear()までの間は。
582 :
NAME IS NULL :04/05/22 00:14 ID:F5J7Wnb1
>>581 ありがとうございます
この手の情報ってやっぱりソース読むしかないんでしょうか?
マニュアルとかに書いてないか? 漏れは(別件で)ソース読んでたが。
レコード数の最大数を設定したいのですが そのようなことはできますでしょうか? 例えば10万件のデータを保存するとして 10万を超えたら古い順から削除のような ことは設定とかでできるのでしょうか? それともデータを追加するときにチェックして 自分で削除みたいなことをしなくてはいけないのでしょうか?
常にやる必要があるならトリガ、 まとめて処理でいいなら(夜間)バッチ。
586 :
584 :04/05/22 17:28 ID:???
トリガでやってみます。 ありがとうございます。
587 :
NAME IS NULL :04/05/30 16:45 ID:MnPA5apT
insertとすると常に最後に行を追加するのですが、 この行の並びを入れ替えることはできますか? 例えば、3個目に追加した行を2行目(上に)移動させることはできますか? またそのような関数は何ですか?
>>587 無い。つーか、ORDER BY句をつけないがきり、
データの並びに期待するな。
>>587 順序を表すコラム(例えばcol_orderとか)を作ってそのコラムで
order byして取ってくる。insertするときは当然insertされる行以降の
col_orderの値をずらさないといけない。
トランザクションをきっちりしないとめちゃくちゃになる。
この方式だとデータが増えたときにinsertがめちゃくちゃに重くなるが・・・
あ、当然insertするまえに、col_orderの値を決めないといけないな。 もちろん同一トランザクションで。
load avarage が高いので ps すると CPU 時間が長かったりメモリを大量に使っている postgres が見つかりました。 それらがどんな SQL を実行しているかリアルタイムに見る方法はないでしょうか?
592 :
paooon :04/06/02 12:05 ID:LURKwlpN
pgadmin3をDebian woodyにapt-getでインストールしたんですけど 起動しようとするとエラーが出るんですぅ↓ postgres@debian:~$ pgadmin3 (pgadmin3:906): Gtk-WARNING **: cannot open display: コレってGTKの問題ですかねぇ? 起動方法とかって間違ってますかねぇ。。。 スレ違ってないよな。。。
質問です。 PQexec()で,返ってこない現象がでて困ってます。 いったん現象が出始めると,PCをリブートしないと直りません。 でも,でないときは全く再現できないので原因がわかりません。 straceで追っかけてみると,クエリ送信 -> 結果取得中にselectで止まってるようです。 クエリ送信 (たしか,send) select recv select recv old_mmap select <--- ここで固まる 原因として,どんなことが考えられるでしょうか? ちなみに,その状態で固まってしまったときに,psql で同じクエリを実行してみたら ちゃんと結果が表示されました。
594 :
NAME IS NULL :04/06/04 09:47 ID:2WedxY3i
>>540 ではないんですが、同じような状態になっていて困ってます。
環境はWinXP+Cygwin+Postgre7.4.1(Cygwinでインストールできるやつ)です。
私の環境では、−18時間されてしまうんです。こんな感じ。
test1=# show time zone;
TimeZone
-----------
-09:00:00
(1 row)
test1=# select current_timestamp;
timestamptz
-------------------------------
2004-06-03 15:41:27.678302-09
(1 row)
ただ、AT TIME ZONEで'JST'を指定すれ正常な時間が表示されるんですが、
毎回これをつけなきゃいけないのですかね?
test1=# select current_timestamp at time zone 'JST';
timezone
----------------------------
2004-06-04 09:41:44.989302
(1 row)
ちなみに、Cygwin上のdateコマンドでは、正確な時間が表示されます。
教えてくださいまし。。。
質問です。 データベース単位で容量制限をかける場合はどうしたらいいのでしょうか? たとえばtestdbは50M、test2dbは100Mみたいな感じで。
596 :
NAME IS NULL :04/06/06 02:48 ID:U9FYxmUR
CREATE FUNCTION trig_income() RETURNS trigger AS ' DECLARE inDate text; BEGIN IF NEW.in_id = 1 THEN -- in_idが1のときにだけ処理を行う inDate := substring(now() from ''^(.*) .*$''); PERFORM fncInsMoney(incDate); END IF; RETURN NEW; END; ' LANGUAGE plpgsql; CREATE FUNCTION fncInsMoney(text) RETURNS bigint AS ' DECLARE aDate ALIAS FOR $1; GETS record; inmoney bigint; BEGIN --aDateが範囲内に収まるレコードのdate_id-1のdate_idと一致するレコードを取得する select into GETS s_date, e_date from mymonth where date_id = (select date_id - 1 from mymonth where s_date <= aDate and aDate <= e_date); IF GETS.s_date IS NULL OR GETS.e_date IS NULL THEN --何もしない ELSE --金額の取得 inmoney = fncGetMoney(GETS.s_date, GETS.e_date); --取得した金額をincomeテーブルにInsertする insert income values(...省略...); END IF; RETURN inmoney; END; ' LANGUAGE plpgsql; create trigger mytrigger_income1 before insert on income for each row execute procedure trig_income(); 上記のようなトリガを定義し、Insert文でin_idに1を指定したSQL文を実行しようとしたところ、 ERROR: function with OID 394755 does not exist CONTEXT: PL/pgSQL function "trig_income" line 7 at perform とエラーメッセージが発生し、トリガ関数が実行されません。原因はいったいどういったところなのでしょうか? 使用バージョンはpostgresql7.4.1です。
>>592 pgsqljpとクロスポストでつか?
逝けやゴルァ
598 :
NAME IS NULL :04/06/07 10:36 ID:lVMs3A8R
>>596 直感だが、create or replace function で、
trig_income()を作りなおしてみるといいカモ。
>>599 その直感を信じて作り直したところ、動きました。
ありがとうございました。
>>599 エスパー キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
インデックスを張るのに最大文字数とかあるんでしょうか? 数値型なら問題はないんだろうけど、文字列型に張る場合に 最大数が知りたいでつ。。
604 :
NAME IS NULL :04/06/17 12:05 ID:SS9v0W+w
はいいいい〜〜〜
606 :
NAME IS NULL :04/06/21 19:46 ID:2P0Dv5+S
サブクエリ使ったときってindexは使われないもの? Explainで見てみたら、カッコ内のところでしか 使われていなかったんですけど。 Ver7.4.2です
608 :
606 :04/06/21 20:54 ID:2P0Dv5+S
create index idx_hoge_1 on hoge(abc,def,ghi); create index idx_geho_1 on hoge(code); SELECT programtitle from hoge where abc = (select abc from geho where code = 'aaa') and def < 'NOW' and 'NOW' < ghi; というSQLを出すとgehoはインデックスが使われるんですけど hogeでは使われません。 hogeの方は、abc.deef,ghiを個別にインデックスを貼っても 使われませんですた。 hogeの方でもindexを使われるようにするにはどういうふうに indexを定義すればいいでしょうか?
>>608 不等号だと範囲が広すぎてプランナがインデックスを
使わない方が高速だと判断していそうだ。
そのSQL文だけを見ると、複合インデックスはやめてabcだけに
した方がいいような気がする。
abcだけでインデックスが使われるようなテーブル内容であればの話だが。
610 :
606 :04/06/21 21:23 ID:2P0Dv5+S
>>609 プランナに無理矢理インデックスを使わせるには
どうしたらいいでしょうか?
>>610 ちっとは調べれ。
SET enable_seqscan TO off;
612 :
606 :04/06/21 23:01 ID:???
>>612 あのな、感謝をきちんとした言葉にするということは重要なことだぞ。
おやおや・・・
あれまあ・・・
やれやれ・・・
ぷにぷに・・・
グッチョングッチョン・・・
メメタァ
ノックしてもしもぉ〜〜〜し
あのな、笑いをきちんとした言葉にするということは重要なことだぞ。
PHPでautoCommitのステータスを知る方法ってありますか
おやおや・・・
あれまあ・・・
やれやれ・・・
ぷにぷに・・・
グッチョングッチョン・・・
メメタァ #「メメタァ」ってなに?
ノックしてもしもぉお〜〜〜し
>>632 ジョジョの奇妙な冒険に出て来るセリフです。
635 :
NAME IS NULL :04/06/26 19:52 ID:bhIUwpJe
>594 postgresql.conf の設定で、timezoneの設定を以下のようにしてください timezone='+09' #っていうか俺自身も同じ問題ではまった。。。
636 :
632 :04/06/27 01:34 ID:???
,:::-、 __ ,,r::::::::::::〈:::::::::) ィ::::::ヽ 〃::::::::::::;r‐''´:::::::::::::::::::::ヽ::ノ ,'::;'::::::::::::::/:::::::::::::::::::::::::::::::::::: l::::::::::::::::::l::::::::::●::::::::::::::●:::::ji |::::::::::::::::::、::::::::::::::( _●_)::::::,j:l クマー! }::::::::::::::::::::ゝ、::::::::::|∪|_ノ::;! . {::::::::::::::::::::::::::::`='=::ヽノ:::::/ ';::::::::::::ト、::::::::::::::i^i::::::::::::/ `ー--' ヽ:::::::::::l l;;;;::::ノ 【ラッキーレス】 このレスを見た人はコピペでもいいので 10分以内に3つのスレへ貼り付けてください。 そうすれば14日後好きな人から告白されるわ宝くじは当たるわ 出世しまくるわ体の悪い所全部治るわでえらい事です
コピペでもいいって、自分で書く気はしないわな。
639 :
NAME IS NULL :04/06/28 05:43 ID:q9OXeYQn
pg_dumpし忘れてしまったままOSインスコし直してしまった. $PGDATAのデータだけ残ってる場合にrestoreする方法はない? システムカタログぐねぐねいじってみたけどよくわからんです. 助けてくだせぇ.
640 :
NAME IS NULL :04/06/28 16:09 ID:FLWas67k
並べ替えで、最初に更新日を見てNULLだったら登録日を見て並び替える。 と言う動作をさせたいのですが、いい方法はありますか? ちなみに、 >ORDER BY CASE WHEN 更新日 IS NULL THEN 登録日 ELSE 更新日 END DESC; としてみると、 >ERROR: Attribute テーブル名.更新日 must be GROUPed or used in an aggregate function と言うエラーになってしまいました・・・。
>>640 select の1つ目にそのcaseを書いて
order by 1
642 :
NAME IS NULL :04/06/28 22:23 ID:1sNTjZlb
>>639 そのインスコ前のpostgresqlと同じバージョンをどこかに入れて、
そこから再度pg_dumpしかないんじゃないかな。
PGCluster等を使わずに入力されたクエリを別のデータベースサーバに転送することってできますか?
>>644 pgpoolやUsogresもダメなんか?
646 :
NAME IS NULL :04/06/29 11:05 ID:X0VOT0n9
>641 エラーが出ていたのは、SELECT句で"count(*)"していたからで、 "SELECT *"にしたらorder by句でもうまくいきました。 でも、そういう方法でもできるんですね。とても勉強になりました。 ありがとうございました。
647 :
639 :04/06/30 02:18 ID:x8M/YemP
>642 ども. それでもだめなんすね. psql dbnameすると not found(再現環境ないのでいい加減ですごめんなさい)で, pg_dump dbnameでは中身からっぽになってしまい. createdb dbname すると dbname already exists(同じく) になっちまいます.それでシステムカタログいじるのを思いついたんですが, やり方がイマイチわからない.こまった.
>>647 $ psql -l
したらDBって見えるのかな。
$ pg_dumpall > out.txt
とかならdbnameには依存しないで吐けると思うんだけど
649 :
NAME IS NULL :04/06/30 21:14 ID:dnZfdgTD
libpqってどのpostgreSQLのバージョンからバージョン3になったの?
650 :
637 :04/07/01 09:45 ID:vWEclAqN
だめでした。 pg_dumpallのソースに pg_databaseをSQLで参照している部分がありました。
>>647 > psql dbnameすると
> not found(再現環境ないのでいい加減ですごめんなさい)で,
> pg_dump dbnameでは中身からっぽになってしまい.
> createdb dbname
そこで createdb dbname するんじゃなくて、
データベースが無い状態(initdb直後の状態)で、
psql -f out.txt template1
するんじゃなかったか
653 :
NAME IS NULL :04/07/02 14:33 ID:EHkcqqEx
市町村合併により住所の変更を行おうとしました。 例として横浜市が海港市になったとします。 で下記の命令を発行しました。 => update tbl_inf set home_adrs = translate (home_adrs,'横浜市','海港市'); 「横浜市」→「海港市」はこれでできました。 しかしついでに「横浜市横田区」→「海港市横田区」と なってほしいのが「海港市海田区」になってしまいました。 どうも1文字ずつ検索でかけて1文字ずつ置換しているようです。 これを「横浜市」→「海港市」だけ置換できるようには、 どのような構文を書いたらいいのでしょうか? 基本中の基本だと思いますがさくっと教えて頂けますたらありがたいです。
>>653 UPDATE tbl_inf SET home_adrs = '海港市'||ltrim(home_adrs,'横浜市') WHERE home_adrs ~ '^横浜市';
DBにパスワードを書ける方法がうまくいきません。 具体的には、perlスクリプトからuse Pgでconnectする際、 ユーザ名とパスワードで認証をかけたいのですが、 createdb -W で指定したパスワードがどうしてもきかない ようです。 認証をかけるところが間違っているのではないかと思って いるのですが、どうしてもやり方がわかりません。 ご教授いただけますと幸いです。
656 :
NAME IS NULL :04/07/03 02:14 ID:y02b0D0u
658 :
639 :04/07/04 02:01 ID:NtUGNbZs
>>652 詳しく教えて下せぇ
out.txtってどんなんですか?
抽出に意外と時間がかかってしまって悩んでいます。 以下のSQLで7・8秒程度かかってしまいます。 念のため vacuum しましたが、状況はかわりません。 なにか無駄があるのでしょうか? USER_MSTのレコード数は6000で、NAME_MSTは3です。 SELECT NAME FROM NAME_MST WHERE MAXUSER > (SELECT count(*) FROM USER_MST WHERE USER_MST.NAME=NAME_MST.NAME);
>>659 VACUUM FULLでも改善しないのかな?
SQL的には、
SELECT name FROM user_mst GROUP BY name HAVING count(*) < ( SELECT maxuser FROM name_mst WHERE name_mst.name=user_mst.name);
の方が速いかも。自信はないし、サブクエリが常に1つの行を返す条件付だ。テーブルの定義がワカラン。
>>659 インラインビューの方がジョイン対象の
レコードが少なくて済み、速いかな。
SELECT A.NAME FROM
NAME_MST AS A ,
(
SELECT NAME,count(*) AS U_COUNT
FROM USER_MST GROUP BY NAME
) AS B
WHERE
A.NAME = B.NAME AND
A.MAXUSER > B.U_COUNT
662 :
659 :04/07/07 11:14 ID:???
>>660-661 みごと改善されました。どちらも3秒弱で抽出できます。
たいへんたすかりました。ありがとうございました。
663 :
NAME IS NULL :04/07/07 17:09 ID:WP3siauK
RHL9.0+PostgreSQL7.4.2-1+pgpool-2.0.2 pgpool.conf で replication_mode = 1 に設定すると、 接続できない・・・orz pg_hba.conf local all postgres password pgpoolのポート:5433 PostgreSQLのポート:5432 # psql -p 5433 testdb psql: server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. pgpoolのエラーログ kind does not match between backends master(82) secondary(69) 誰か同じ現象が起きてる人いない?
664 :
NAME IS NULL :04/07/07 17:12 ID:WP3siauK
おとなしくDBMirrorを使っておくかな・・・ トリガ系は管理がめんどいからなぁ・・・
665 :
663 :04/07/07 17:37 ID:WP3siauK
local all postgres trust ならうまくいくんだorz パスワード使えないじゃないかヽ(`Д´)ノ
pgpoolネタはmlに投げたほうが良くない?
667 :
NAME IS NULL :04/07/07 18:00 ID:WP3siauK
668 :
NAME IS NULL :04/07/07 21:25 ID:y9tU68vn
like検索で前に%がつくとindexが使われないみたいですけど、 使いたい場合みなさんどうやって高速化してますか?
'abcdef' 'bcdef' 'cdef' 'def' 'ef' 'f' select * from hoge where data like 'ef%';
670 :
668 :04/07/08 09:54 ID:nHaZz6cj
>>669 どういう意味でしょうか?
レベル低くてすいません
671 :
668 :04/07/08 10:28 ID:???
>>669 一文字(or単語)区切りでワードを登録して関連づけるってことでしょうか?
>>671 669じゃないけど、まぁ、そうゆうこと。
BBSログのような文書だと、案山子や茶筌をつかって、単語単位で、
型番とかコードのようなものだと、
>>669 のようにする。
673 :
668 :04/07/08 12:14 ID:???
env LANG=ja_JP.eucJP hogedb | postgres | EUC_JP pg_dump -U hoge -F c -f hogedb.cur psql 7.3.6 から env LANG=ja_JP.eucJP keibagp | postgres | EUC_JP pg_restore -U hoge -d hogedb -F c hogedb.cur psql 7.4.3 にデータをコピーしたいのですが pg_restore: ERROR: invalid byte sequence for encoding "EUC_JP": 0x834b CONTEXT: COPY user_data, line 1, column handle: "KC[" pg_restore: [archiver (db)] error returned by PQendcopy というエラーになります
で pg_dump -U hoge -F p -f hogedb.txt でバックアップ psql -U hoge -d hogedb -f hogedb.txt リストアしました すると invalid byte sequence for encoding "EUC_JP" というエラーが出ました。 なのでhogedb.txtを弄って set client_concoding to 'sjis'; を追加してリストアしたら成功しました。 どうしてこのような文字コードエラーになるのでしょうか? Tera Term 受信 送信 EUC EUC サクっとバックアップリストアできる方法をおしえてくだち〜
677 :
名無しさん@そうだ選挙に行こう :04/07/11 18:48 ID:BXoaYVgY
>>675-676 initdb --encoding=EUC_JP --no-locale
で初期化してなかったとか?
678 :
NAME IS NULL :04/07/11 22:18 ID:bElgLVyw
like をした場合、'hoge%'のような前方一致ならindexが使われると 思うのですが、explainでみると使われてないようです。 Seq Scan はfalseにしてるので使われない理由がわかりません。 考えられる理由はなんでしょうか? 環境は redhat9 Ver 7.4.2 です
>>677 /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
マニュアルからコピペのまんま実行してました。
rm -fr /usr/local/pgsql/
deluser -r postgres
...
/usr/local/pgsql/bin/initdb --encoding=EUC_JP --no-locale -D /usr/local/pgsql/data
pg_dump -U hoge -F p -f hogedb.txt
psql -U hoge -d hogedb -f hogedb.txt
でやってみましたがまたエラーになりました。
psql:hogedb2004-07-10.txt:989: ERROR: invalid byte sequence for encoding "EUC_JP": 0x834b
CONTEXT: COPY user_data, line 1, column handle: "KC["
psql:hogedb2004-07-10.txt:1440: ERROR: invalid byte sequence for encoding "EUC_JP": 0x906d
CONTEXT: COPY user_info, line 1, column mei: "m"
バックアップ元で違うデータベースにリストアするのは成功するのですがコピー先のマシンで
やるとエラーになります。
カラムに日本語がないところは大丈夫なんですが
マニュアル22.3. リリース間の移行
のようにバックアップ、リストアしてるのに・・・。
次は逆にバックアップとコピー先を逆にしてためしてみるとします。
680 :
NAME IS NULL :04/07/11 23:44 ID:BXoaYVgY
>>679 使ってるディストリは何?
それと、PostgreSQLはソースからインスコ?それともrpm?
681 :
NAME IS NULL :04/07/11 23:52 ID:BXoaYVgY
>>679 んで、 select * from pg_database;した時のencodingって何になってる?
Linux version 2.4.7-10 (
[email protected] ) (gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98)) #1 Thu Sep 6 17:27:27 EDT 2001
両方ともソースからインスコです.
datname | datdba | encoding | datistemplate | datallowconn | datlastsysoid | datvacuumxid | datfrozenxid |
keibagp | 1 | 1 | f | t | 17140 | 464 | 464
datname | datdba | encoding | datistemplate | datallowconn | datlastsysoid | datvacuumxid | datfrozenxid |
keibagp | 1 | 1 | f | t | 16974 | 16472838 | 3237698311 |
pg_dumpの出力ファイルのエンコーディングですが
コピー元:SHIFT-JIS
コピー先:euc-jisx0213
となっています。
pg_dumpの出力ファイルですでにエンコーディングがおかしい。
コピー元は以下で確認
iconv -f SHIFT-JIS -t EUC-JP hogedb.txt
コピー先のはvimで確認
set fileencoding?
コピー元が
/usr/local/pgsql/bin/initdb --encoding=EUC_JP --no-locale -D /usr/local/pgsql/data
で初期化されているのかはわかりませんが
コピー元とコピー先を逆にしてためしたら期待どおりの結果になりました。
コピー元のは初インスコマシンだったので設定がまちがってたのかもしれません。
680-681どもでした。
>>674 正しいのかどうかわからんが、うちではこんな感じで取れてます
$conn = Pg::connectdb($dsn);
$result = $conn->exec($sql_str);
if ($result->resultStatus ne PGRES_COMMAND_OK) {
print $conn->errorMessage;
exit;
}
($dummy, $cnt_tmp) = split / /, $result->cmdStatus;# UPDATEしたレコード数
postgresql7.4.3を入れていろいろやってるんですが、 上にもあったように、EUC-JP関連で文字化けします。 これって、initdb時とcreatedb時に両方ともエンコード 指定しないと文字化けしてしまうものですか? それとも、createdb時に-E EUC-JPすれば文字化け しないものですか?
685 :
ポスグレ@だ〜ぅいん :04/07/13 23:35 ID:RLObMCML
OSXでPosgreSQLとアパチ&PHPで遊んでるのは漏れぐらいか? けっこう使えるのだが。 関係ない話題でスマソ。
>>685 それ聞いて、漏れも少しマクーが欲しくなったよ
PHPでプログラムを組んでいます。 SET TRANSACTION; UPDATE文; if(UPDATE文がエラーの時){ ROLLBACK; } else{ COMMIT; } のようにしてある条件の時、ROLLBACKを実行したいのですが、 PostgreSQLだとAUTOCOMMITで自動的にCOMMITされちゃいますよね? AUTOCOMMITのオプションをオフにすればいいと思うのですが、 それだと全部の文に「SET TRANSACTION〜COMMIT;」を 付けなくちゃいけないのでめんどくさいです・・・ なので、ある特定の文だけROLLBACKができるように することは可能でしょうか?
689 :
NAME IS NULL :04/07/14 15:00 ID:Z0bKDIh8
ビューとルールについて質問です。 まず次のようなテーブルを作ります。 create table tbl1( id int, a int, b int ); create table tbl2( id int, c int, d int ); で、この 2つのテーブルを id で繋いだビューを作ります。 create view testview as select tbl1.id,a,b,c,d from tbl1,tbl2 where tbl1.id=tbl2.id; このビューは、カラム id、a、b、c、d が見えます。 tbl1 と tbl2 に以下のようにデータを準備しておきます。 insert into tbl1 values(10,1,2); insert into tbl2 values(10,3,4); これで testview を select すると、id=10、a=1、b=2、c=3、d=4 のレコードが見えます。 ここでビューに更新時のルールを追加します。 create rule testrule as on update to testview do instead ( update tbl1 set a=new.a,b=new.b where id=old.id; update tbl2 set c=new.c,d=new.d where id=old.id ); これで、ビュー testview に update をかけると、tbl1、tbl2 が更新されるようになったと思います。 つづく
690 :
689 :04/07/14 15:06 ID:Z0bKDIh8
>>689 の状態で、ビューに対して次のように update してみます。
update testview set a=10,b=20,c=30,d=40 where id=10 and (a<>10 or b<>20);
これは、id=10 のレコードの a、b、c、d を更新するのですが、a および b に値の更新が無い場合にはなにもしない、
という条件です。
今回は更新前の値が a=1、b=2 になってるので、id=10 のレコードは更新対象です。
で、実際に実行すると、
UPDATE 0
と返ってきます。
testview を select すると
id | a | b | c | d
----+----+----+---+---
10 | 10 | 20 | 3 | 4
となっていて、tbl1 部分の update だけ完了しているようです。
期待している結果は
id | a | b | c | d
----+----+----+---+---
10 | 10 | 20 | 30 | 40
なのですが・・・
つづく
691 :
689 :04/07/14 15:17 ID:Z0bKDIh8
>>690 の update では、
>>689 で設定したルールの前半部分、tbl1 に対する update しか処理されません。
>>690 の update文を
update testview set a=10,b=20,c=30,d=40 where id=10;
のように置き換えると、ルールに従って tbl1、tbl2 の update がされます。
いろいろ条件を探っていくと、この理由は次のようなものっぽいのです。
1)
>>689 の update文に合致するレコードにルールが適用されて、まずtbl1 の update がされる
2) tbl1 を update してしまうと、その時点で a=10、b=20 になってしまい、元のupdate文にあった
(a<>10 or b<>20) の条件を満たす行が無くなってしまう
3) ゆえに、ルールで設定した 2個目のSQL、 tbl2 に対する update を実行しようとしたときには
対象行がないため、その update は実行されない
のような感じらしいです。
これってこういうものなのでしょうか?
また、
>>690 の update文で tbl1、tbl2 ともに期待通りに更新されるようにするには、どういうルールを
定義したらいいのでしょうか。
むかしむかし、ブラウザの1画面(横1024ピクセル)が 全部、SQLでうまるぐらいのSQL文書いたことがあったなあ。 inner joinしまくりの、groupbyしまくり。 あれでSQLに関しては鍛えられたようなもんだ。 ああなつかしや。
693 :
689 :04/07/14 15:21 ID:???
あ、PostgreSQL のバージョンは 7.3 です。 すみませんが、ハマっててかなり苦戦してます。 アドバイスよろしくおねがいします。
>>693 長いよー
3行くらいにまとめてくれたら読むけど
>>694 早い話が、2つのテーブル(tbl1、tbl2)を繋いだビュー(testview)を作って、
testview への update を tbl1 と tbl2 の update に置き換えるルールを作ったら
その 2つに置き換えられ両方実行されるべき update が、片方しか実行されないケースがあるらしい
って話なんです・・・
696 :
NAME IS NULL :04/07/14 17:41 ID:VCb6KB+k
postgres7.3を使用予定ですが、REINDEXの使用方法を教えてください。 REINDEX対象のテーブル名をpg_stat_user_tablesより 取得しながら、REINDEXを全テーブルに順番にかけるシェルを作ろうと思っています。 その際、pgbashを使用し、cronで自動実行を予定しています。 もしソースコードがわかれば教えて下さい。 またみなさんはどんな方法で、行っていますか?
for vv in `psql -A -t -d test -c "select 'reindex table ' || relname from pg_stat_user_tables"` do psql -d test -c $vv done
698 :
NAME IS NULL :04/07/14 23:25 ID:myF1sKbE
postgresのDB運用時のチューニング&監視について教えて下さい。 常時、又は随時、運用で必要なチューニング&監視事項はどんな事があるのでしょうか? またその為には、どのようにすればよいか、教えてください
699 :
外から見たら :04/07/15 00:35 ID:5RtJ4z45
ちょいみんなにしつもーん。 世の中のグローバルな流れとして、主流はやっぱり3層モデルだと思うんです。 Oracle、Websphere、apacheみたいな。 でもPostgreSQLとかの利用形態をMLや出回っている書籍とかで見る限り、 PostgreSQL+apache(+PHPなりのCGI)みないな風潮が強いように 見受けられるんですが、現実はどうなんですかね? SRAの石井さんとかPHPのコアメンバとかだけが言っている(書いている) だけなんでしょうか?
>>698 最低でもvacuumはcronでやるようにしておく。
チューニングは技術評論社の
「レベルアップ! PostgreSQL必須テクニックス」
(ソフトウェアデザインと同じサイズのムック?)
を買って読んでみたらいいと思う。
>>699 現実ってどういう意味?
実際に多く使われているシステム構成?
アプリケーションサーバを使ってシステムを作るのはあるけど、
オープンソースで軽いシステムを作るという場合はTomcatよりも
phpでというのは多いんじゃないかな?
単にそれだけじゃないかと思うけど?
701 :
698の件 :04/07/15 05:21 ID:6Q+6a9EK
質問の書き方が浅くてすいませんでした。 postgresの運用監視で、よく本に出てますが、 行単位のアクセス情報、I/O回数情報、キャッシュヒット率などありますが、 どのようなタイミングで取得していますか? また、取得するのは、コマンドを投げて確認するか スクリプトなど作成してファイルに保存などして監視してるのでしょうか? 教えて下さい。
702 :
NAME IS NULL :04/07/15 12:56 ID:wW3qQGNK
PostgreSQLで「テーブル親」「テーブル子」「テーブル孫」があり、 データは親>子>孫という関係を持っている状態で class OYA, class KO, class MAGO,の3つのクラスのオブジェクト配列で 管理したいと思ってるのですが、どのようなSQLを打って初期化させた方が 良いのでしょうか。 データの操作は「OYA->KO[x]->MAGO[y].data」のように扱いたいと思ってます。 今自分がやってる方法は、各階層ごとに初期化で一つ一つSQL打ってるので 凄く時間がかかるヘタレな状態になってます○| ̄|_
外部キーでcascadeにして、親のテーブルtruncateじゃだめなのか? ってか、言ってる事がよくわからん。スマソ
>>703 レスありがとうです。・゚・(ノ□`)・゚・。
書いてる途中で自分でも言ってる意味がよく分からない文章になってしまいました。
class OYA{
KO[]; //子のオブジェクト配列
function Init( oya_code )
{
[親データ(oya_codeのレコード)の子の数を求めるSQLを打つ]
while( 子の数だけ )
{
this->KO[i]->Init(ko_code);
}
}
}
class KO{
MAGO[]; //孫のオブジェクト配列
function Init( ko_code )
{
[子データ(ko_codeのレコード)の孫の数を求めるSQLを打つ]
while( 孫の数だけ )
{
this->MAGO[i]->Init(mago_code);
}
}
}
class MAGO{
data;
function Init( mago_code )
{
[孫データを取得するSQLを打つ]
this->data = 孫データ;
}
}
という感じになってます>現状
これだと親*子*孫の数だけSQLを打つのでめちゃ遅くなってるので
なんとかしたいなぁと思っております。
705 :
NAME IS NULL :04/07/15 16:11 ID:MTwUZrV7
こんにちは。libpqを使ってアプリケーションを作ってるのですが insert文をPQexecで実行すると、PQcmdTuplesで帰ってくる結果が どうやら空文字列になってしまいます。 select文では行列ちゃんとゲットできるのですがinsertだとうまくいきません。 同じSQL文をpsqlから実行するとOKなのでSQLの文法エラーではないと思うのですが・・・ 理由に心当たりある方おられたらご助言ください。
>>704 スマン、ご飯食ってた
親、子、孫のどのinitが呼ばれても、結局孫のデータが取りたいなら
親、子、孫(これは現状でおkか)それぞれで、孫データを取りに行けばいいんでないの?
--親で実行する
select
m.*
from
ko k ,
mago m
where
k.oya_code = m.oya_code and
k.ko_code = m.ko_code and
k.oya_code = 'hoge'
;
--子で実行する
select
m.*
from
mago m
where
m.oya_code = 'hoge' and
m.ko_coee = 'hoge_ko'
;
なんか意味取り違えてそうだなぁ、漏れ・・・
707 :
703 :04/07/15 16:33 ID:???
やっぱ勘違いしてた。 それぞれのレベルで、自分の直下のデータを配列で持ちつつ、その下のレベルのやつにも同じ事をさせたいんだな
>>706 なるほどっ!ありがとうございました。
それでイケましたm(_ _)m
709 :
699 :04/07/16 01:17 ID:???
>>700 現実ってのはそんな意味で言いました。
自分、あまりオープンソースとかには今まで関わりがなかったもので、
漠に思った疑問です。PHPとかの世界も当然詳しくないんですが、
開発者数で言ったらスキルのムラはあるにしろ、絶対数では
Javaとかの方が多いのは事実だと思っています。それでも
その「軽いシステム」作るって言っても選択肢としてまずあがるのは
PHPなんですかね?って疑問。Javaだってオープンソース色が強いわけで。
700さんみたいな意見自体は良く聞きますが、証拠があると納得なんです。
integer 型を 計算時にbigint 型として計算する方法はありますか? テーブルのデータ型はinteger なのですが 計算時に桁あふれしてしまいます。 そこで、プログラミング言語にあるようなキャストして計算する方法が知りたいのです。
>709 JavaとPHPの案件の総額の比較なんて出せっこないから、 結局は自分の周辺でしか語れないのは誰しも同じ。 コンサル系ならある程度の数字を持ってるかもしれないけど、 現場の人間は「自分を中心とする環境」の話しかできないと思う。 世の中の大規模案件の主流がJavaであることは事実だと思う。 ただ、PHPも小規模からスケールアップしてきてるのは間違いないと思われ。
>>709 別に小規模な案件でもJavaってのはありでしょう。
PHP使いはPHPでやり、
Ruby使いはRubyでやる。
Perl房はPerlでやる。
マイクロソフト信者はASPでやる。
あとそれ以外にもパイソンだとか、じぇいぱいそんだとか、まあいろいろありますね。
それだけの話の気がします。
javaだなんだと開発環境にこだわって価格面と釣り合わないからクライアントに 泣いてもらうってのだけはやめとけ
715 :
ポスグレ@だ〜ぅいん :04/07/16 14:02 ID:DefsBpJs
>>712 禿同 >>713 禿同 結局は蔵が求めてる物を迅速かつ的確に提供するのがプロ の仕事で、何を使うかは、人それぞれでよいのではないか? まぁ、鰯さばくのに出刃包丁使うやつもいないだろうし。
シーケンスかserialか、ユニークな連番を作成するときは どちらを使用していますか?
serial お手軽。
>>710 cast(データ as bigint)
でデータをbigint型と評価して計算してくれた。
マニュアル見て解決しますた。
Fedorecore1にpostgreインストールしようとしてるんですけどmakeができません。 もうrpmでインストールしてしまおうと思うんですが、ver7のrpmって存在しますか? googleで調べてもver.6のものしかでてこないんで・・・ 申し訳ないですが教えてください。
ftp.postgresql.org:/pub/binary/v7.4.3/fedora/fedora-core-1/
721 :
719 :04/07/16 23:39 ID:???
>>720 ありがとうございます。
おかげでインストールすることができました。
722 :
素人 :04/07/17 09:26 ID:8aEaGB1c
こんにちは。 libpqのPQexecでSQL文を実行したらステータスはPGRES_COMMAND_OK だったのに結果がデータベースに反映されてません。 ちなみにINSERT文だったんですけどこんなことってあるんでしょうか・・・
commitしる!
>>722 postgresql.confを書き換えてSQLログを出力するようにして確認してごらん
LAPP環境で、PHPアプリからのデータが、 Postgresの制約に引っかかったとき、 アプリ側(PHP)でどういう制約に引っかかったか、 コードのようなものを取得する事は出来ないでしょうか? アプリ側で事前に値のチェックすればよいのですが、 ユニーク制約とかのチェックが大変で、アプリとDB両方でチェックしたいんです。
726 :
NAME IS NULL :04/07/17 21:12 ID:R3KgZhhD
ホントに基本的なことで申し訳ない。 データベース内にどういうテーブルがあるか表示させて調べるコマンドって何だっけ? データベース一覧を表示させる『psql -l』みたいなやつ。 データベース内になんて名前のテーブルがあったか見たいんだけど、ど忘れした。
727 :
726 :04/07/17 21:36 ID:R3KgZhhD
自己解決しました。 \dね
\zとかも
729 :
素人 :04/07/18 12:27 ID:MAW15t4Y
>>723 コミットしてます・・・
>>724 postgreSQL.confの設定について詳しくわかるサイトか書籍がありましたら
教えてください・・・
ログチェックしたことないんで・・
レコードの存在するテーブルに後からインデックス付けることできますか? 7.3.4なんですけど・・
ディスクスペースのグラフをとってるんですけど、 どんどん容量が増えて止まらない勢いなんですが、 これって vacuum full してないからなんでしょうか? データ量自体はたいしてかわってないのですが、頻繁にUpdateをしています。 vacuum はしてみたのですが、vacuum full は時間がかかりロックもされる そうなのでやったほうがいいのかどうか悩んでいます・・
>>733 VACUUM FULLに何日もかかるわけじゃないから、
ひまな時間にやってみれば?
735 :
NAME IS NULL :04/07/18 20:25 ID:YyHd/YHX
PHPのから、各オブジェクトのコメントを取りたいと思い、 調べたところ Postgres側の関数に obj_description(OID)というものを見つけました。 テーブルおよびビューについては、システム表であるpg_class を参照すればOIDを取れるのですが、ファンクションについては わかりません・・・。 ファンクションの、OIDを得る方法ないでしょうか・・・
>>733 頻繁にUPDATEしてるなら、VACUUM FULLしたほうが良いよ。
頻繁にVACUUMかければVACUUM FULL必要ないような事書かれてるけど、
UPDATEの頻度によっては絶大な効果(ディスクスペースの節約)を発揮するよ。
当然検索もかなり早くなるし。
どのぐらいデータがあるかわからないけど、
300万件ぐらいのレコードがあるテーブルが2、3個あっても、20分ぐらいで終わる。
しばらくやってないなら、1時間ぐらい掛かるかもしれないけど。
マシンのスペックに大きく左右されると思うけど、機会があるならぜひやってください。
便乗だけど、vacuum full だけでなく、 たまに vacuum full analyze した方がいい?
>>737 vacuum full analyze = vacuum full + analyze table
なんで、
analyze tableは別のタイミングでやってもいいんじゃない。
もちろん、いっしょにやっても文句はないけど。
vacuum full する前に vacuum をしておくと vacuum full が早く終わったりするんでしょうか?
>>739 かわらない。
つうか、vacuum + vacuum full にかかる時間の合計は
vacuum fullの時間とおなじはず。
よってコマンド2つ入力するぶん、分けたほうが時間かかるかも。
vacuum のよい勉強になった。ありがとうございました。
GROUP BY 句で指定したカラムにインデックスがあれば 使われるのでしょうか?
>>730 俺もそれ持ってる。実用性の面ではシーラカンス本を超えてると思う。
是非シリーズ化して新しいバージョンに対応していってもらいたい。
>>733 >>データ量自体はたいしてかわってないのですが、頻繁にUpdateをしています。
>>vacuum はしてみたのですが、vacuum full は時間がかかりロックもされる
>>そうなのでやったほうがいいのかどうか悩んでいます・・
定期的にvacuumしておけば、頻繁にUPDATEしてもディスクスペースは(そんなに)増えないはずだが。
定期的にvacuumやってる?
vacuumはテーブルロックしないから、それこそ頻繁にvacuumしたほうがよい。特にUPDATE主体なら。
何故ならvacuumで、FSMにふるいUPDATE前のデータ領域を記録して再利用に備えるから。
vacuumしてFSMに無駄領域を記録すれば新しくUPDATEしたデータはFSMに記録された既にmallocされた領域に新たに書き込むだけで、ディスクスペースは増えないはずなんだが。
文字列の場合、 ・char ・varchar ・text の違いがわかりません(><) 誰か教えてください。特に、charとtextの違い。 やっぱり、textの方がメモリを食うんですか?
text は効率がよいとシーラカンス本に書いてあったような。 だけど varchar/char と比べてどう効率がよいか分からない。自分も知りたい。
750 :
NAME IS NULL :04/07/21 10:02 ID:6c6QWKcM
つみきさんのCSEを使ってるのですが -- hogehoge のコメント行でエラーになってしまいます CSE使ってる方、 スクリプトを一括で実行する場合など コメント行はどうされてますか?
751 :
素人729 :04/07/21 10:08 ID:qnT+1deo
やっとログ出せたんですけど・・・意味不明です・・・ なんでだろう・・・
752 :
NAME IS NULL :04/07/21 10:13 ID:Kk9QeGX1
like検索するとindexが使われないようなんですが 使われるようにする方法ってないでしょうか? like 'hoge' like '%hoge' like 'hoge%' like '%hoge%' いずれのパターンでも使われません・・・ 前方一致ならいけるような書き方がされていたんですが・・・。 PostgreSQL7.4.3です
754 :
752 :04/07/21 10:52 ID:Kk9QeGX1
>>753 データ件数は3万件ぐらいで
Seq Scan をfalseにしてます
>752 データの傾向がわからんので何ともいえんのだが、それ以前に initdb するとき、当然 --no-locale オプションは付けたよな
>>754 前方一致でもヒットする件数が多い(とプランナに判断される)とIndex Scanしないよ。
どのぐらいで「多い」となるかはしらんけど、50万件で5000件ぐらい(1%)になるとSeq Scanになる。
そのまえに、 ANALYZEはやったのか?
757 :
752 :04/07/21 11:41 ID:Kk9QeGX1
>>755 つけてないっす・・・バックアップとってinitdbやりなおし?
>>756 vacuumdb -a -z
でやってます
やりなおし!
759 :
NAME IS NULL :04/07/21 14:10 ID:Qw9AxyzJ
postmasterをデバッグモードで起動する方法ってあります? どんな処理が行われているかリアルタイムで見たいんだけど…. 起動時に何かオプションでつけるような形でないかなぁ.
やりたいことがよく分からんのだが、postmasterの話であれば、 PostmasterMain()から追っていけばそんなに難しいことはしてない。 postgresバックエンドという意味なら、 デバッグメッセージのオプションを最強にすれば?
761 :
752 :04/07/21 14:29 ID:???
>>758 そうですか…ありがとうございました・・・orz
762 :
素人729 :04/07/21 16:18 ID:qnT+1deo
orz・・・・・ ちなみに¥zでパーミッションの設定を表示させたとき 空白ってのは設定されてないってことですか?
>>762 Access privileges の事?
空白の場合、作成したUser以外はアクセスできまへん。
text型の中身が数字だけかどうかを知りたいのですが、どうしたらいいですか?
>>764 正規表現を使う。
WHERE text_column ~ '^[0-9]+$';
767 :
素人729 :04/07/22 10:17 ID:8ebWOJ5q
すんません libpqのトレース関数のtrace.outの読み方を教えてください。 QとかDとかCとかZとかPとか出てるんです。
>>767 プロトコルのドキュメントが日本のサイトにおいてあったはず
769 :
素人729 :04/07/22 21:28 ID:8ebWOJ5q
手続き言語のPL/pgSQLを使いたくて、次のように書いたのですが、 postgres=#create function ttt (int4) returns int4 as 'select 1;' language 'plpgsql'; ERROR: language "plpgsql" does not exist HINT: You need to use "createlang" to load the language into the database. このようなエラーが出たので、createlangをしたら良いのかな?と思ったのですが、 postgres=# createlang plpgsql postgres; ERROR: syntax error at or near "createlang" at character 1 とエラーが出てしまいます。 このエラーの解決法を教えてもらえないでしょうか?
SQLじゃあないので。
あんまりほのめかしは好きでないので補足してあげます。 createlangしてあげれば良いのは正解。 createlangはSQLの"CREATE LANGUAGE"のラッパースクリプト。 なので実行する場面が違う。
773 :
NAME IS NULL :04/07/23 13:13 ID:xOlTaBY/
insert/deleteを繰り返していると数万件で負荷率がどどーんと上がる。 vacuumすると負荷がわずかに下がるけどすぐにまた上がる。 一度dropdbしてからcreatedbしてバックアップから復旧させると 負荷が10分の一以下に下がるけど、何なのよ。 フラグメンテーションか何か?
775 :
NAME IS NULL :04/07/23 14:17 ID:9zzyRUIL
Postgresql8.0はいつでますか?
776 :
770 :04/07/23 15:46 ID:???
>>772 の内容でも、ほのめかしと捉えられちゃったみたいで。
かわいそう。
778 :
NAME IS NULL :04/07/23 23:06 ID:7e1rvO9Z
/usr/local/bin/psql -U pgsql したら、 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"? と怒られたのですが、 いつも、こういうときは/tmp/.s.PGSQL.5432を消してたのですが、 どうもみあたりません。 どうすればいいのでしょうか?
ちなみに、レンタルサーバ(VPS)なんですが、 ウェブがみれない障害があったばかりで、 自分としては、何もいじってなくきゅうにこうなったんですよね・・・ これは、業者がなんかしちゃったって考えるほうが妥当でしょうか? ちなみに業者が用意してる 「PostgreSQL サーバの起動」なるシェルスクリプトを実行すると、 うんともすんともいいません。。。 なお、postgresql.conf の tcpip_socket を trueとか、pg_hba.conf はちゃんと設定してます。 というか、設定をずっと変えてないのに、急にDBが起動しなくなったので。
780 :
素人729 :04/07/24 13:37 ID:9AGwIT5R
うぎゃあああ!!!わかんねええ!!!
781 :
素人729 :04/07/24 13:44 ID:9AGwIT5R
・・・私 素人729は発狂したもののバックアップ脳が時折 連結し こうして一時的に我に返るときがある・・・ 私は その機をとらえ PQexecの解析をおこなってきた。 ログからは何も読み取れなかったがトランザクションブロックが なくなるとinsertされることがわかった。 しかし なぜそのようなことが成立するのかは 私がトランザクションブロックを理解するまで待たなくてはならない あるいはその点にこそ長年のテーマであるカルマからの突破口があるような気がする。
業者のせいだったよママン。。。
783 :
NAME IS NULL :04/07/24 14:23 ID:NvJGEXdI
PostgreSQLヲタの人はソースコード読んでますか?
784 :
素人729 :04/07/24 15:00 ID:9AGwIT5R
もしかして7.0以上だとWAL機能あるからBIGIN,COMITしなくていいのですか?
autocommitがONの場合は、BEGIN/COMMITをしなければ、 自動的に1ステートメントが1トランザクションになる。
786 :
NAME IS NULL :04/07/25 15:42 ID:7L2f00Ay
ポゑrgレssのwin版でpostmasterをpg_ctlをつかわずに linux版にkil -INT pidみたいにして停止させたいんですがどうしたらといでしょう?
787 :
NAME IS NULL :04/07/25 15:54 ID:7L2f00Ay
ポゑrgレssって素敵やん?
789 :
NAME IS NULL :04/07/25 18:41 ID:dnIKDCBb
フリーなCygwinを使わない Windowsネイティブ版PostgreSQLってのは存在するのでしょうか? だいぶと前にそれらしきHPを発見したのですが閉鎖されてました どなたか教えていただけないでしょうか?
793 :
NAME IS NULL :04/07/26 04:38 ID:Z90//0kw
#createdb -E EUC_JP -U hogeuser hogedb WARNING: could not write block 279 of 17142/103742 DETAIL: Multiple failures --- write error may be permanent. createdb: database creation failed: ERROR: could not write block 279 of 17142/103742 blind: Input/output error CONTEXT: writing block 279 of relation 17142/103742 何回やってもインストールし直しても上記のエラーでDBが作れません どうしたらいいでしょうか?
794 :
793 :04/07/26 05:22 ID:Z90//0kw
環境書き忘れました Redhat9のPostgresql7.4.2と7.4.3で試したけど だめですた。 一度インストールして動作してたのを再インストールし直した後に こういう状態になってしまいました。 何か解決策とかヒントとかわかる人がいたら教えてください
timestamp型の列に対して select * from hoge where YMD > '2004/07/27' - timestamp '7days'; と書くと ERROR: invalid input syntax for type timestamp: "7days" と怒られます。何がだめなんでしょうか? 最新1週間のデータが取りたいんですけど・・・。
>>795 select * from hoge where YMD > '2004/07/27' - interval '7days';
797 :
795 :04/07/26 22:35 ID:???
>>796 レスどうもです。
今度は
ERROR: invalid input syntax for type interval: "2004/07/27"
って怒られます。
>>793 ディスクかファイルシステムが壊れたんじゃない?
799 :
793 :04/07/27 01:06 ID:???
>>798 そっちのほうの問題ですかねー
レスありがとうございましたー
800 :
NAME IS NULL :04/07/27 12:41 ID:KZ6Yety6
group by 句で抽出した中のさらに1つのカラム値別のカウントってできますか? 以下のようなイメージなんですが、無理なんでしょうか? SELECT NAME, count(CLM=1), count(CLM=2) FROM TABLE_A GROUP BY NAME;
>>800 もっと利口な方法があるかもしれんが、とりあえず。
SELECT NAME, count(CASE WHEN CLM=1 THEN 1 END), count(CASE WHEN CLM=2 THEN 1 END) FROM TABLE_A GROUP BY NAME;
で、出来ます。
802 :
800 :04/07/27 15:46 ID:???
>>801 『でっ、 弟子にしてください!』
できました。 ありがとうございました。
ユニークな識別番号を持つ二つのレコード間で識別番号の入れ替えを するのに何か有効な方法がございましたら教えて頂けますと助かります。 考えたものでは、一度、最大数近い識別番号でupdateしてそれから入れ替えようと 思ったのですが、危なげなので何か良い手法がありましたら教えてくださいm(_ _)m
それでいいんじゃない? 不安ならユニーク値カラム以外を総入れ換えで最初のupdateを省く。
UNIQUE制約がなければ UPDATE table SET id=(CASE id WHEN '1' THEN '3' WHEN '3' THEN '1' END) WHERE id='1' OR id='3'; で出来るのだが。 UNIQUE制約は参照整合性制約みたいに遅延が出来ないっすよね。
807 :
804 :04/07/27 17:31 ID:???
お二方様、お忙しいところご回答頂きありがとうございます。 ユニーク制約がなければそういうテクもあるのですね〜。 ありがとうございましたm(_ _)m
809 :
NAME IS NULL :04/07/28 16:11 ID:Q/KyXOtW
すみませんが、教えてください。 PostgreSQLの7.4.1を使ってます。 で、あるテーブルに「tel」ってフィールドがあって、その中には 電話番号がハイフン付きで入ってます。 03-1234-5678 なかんじで。 で、これをハイフンなしの値で検索したいんです。 例えば、0312345678で検索して、上のハイフン付きのやつがヒットしてほしい なにか方法があったら教えてください。
810 :
NAME IS NULL :04/07/28 16:52 ID:dyXhYYQi
>809 translate()で`-'を削除した結果と、値を比較すれば? SELECT * FROM table WHERE translate(tel, '-', '') LIKE '0312345678';
>>809 SELECT * FROM table WHERE translate(tel,'-','')='0312345678';
あらかぶった(´・ω・`)
>>809 LIKEでいけそうな気もするが・・・
translate()を使うとこうかな?
SELECT * FROM tbl WHERE translate(tel, '-', '') = '0312345678';
814 :
809 :04/07/28 17:02 ID:???
>>808 禿げ胴、なぁーーんで、SRAなんかに認めてもらわんといかんのだ。
大体、PostgreSQLやるのに、SRA全然関係無いし。
PostgreSQLはオプソだっつーのに、、、勘違いしてないか、この会社?
ユーザ会が仕切るならまだしも・・・
他のオプソでこんな馬鹿げたのある?
>>815 他に適当なところがあるのか?んー、なんならお前やってみるか?
>>815 RHCE
ディストリビューションをどう捉えるかによりますが、linuxもオープンソースってことで
>>816 SRAシャイーーン、わざわざお疲れ!
他に適当なとこ?「ユーザ会」って書いてあるじゃねーか。
アフォ?全く、日本語不自由してそうだな。
SRA石○氏をはじめとする関係者たちは シーラカンス本やユーザ会設立で普及に大きな役割を果たしたが まともな技術情報を流さなかったのも事実 SRAでコンサルするためわざと重要情報を隠していた疑惑もある WALやVACUUMなどPostgreSQL運用の鬼門情報が シーラカンス本や雑誌を含めまったく出なかった 今もまともな情報も書籍もない 日本語がおかしい翻訳ドキュメントと あいかわらず散慢に書き散らしたシーラカンス本があるだけ こんな状態で今度は資格試験といわれても まずはまともな情報を流せ 話はそれからだ こんな感じか? > 815
ユーザ会だって企業の息かかってるじゃん。
>>817 Linuxはカーネルだけね。
RedHatはディストリビューションをきっちりつくってるしLinux普及の立役者。
RedHat社員がLinuxカーネルをだいぶ作ってるし。最近はIBMも多いが。
2.0とか2.2あたりの普及時期はまちがいなくRedHatがあったからLinuxが進歩し普及した。
AlanCoxがRedhat社員だったのは知ってるだろ。
かたやSRAはPostgreSQLのドキュメント翻訳とブルースをコンサルで雇ってるくらい。
>>820 ある分科会はミカカdxtxが仕切ってる。
ミーティングが平日の3時からなんて、
おまいら、給料もらって身内どうしで
発表会ひらいてんじゃねえってな感じ。
というか、SRA、そんな技術持ってないよ。 資格を出す資格が無いというか。 付き合ってみればわかるよ、あんまり解ってない。
>>819 ソース公開されているのに「重要情報を隠している」ってどういうこと?
俺はMySQLに乗り換えたよ。
>>819 技術評論社のPostgreSQLリファレンスではWALが詳細に解説されてるね。
FreeBSDの資格試験があったらいいなぁ
そもそも、石井氏もシーラカンス本でも、紹介文、ユーザー会会員と書かれているが、 SRAなんて一言も書かれていない。 SRAだから石井氏が何かやってくれるわけでもない。
>>827 >>819 だけには重要情報が隠されてたんだろ
インストールの仕方とかそういう重要情報が。
香ばしくなってまいりましたが、 おまいら、資格とりますか?
PostgreSQL CE 7.5 Platinumを取得する予定でつ
読解力のない奴ハケーン > 831 WALやVACUUMなどPostgreSQL運用の鬼門情報が シーラカンス本や雑誌を含めまったく出なかった
鬼門ってなによ?中心を誤魔化してバッシングするなよ。
ユーザ会等になんの断りもなくSRAが認定制度を設けるのには疑問を感じるが、 認定制度そのものには賛成かな。現状のユーザ会では認定制度の実施運営は 難しいかと。ユーザ会の法人化も検討されているようだが。 ってことで、漏れは取るかも。
取れねぇよ。
>>829 Linux のカーネルと PostgreSQL のソース読んだことないでしょ。
>>840 開いて見ただけで、ナニ自慢げに書いてんだ?(ワラ
>>836 ググったほうがいいのは834の方だとおもわれ。
>>819 >SRAでコンサルするためわざと重要情報を隠していた疑惑もある
SRAごときが各方面に圧力でもかけて情報を
出て来ないようにしたとでも思ってるの?
>日本語がおかしい翻訳ドキュメントと
>あいかわらず散慢に書き散らしたシーラカンス本があるだけ
それがSRAと何か関係あるの?
っつーか自分がPostgreSQLわかんないのをSRAの責任に
したいようにしか見えないんですけど、、、
なんだかSRAの社員がヒッシなようにしか見えないんですけど。 心配しなくても、殆どの人間がそんな資格など取らない。
資格というものは需要があって初めてビジネスになります。 この場合の需要とは資格を取る側ではなく、資格を求める側のことをいいます。 よって、PosgreSQLの構築やそれを用いたシステム開発を外部委託する企業が 今後ますます増えていくことがビジネスを成功させるカギとなります。 SRAにはなお一層の普及活動への注力に期待します。
>>843 心配しなくても、お前のような人間にはこの資格は取れない。
取らない
取れない
以後、ループ
取れば
この資格に技術者が殺到するとは思えんなぁ。 ちなみにワシはオラクルシルバー止まり。
ポスグレプラチナなんてあるとかっこいいね。
まあ、認定取得費用が法外なふっかけでない限り応援するよ。
>>845 ↑
こんな書き込みするような会社にどうして金払う?
RHCE → REDHAT Linuxに対する資格 → RedHat社が認定 シスコ技術者認定 → シスコ製品に対する資格 → シスコシステムズ社が認定 TurboCE → TurboLinuxに対する資格 → TurboLinux社が認定 MSCE → Microsoft製品に対する資格 → Mircosoft社が認定 (以下略) PostgreSQL CE → PostgreSQLに対する資格 → SRAが認定・・・・・・・・何故?意味不明
>>855 PostgreSQL の開発者を考えてみろよ。
分からなければ本家の ML を読め。
>>856 確かに石井さんは開発者だが、多バイトコード関連が主。
DBの根本部分には関係していないはず。
ま、なんだ、
例えばOpenOfficeの日本語化をやったAさんの所属するBという会社が、
OpenOffice認定資格試験をはじめたらどう思うね。
>>859 嘘ばかりの日経の記事などどうでも良い。
コアメンバーが一人くらいいたところでその会社のものではなかろう。
>>859 でー、このひとが問題考えてくれんのー?(w
なんともわざわざ引っ張り出すのに、臭いというかショーモナーいネタだな。
金払って来日してもらっただけという幹事。
おまえよりかは、絶対、マシだよ。SRA社員さん。
というか、
>>859 みたいなのに、認定していらんわ。
絶対要らないSRA認定資格。
SRA社員であるおまえよりマシだよ、という意味かと。
RHCE → RedHat社が認定 → RedHatの製品だから って考えれば PostgreSQL CE → SRAが認定 → SRAの製品(Powergres)だから って考えられなくもない。 つーか結局のところPostgreSQLなんてマイナーだから 世界でもSRAくらいしかやるところがないっつーことじゃないの? あと富士通か。 RedHatだってPostgreSQL見捨てたんじゃなかったっけ。 あとユーザ会がやれとかいってるやつはアホすぎ。 あそこはそんなパワーないっつーの。で、海外ではもっと人気無いし。
>>859 たった3行のレスなのに、そのつながりがまったくわからんw
で、マジな話、あのソースがそんなに美しいか?どこを読んだんだ?
>>866 SRAに資格認定する資格があるかどうかと、
PostgreSQLのソースが美しいかどうかはまったく関係ありません。
859のミスリード(手品の意味)なんでスルーしませう。
SRA必死だな(w
>>865 じゃぁ、Powergres CE だろが。
大体、Powergres自体もどうかと思うが。
パワー云々以前に、資格認定できる資格の有り無しだろ。
SRAにPowerあるとも思えん。
数回やって受験者スクナー、やんぴ、ってのも見えるが。
まぁ、せいぜい頑張りなよ。ユーザ舐めちゃいかんよ。
SRA にジェラシーを感じる厨が集まるスレはここですか
で、何の話だったっけ?
RHCEとかTurboCEとか持ってるから雇った/雇われた人材っているの? RHCEとかTurboCEとか持ってる人間が担当してますから、 このシステムは万全です、とか客にいっちゃうの? 客からすると、RHCEとかTurboCEなんてどうでもいいんちゃうの? 儲けてるんはRedHatだけなんじゃないの。 それみて資格ビジネスはじめたんじゃないんか > SRA
SRAがしゃしゃりでてきたんで、 PostgreSQLに興味なくなっちゃったよーー。 MySQLにすっかなあ。
>>870 頭の悪そうなSRA社員だな。ひっこんでな。
なんだか、いっぱいでてきてない?
ありありと社員とわかる、あほなカキコがどうしてできるのかと。
余計心証を害すると思う。
PostgreSQLの資格など、どうでも良い。 問題は秋の情報処理試験だ。
妄想癖のある 874 に誰か医者を紹介してあげてください
こんな問題多そうな資格イラネ。
で、取ったほうがいい資格って何だろうねぇ。 Oracleもシルバーとかでも取っといた方がいいのかな。 Linux方面ならLPICとか?
>>879 オラクルマスターか、テクニカルエンジニア(データベース)だろうね。
PostgreSQLで、しかもSRAなんていう会社が認定した資格なんて認知してもらえないだろし。
PostgreSQL の資格をするのに適した所はほかにどこがあるだろう。 NTT、富士通とかも PostgreSQL やってるけど。 # SRA は日本語化(マルチバイト化)以外に # Windows のネイティブ化の貢献や、PGCluster とかもあるね。
Bruce のことを「コアメンバーが一人くらい」という
>>860 みたいな人だけが SRA による PostgreSQL の資格化に反対している、ということですか?
883 :
NAME IS NULL :04/07/30 10:17 ID:jCJzG4jl
漏れも非常に抵抗を感じるね。 SRAなんてのがやるぐらいなら、資格としての価値が無い。
>>881 > Windows のネイティブ化の貢献
これはがんばってねってことで。たとえ
Powergresつくるための副産物だったとしても。
> PGCluster
これはあくまで独自拡張ってことで。
PostgreSQLに組み込まれないかぎり、貢献とはいえないなあ。
>>882 Bruceが中心人物ってのは動かしようが無い事実だが、BruceとSRAの関係がね。
Bruceを外部コンサルとして雇ってるってのが微妙。
完全に雇用してPostgreSQL部門なんぞつくるくらいの
関係なら誰も文句をいわないと思うが。
Bruceひとりコンサル契約して、
マルチバイト化した社員がひとりいるくらいで
資格を認定しようなんてのが、反感を買うわけだ。
>>881 Windowsネイティブって商用版じゃん
意味ねーよ
PGCluster、これ個人的な活動じゃないの? 石井氏の活動自体も、個人的。 大体、他にいないじゃないか。 技術も無いのに、認定する資格なんてないだろ。
>>884-886 7.5 に取り込まれているよ。
PGCluster だって本家知ってるんだよ?
なんか PostgreSQL も SRA も知らないで叩いてるだけだろ?
>>887 だから、それは個人的にやってることだろ?
会社としてやってない。
オマエこそ、会社が何やってるか理解してないんじゃない?(w
大体、取り込まれるって、contrib入りするぐらいだろうし。
「問題」の中にも含めれないんじゃないか。
ってか、こういう書き方されるとマジで抵抗感じる。
>>888 | ってか、こういう書き方されるとマジで抵抗感じる。
SRA の資格云々は単なる感情論ですか。
石井氏の PostgreSQL の commit だって SRA として、
じゃないよ?ほかの多くの開発者も。
会社に個人が属し、その技術はフィードバックされることも理解できないんですか?
全然フィードバックなんてされてるように見えないけど。 まー、全ては結果に現れるだろう。 せいぜい頑張ってね。
>>887 PGClusterはcontrib程度だし、とてもつかいものになるレベルではない。
>>890 なんだ。やっぱ憶測で物を言ってたんだ。
SRA にだしぬかれた SI 屋かと思ったけど学生君?
>>887 もっというと、クラスタリングちゅうか、レプリケーションソフトは
これ以外にもいくつもある。少なくとも本流ではない。
>>892 何トンチンカンなこと言ってんだ?
何が憶測なんだ?
当然の如く煽られて、馬鹿なこと書いてるより、しっかり問題考えてろ。
脳内妄想の激しい奴だな892は。 独り言と化しているし放置が一番。
SRA社員のみなさん、質問です。 7.5ではバッファ管理アルゴリズムがかなり改良されたようですが、 どんな改良で、どんな効果があるのでしょうか。 資格認定やるんだから、このくらいすぱっと答えられますよね。
897 :
NAME IS NULL :04/07/30 13:35 ID:huBSuvwC
ARCのことか?それは社員じゃなくてもわかるんじゃないか、、、
>>897 いや、だから社員に答えて欲しいわけだよ、君。
>>897 「SRA社員だけがわかる」なんてもんは無いだろ(プ
というか、この資格、SRA社員バカーリになりそうな悪寒。
900 :
897 :04/07/30 13:52 ID:huBSuvwC
俺は何度か書きこむたびに社員とか指摘されたけど、実際社員なんてここ見てナイと思う まあ信じるかどうかは勝手だけどね #アク禁うぜー
SRA必死杉。 SRA社内からのSquid Proxyはアク菌だろ。
903 :
896 :04/07/30 14:23 ID:???
つまり、896は釣りに失敗したと
905 :
896 :04/07/30 15:05 ID:???
>>904 ある意味ね。
まあ、SRAといってもなんかやってる連中もいれば、へたれもいる。
PostgreSQLのなかをのぞいたり、改造しているのもたしかにいるが、
そういう連中は資格認定とかセミナーとかには絡まないよ、普通。
つまり、SRAに所属しているPostgreSQLがらみの個人と、
SRAそのものと資格ビジネス、これらを混同して話をしてもどうしようもない、と。
で、
資格ビジネスに注目すると、
SRAはまだそれをはじめるだけの土台つくりができていないんじゃないか、
と思っている。個人的な意見として。
まず、エンジニアに対してはもっときっちりしたテキストを作って教育すべき。
セミナーやってるといっても、やはり自習用のきちんとしたテキストは必要。
また、PostgreSQLを導入しようとしているユーザに対しては、
きちんとした啓蒙が必要。
世間一般のユーザ(顧客企業)はPostgreSQL=オープンソース=無料
くらいの認識しかない。
PostgreSQLの利点と欠点を明らかにし、ソフトは無料だが、
運用にはそれなりのコストとスキルが必要ってのを訴えてもらわんと。
なぜ、訴えることが必要かというと、PostgreSQLでビジネスをする
エンジニア=SI会社が儲かる道筋が必要だから。
これで顧客もSI会社もWin-Win、結果としてSRAもPostgreSQLもWin-Win。
こういう下準備のもとに、資格試験があるんじゃないの?
いまんとこ、SRAが資格試験で世間的認知度を上げ、
エンジニアから試験料金をぶんどるとこまでしかみえない。SRAのみ甘い汁。
顧客企業も資格を取るエンジニアも、どっちにもメリットが感じられないんだよ。
そこが一番の欠点なんじゃないのかね。
資格そのものはともかく、これで試験対策用の テキストが増えてくれるんじゃないかと 期待してます。 和訳ドキュメントやシーラカンス本とは 違う切り口の本があればいいな
>>906 増えるかな? > 試験対策テキスト
ちと疑問。
>>907 それはSRAが出すべきでしょ。少なくとも認定にパスできる学習環境はオープン
にしておくべき。そうじゃなかったら、認定を餌にセミナーで儲けてるなんて
言われてもしょうがない。
>>908 認定を餌に
教本、問題集で儲けるってこと。
もちろんセミナーでもね。
悪い?
だからがんばって宣伝しないと。こういうとこで。
つまり、俺たちみんなクレクレ君なんだから、 セミナーも試験も教本もタダじゃなきゃヤダヨー ということだ
ユーザー馬鹿にしたような企業には金出さねーよ
セミナーに参加しなければ認定してやらないなんて、 某宗教団体みたいな商売だな。
905が正論
ていうか、SRAがやる認定試験なんて、中小の零細SIの人間しか受けないだろ。 NやFやHやIのエンジニアが受けるか? 他の企業も巻き込んで認定団体作って試験するとかってんならともかく。
単独で勝手にやるってのが厭らしさが出てていいね。
単独云々以前に、分不相応なことをしようとするから受け入れられないと思うよ。 現実的に、ほとんど受ける人間なんていないでしょ、SRAの資格なんて。
SRAがPostgreSQLを餌に中小企業のSI仕事を取っていくには いいアドバルーンだよな。 『うちはセミナーもやってます、社員には開発者もいます、 認定試験もやってます。PostgreSQLといえばSRA。 他のSI会社なんて糞ですよ』 なんて営業が客先で言えば、 馬鹿な担当者はそれを信じこんでSRAに頼んじゃうね。 セミナー、資格、オープンソース部署、少数の開発者。 みんなSRAの営業ツールなんだよ。 資格にしても、受験料で儲けるつもりはないだろうが、 宣伝効果は抜群だよ。 SI屋なんてのは、客である馬鹿担当だましてなんぼ。 SI業界の非難なんてへでもないんだろ
なるほど、そういうゲスな営業手法だから、 いつまで経っても、ろくな利益が出ないわけだ。 偽者の技術で、食ってけるほど、SI業界甘くない。 というか、SRA、SIなんてやってるー? ただのPG会社だと思うけど。
920 :
918 :04/07/31 02:37 ID:???
>>918 今回の件で思い浮かべるのが、Linuxバブルで名前が出てきた会社群。
あったよねえ、たくさん。
で、ほぼすべて消えました。
今のSRAには、Linuxバブルのころのバブル企業の匂いがする。
ロコツな利益追求に目がいっちゃって、なんかひいちゃうんだよね。
しかも、ビジネスセンスが感じられない。
ぶっちゃけていえば、PostgreSQL自体に金の臭いがしないんだよ。
だからSRAはいまさらLinuxの夢よもう一度で、枯井戸掘ってる
馬鹿ものってイメージが抜けないんだよね。
SRAはPostgreSQLに注力しているイメージ作って、旨味あるのかねえ?
まぁ実際のビジネスでは「○×ユーザ会に理事を送り込んでいます」ってのが 営業トークとして使われたりするわけだ。SRAに限らずね。
>>921 SRAがPostgreSQLを営業トークのネタにしてるってのは明らかだが、
疑問はPostgreSQLがそんなに強い引きをもたらすのかってこと。
フリーDBになびく顧客相手にしてるってのもねえ。
なんかしょぼいじゃん。フリーDBなんて。
技術力は?だけど、MySQLやってるXXエージェンXXーみたいに
小規模の会社なら、小口顧客向けの薄利多売ってことで理解できるんだけどね。
PostgreSQL単体でってのはヒキは弱いだろう。 フルOSSで、ってんなら結構ヒキはあると思う。 それに政府や自治体もそれなりに押してるし、 詳しいことを知らないクライアントに 「当社にもOSS開発者がいるんですよ」とか、 「ユーザ会に役員を送り込んでいます」ってのは それなりにヒキになると思われ。 そういう某企業のパンフレット見たことあるしな(w。
すみません、ある番号(たとえば65535)のODIをもつオブジェクトを検索したい場合はどうすればよいのでしょうか? どこのテーブルかというかデータベースかということすらわからないが、とにかくそのOIDが割り当てられた オブジェクトが知りたいのです。
>>925 認定技術者にはなれない技術力の低い人ですか?
わからないならわからないって素直にいえよ。
結局ここの住人はこの程度だったということで
>>924 地道にテーブル毎に
SELECT oid,* FROM table1 WHERE oid = xxx;
SELECT oid,* FROM table2 WHERE oid = xxx;
.
.
.
で探せば?
>>924 ちょっとセコい方法ですが、pg_dumpall --oid して
その結果を grep するというのはどうでしょうか。
>>928 それだとテーブルそのものやFUNCTIONなどに付いたoidが
発見されないんじゃない?
>>931 じゃあ、pg_dumpallかね。
oid管理テーブルがあるわけじゃないからね。
ま、目的によるでしょ。
テーブル中のデータのoidを探してるなら928の方法でいいわけだし、
"資格試験"の問題解いてるわけじゃないし(w
てな問題で困らないように認定を取得しときなさいって話。
>>936 シルバーって・・・オラクルマスターの真似っこかよ。
>933,935 釣りは釣り掘で。
なにマジなってんだよ、ぷっ。 >935
|-`) .。oO
>>939 にはこの問題は難しすぎたらしい、、、
941 :
929 :04/07/31 19:14 ID:???
>>936 結構試験範囲広いですねー。
これだと私も必死で勉強しないと受からないかも。
>924 データベースクラスタのディレクトリをoidで検索したら、 DBかテーブルならoidと同じファイル名で見つかる。 でなけりゃ、システムカタログをoidで一通り漁ってみるこった。 それでも無ければ、テーブルのタプルの可能性が高いが、 まぁ頑張ってくれ、としか言えない。 ていうか、そういうプログラム書いてくれ。 で、SRAの試験だが、SRAがやることの問題点としては、 他の団体がより中立な立場で認定試験を立ち上げることが 事実上不可能になってしまうこと(認定試験の乱立は好ましくない)。 SRAの人間が、まさかJPUGが法人化を目指していることを知らないわけはあるまい。 当然、JPUGも将来的には認定試験みたいなものを立ち上げることも考えたはずだ。 LPIとRHCEみたいに、「PostgreSQL CE」と「Powergres CE」みたいな両立なら 有り得るかもしれない。 が、今回「PostgreSQL CE」と銘打ったことで、その道は断たれた。
必死にやってろw
>>942 「元祖PostgreSQL CE」と「本家PostgreSQL CE」でいいじゃん
一般ユーザーからすると JPUG >>>>>>>>>>>> なにそれ? >>>> SRA
SRAからJPUGに対する最後通牒?
議論中にすみません。 PostgreSQLのデータベースに定期的にVacuumかけるために cronで実行させようと思っているShellスクリプトがうまく動きません。 (アクセスにはパスワードが必要です) #!/bin/csh echo 'パスワード' | vacuumdb --dbname データベース名 --analyze パスワードを渡しているつもりなのですが 上記を実行すると、パスワードを尋ねられてしまいます。 (これはShellスレで聞くべきことですかね・・?)
せっかくマトモな批判をする人がいるというのに 945-946みたいな何も分かってない発言をされると 資格試験批判しているのが厨房の集まりのような印象をあたえて 正直迷惑。
>>942 俺はどっちの中の人でもないから事実はわからんが、
SRAが資格試験をやることをJPUGが知らなかったって言ってる?
JPUGってSRAべったりの組織なんじゃないの?
事務局もSRAの中にあるみたいだし。
あと、俺もJPUGに資格試験は無理だと思うね。
ドキュメントの翻訳ですらあの程度なのに。
スキルの高い皆さん出番ですよー。
>>947 明日の昼までに良い回答がなかったら俺が答えてやる。
次スレは
【シルバー?】PostgreSQLのことならここで聞け Part 2【ゴールド?】
か?(w
>949 JPUGの看板を使って、実際には企業にやってもらうという方法もある。 SRAがイニシアティブを取るにせよ取らないにせよ、 コミュニティという看板があることで 他の企業(特にSRAより大手)がコミットしやすくなることは間違いない。 SRAを通してPowerGres Plusを売っている富士通は除くとしても、 他のメーカー・SIerはこの状況はあまり面白くないだろう。 SRAは別にPostgreSQLの開発にコミットしてるわけじゃないんだし。 # まぁ、Bruceに金出してるってのはあるが、 # Bruceの働きっぷりも褒められたもんじゃないしな。
>>949 >> あと、俺もJPUGに資格試験は無理だと思うね。
>>ドキュメントの翻訳ですらあの程度なのに。
ドキュメント翻訳はSRAがやってる。
954 :
947 :04/07/31 23:50 ID:???
>>950 ありがとうございます。
自分でももう少し頑張ってみます。
955 :
924 :04/08/01 00:41 ID:???
>928 >929 >942 対象テーブルが少ないので、とりあえず地道にやってみました。 ありがとうございます。
psql とかのメッセージの日本語訳はいつになったら正式版に取り込まれるのやら。
>956 SRAの上場記念事業として行われる予定です なんちって
ほう、日本語訳はsraとかいう会社がやってくれるようになったのか。 OSSに理解のある会社ですか、感心感心。 ほう、Windows nativeなものを商品にしてきましたか。 まぁ翻訳ガンガってるしwindowsユーザで困ってる人もいるだろうしな。 ほう、資格試験ですか。... Σ(´Д`;) ってなんでチミが? オイラは日本語訳出してくれてる会社ってイメージしかないぽ....
>>959 それはSRAどころかJPUGとしてもやってない。
個人レベルでやってるだけなので、むしろお前がやれば?
ところでこのスレの住人はみんな、翻訳はSRAがやってると
勘違いしてるんですか?
960 :
959 :04/08/01 11:08 ID:???
>947 #!/usr/bin/expect spawn vacuumdb -W expect "Password: " send "password\r" expect "VACUUM"
962 :
950 :04/08/01 12:14 ID:???
963 :
947 :04/08/01 20:37 ID:???
>>961 対話的?な便利なコマンドがあるんですね。
しかし残念ながら動かしたいサーバー(共有レンタル)にインストールされておりませんでした・・
せっかく教えて頂いたのに申し訳ありません。
>>962 すんなりいけました。
いままでアクセスする度にパスワード入力していたのも全て省けるんですね。
expectコマンドも今後使用できるサーバーで活用させて頂きます。
みなさん、本当にありがとうございました。
964 :
NAME IS NULL :04/08/02 10:09 ID:BenG0eaq
TurboLinuxすぐ止めたSRAのこと、資格もすぐアボーンするつもりです。
965 :
NAME IS NULL :04/08/02 10:51 ID:q8J3P80b
すみませんが教えてください。↓のようなテーブルがあります。 (ずれませんように・・・) master detail id | name id | item --+------ ---+------- 1 | nameA 1 | 1 2 | nameB 1 | 3 1 | 5 2 | 3 2 | 4 2 | 5 masterと、detailは、1対nの関係として、n側に指定した値を持つ 行をmaster側から、検索するには、どうすればよいのでしょうか? 例えば、detailのitemが「3と5」であるmasterの行を抽出、とやると、 nameAの行だけが帰ってくるようにしたいんです。 「3と4と5」ならnameBだけ。 Postgresは7.4です。よろしくお願いします。
966 :
965 :04/08/02 10:54 ID:q8J3P80b
やっぱりずれたので、無理せず縦に。 master id| name -+------ 1 | nameA 2 | nameB detail id | item --+------ 1 | 1 1 | 3 1 | 5 2 | 3 2 | 4 2 | 5 お願いします。
いまいちわかんない。 > 例えば、detailのitemが「3と5」であるmasterの行を抽出、とやると、 > nameAの行だけが帰ってくるようにしたいんです。 「1と3と5」の時にnameAが返ってくるならわかるが、 「3と5」だったらnameBももってるんじゃない?
968 :
NAME IS NULL :04/08/02 13:00 ID:D8nSUXhk
数学も分んないのにDBですか。 ソースも読まないのにオプソなDBですか。
969 :
965 :04/08/02 13:10 ID:q8J3P80b
>>967 すみません。まったくそのとおりでした。
条件を書き直します。
誤:
>例えば、detailのitemが「3と5」であるmasterの行を抽出、とやると、
正:
例えば、detailのitemが「1と5」であるmasterの行を抽出、とやると、
でした。
よろしくお願いします。
>>968 すまん。
>>969 WHERE句を繰り返すしかないかなぁ。
SELECT name FROM master WHERE
EXISTS (SELECT * FROM detail WHERE id=master.id AND item=1)
AND
EXISTS (SELECT * FROM detail WHERE id=master.id AND item=5);
「リレーショナル 除算」でググれ。
972 :
アビボ :
04/08/03 09:43 ID:Vft70n6i おれもpostgreSQL認定資格試験作ります。 階級 試験料 postgresql 特級 \8000‐ postgresql 上級 \4000‐ postgresql 中級 \3000‐ postgresql 初級 \2500‐ みんながんばってね♪