1 :
NAME IS NULL :
04/08/03 17:52 ID:6RNJ4Gy6 SRA認定ネタは別スレでおながいします。
(・3・)ゑ〜
イチ=オツは新スレ立てを終えた1を総合的に ねぎらう格闘技である (゚д゚ ) (| y |) この格闘技を極めることにより… ( ゚д゚) 1サン オツデス (\/\/ 大仕事を終えた1の安心感は120%上昇 ( ゚д゚) >1乙 (\/\ \ 華麗 スレ住民との一体感は63%上昇 モツ ― | (゚д゚ ) カレー>1_/| y | イチ=オツを極めたスレはマターリな滑り出しになる! >1サン ( ゚д゚) オツカレ \/| y |\/
4 :
NAME IS NULL :04/08/03 21:13 ID:6OzOk0oN
>>1 スレが立ったら、そっち行ってもいいが、当分ここでやるかと。
ていうか、別スレでやってほしいなら、なんで>1にそういうこと書くかと。
cygwin上のpostgresqlの設定がやっとうまくいったと思ったら createdbコマンドを使うとdataディレクトリ下のどっかが削除できなかった とかいうエラーがでて、dbが作れません。助けてください。
一度postmaster落として、そのdateフォルダをエクスプローラ上で削除してから やりなおしてみれば?
あ、間違えた・・・dataな
12 :
NAME IS NULL :04/08/04 23:25 ID:33aw590+
LinuxサーバーのPostgreSQLにODBC経由でMS Accessを使ってテーブルを見たり 編集したいのですが、そのやり方について詳しく書いてあるサイトや本などはあるでしょうか? くだらない質問で本当にすみません。
14 :
NAME IS NULL :04/08/04 23:44 ID:33aw590+
>>13 ありがとうございます。
さっそく実験してみます。
バージョンは最新版で動いているのでしょうか?
もしよければ、動いているバージョンを教えてください。
>>14 PostgreSQLは7.4.3、Accessは2000です。
Accessからアクセスする際、環境にもよりますがpg_hba.conf等の設定が必要になります。
頑張ってください。
Cygwin + PostgreSQL 7.4.3 + JDBCドライバ(pg74.214.jdbc3.jar) を使っています。 以下のようにフィールド数が31個の場合は問題なく検索できるのですが rs = stmt.executeQuery("SELECT f1,f2,...,f31 FROM tbl"); 以下のようにフィールド数が32個になると rs = stmt.executeQuery("SELECT f1,f2,...,f31,f32 FROM tbl"); org.postgresql.util.PSQLException: ERROR: syntax error at or near "FROM" という例外が出てしまいます。 psql ではどちらも問題なく検索できるので、 JDBCドライバがあやしいとは思っているのですが、 この制約をはずすことはできないのでしょうか? PostgreSQL 7.4.1 + pg74.1jdbc3.jar でこの現象がおきて、 ためしに 7.4.3 + pg74.214.jdbc3.jar に置き換えてみたけど、 状況変わりませんでした。
みなさんPostgreSQLのデータモデリングは どういうソフトでおこなっているのでしょうか? モデル図からSQL文を作ってくれるような ソフトってあるんでしょうか? Visioは持ってるのですがPostgreSQLには 対応してない(?)ようで何かいいものがあったら教えてください。
18 :
8 :04/08/05 20:18 ID:???
ごめんなさい 愚愚ッたら1件だけ同じ状況のがあって binにパスが通ってなかっただけだった。 いやーっ、なんか他のパスが邪魔してたんだな。 しょぼくてごめん。
20 :
NAME IS NULL :04/08/06 05:00 ID:pjbXiDed
CreateDBしようとしたら以下のようなエラーがでて困ってます。 何が原因なんでしょうか? Redhat9のPostgres7.4.2 です。 $ 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
>警告:17142/103742のブロック279を書くことができませんでした。 >詳細:多数の失敗---書き込みエラーは永久かもしれません。 >createdb:データ・ベース生成は失敗しました:エラー:17142/103742のブラインドのブロック279を書くことができませんでした:入力/出力エラー >情況:関係17142/103742のブロック279を書くこと んー、機械翻訳だけどどういう意味だろう(w
22 :
NAME IS NULL :04/08/06 05:17 ID:pjbXiDed
>>21 こんな時間にレスありがと。
メッセージでぐぐっても海外でもろくに情報が無いので困ってます。
ディスク不良かなぁとちょっと思ったけど、
共用鯖なのでe2fsckとかunmountせずにかけるのも
危険かとおもってやってないです
>>22 早めにチェックした方がよさげ。
そのまま使う方が危険かもね。
エラー無しなら無しで安心して次の原因を探せるし。
24 :
NAME IS NULL :04/08/06 08:12 ID:zxP0ELEk
今はMySQLを使っていますが、 これは一方向レプリケーションしかできません。 Postgreならば、双方向レプリケーションも可能でしょうか?
25 :
NAME IS NULL :04/08/06 08:51 ID:CVVwPym3
ソースも読まないのにオープンソースDBだって。バカじゃねえの?
>>25 24じゃないけど、オープンソースなのがいいんじゃなくて
無料なのがいいって人は多いでしょ?
わからないなら無駄にレスしなくていいと思う
>25 で、おまいはソース読んで何をしたのか、と。
28 :
NAME IS NULL :04/08/06 10:50 ID:oSvD/uKA
DBサーバとWEBサーバが別々のWebアプリケーションを作るときに 最も安全な方法ってのはどんなんなんでしょうかね。 シーラカンス本を読む限りでは、 DB,WEBが同一の場合だとident認証が、パスワードをファイル内に書かなくてよいので 安全って書いてありますけど。。。 DB,WEBが別々の場合だとやぱしcgiやphpに生パスワードを書いて、 chown www passwd.php; chmod 600 passwd.phpとかやるしかないんですかね。 もちろんWEB<>DB間はSSLで。
>>28 生パスワード書くぐらいなら
IPaddressを指定してその鯖からのアクセスなら
認証ナシでOKとかにしてもいいのでは?
エロイ人の回答を末
>19 EAかなりよさそうですね。 これを機にUMLを覚えたいと思います。 ありがとうございました。
>>29 そうするとローカルアカウントを取られたときに
DBにアクセスされちゃうことになってしまいます。
生パスワードを書いて、オーナーwww, パーミッション600にしておけば
少なくともwwwユーザを取られないとDBにアクセスされないので多少はマシかと。
でも、もうちょっとセキュアな方法が欲しいっすよね。
>>31 ローカルアカウントとられる場合まで想定してるのか・・・
とられないようにするのを想定した方がいいと思うけど
>>32 雑居なレンタル鯖を想定してのことじゃねぇの。
35 :
NAME IS NULL :04/08/10 11:29 ID:8JhYir3p
>>34 あー、結構これが現実的な解かもしれないですね
>>36 8.xが枯れるのは2年後ってとこか・・・。いいね、業務に充分耐えられそうだ。
7.5じゃなくて8.0なのか。 PITRとかWin対応も期待しているけど、 トランザクションのネスティングだけ先に対応してくれんかな?
もうWindows版の8ベータもあるの?
>>40 Windowsじゃないほう必死で見てた(爆)
スマソ
>>42 これってマジでパワグレいらなくなっちゃうね。
今Windows版試しているけど、ユーザのパスワード設定は必須みたい。
>>43 まぁ、元々PowerGresなんて要らないから。
買うやつの気がしれん。
Windows2000ProとApache1.3.31とPHP4.3.8と組み合わせて動かしているけど とりあえず動いています。 PHP4.3.8の日本語の設定の部分が悪くて、エンコーディングの部分が変だったけど 設定をきちんとしたら、大丈夫だった。
ALTER でカラムの type が変更できるようになったのが嬉しい。
48 :
46 :04/08/13 14:16 ID:???
PHPのpg_lo_import()で、ファイルパスが相対パスだと駄目だった。 getcwd()でディレクトリを得て、フルパスにして事なきを得た。 PHPとPostgreSQLとどっちの問題か分からない・・・。
49 :
前スレ795 :04/08/14 17:33 ID:1Bv4OOJE
結局答えもらえなかったのでもう一度御願いします
---------------------
795 名前:NAME IS NULL 投稿日:04/07/26 20:30 ???
timestamp型の列に対して
select * from hoge where YMD > '2004/07/27' - timestamp '7days';
と書くと
ERROR: invalid input syntax for type timestamp: "7days"
と怒られます。何がだめなんでしょうか?
最新1週間のデータが取りたいんですけど・・・。
796 名前:675-676 投稿日:04/07/26 22:23 ???
>>795 select * from hoge where YMD > '2004/07/27' - interval '7days';
797 名前:795 投稿日:04/07/26 22:35 ???
>>796 レスどうもです。
今度は
ERROR: invalid input syntax for type interval: "2004/07/27"
って怒られます。
---------------------
>>49 select * from hoge where YMD > timestamp '2004/07/27' - interval '7days';
pg_hba.confに下記を追加して、認証式にしました。 local all all md5 host all all 127.0.0.1 255.255.255.255 md5 local all all reject host all all 127.0.0.1 255.255.255.255 reject alter user ユーザ名 with password 'パスワード'; でパスワードを設定したユーザは認証できるのですが、 今までパスワードを設定してなかったユーザ(postgres等) もなぜかパスワードを要求され、DBにアクセスできません。 alter userでパスワードを無しにしても、要求されてしまいます。 こうなると、プログラム等の改変が必要になってしまうので、 もしも改変無しでいける方法があればご教授ください。 宜しくお願いします。
プログラムを改変してください(w もしかして、接続文字列がそこらじゅうにあるの?(プ
>>52 だったらそのようにpg_hba.confに書けばいいんじゃない?
例えば最初の行に、
local all user1 trust
と追加するとか。
vacuum full を毎日1回おこなうのは問題ないですか? 一応、バージョン7.3なので起動させたままやってるんですが。
>>55 別に何回やっても問題でしょ。
DBがロックさせることが問題にならないのなら。
>>56 >別に何回やっても問題でしょ。
「問題ない」の間違いね。
vacuumはこまめにかけた方がいいよ。
もちろんfullが可能ならそちらの方が良い。
あと、アナライズオプションもつけた方が良いね。
user1というユーザのみdb1というデータベースにアクセス できるようにする設定は、どのように行えよいのでしょうか。 無知ですみません。
>>58 pg_hba.confで設定する。
ex)
local db1 user1 trust
local db1 all reject
>>59 ご丁寧に有難うございます。
htaccessの制限とは逆で、denyを一番下に置くんですね。
勉強になりました。
>>60 余談だが、処理の順番はOrder指示子で指定している場合が多いので、
htaccessのdenyとallowは順番関係ない。
>>61 おっしゃるとおりです(汗
なんとも、頭が下がります。
pg_hba.confの場合はそれがなかってので、頭に入って無かったですね。
全てにおきましてご丁寧にしていただき、感謝しております。
63 :
NAME IS NULL :04/08/17 13:58 ID:oj1fjngK
8.0使ってる人、今のところ目立ったバグは無いですか?
>>63 7.4(Linux)で動いているものを8.0(WinXP)で動かしてみたが、今のところ問題ない。
PgAdminVが突然落ちることはあるけど。
まだ入れているデータも少ないし、それほど負荷を掛けたわけじゃないのだが...
また、Win対応以外に目新しい機能もまだ使ってないけど。
Win版のpsqlってCtrl+I(TAB)による補完が利かないのが辛いなぁ。
これまで、PgAdminやCSEを全く使わず、psqlだけでSQL文の試行や
TABLEなどを作成していたんだが、みなさん開発段階でのツールって
何か使ってますか?
65 :
46 :04/08/17 17:36 ID:???
>>64 ファイルにSQL文書いて、psqlで実行させるのはダメ?
66 :
46 :04/08/17 18:26 ID:???
むぅ、PHPからpg_dumpを用いてのDBのバックアップが行えないかも。
67 :
64 :04/08/17 21:53 ID:???
>>65 最終的にはそうしてますけどね。
アプリ一式分のテーブルやビュー、インデックス、関数、
そして必要な初期データ(INSERT文)はテキストファイルに書いて
psql -f で実行してます。
試行用のテーブル作成等も含めたSQL文の実行は皆さんどうしているのかなと。
過去CSEやPgAdminも使ったことあるんですけど、補完機能が無いので
結局補完機能のあるエディタが、短文ならpsqlで直接叩いてましたが、
Win版psqlに補完機能が無いので、ちょっと使いづらい。
ま、SQL程度で補完機能に頼るなといわれりゃそれまでなのだが。
8.0で試しに、make、make checkしたら結構な数のエラーが出たので インストール止めたけど。on RHEL。
69 :
64 :04/08/18 05:25 ID:???
RHL7.3でmake ,make check してみました。結果 All 96 tests passed. たしか今の7.4.3でもmake checkは乱数のところでエラーが出てたんだけど、 すんなりと全てとおちゃった。configureオプションは--prefixのみ。 インストールはしてないけどな。 これまでbeta1が出てから正式リリースまでどのくらい期間があったか 知らないけど、年内は楽勝?
>>68 RHEL AS3で問題なくレグレションテストALL OKで、
テーブル作ってデータ突っ込んで検索はできたよ。
71 :
NAME IS NULL :04/08/19 11:32 ID:FTpD4aMN
質問させてください。 Fedora Core2でPHPとpostgreSQLをインストールしています。 それぞれ単体では動作するのですが、PHP->SQLへの連携ができずに 困っています。 この二つ以外に、なにか特別なことをやる必要はあるのでしょうか? バージョンはこんな感じです。 php : 4.3.8-2.1 postgreSQL : 7.4.3-1PGDG よろしくお願いします。m(_ _)m
さぁ、エスパーさん募集中だ。 どうできないか、わからん。 そこらじゅうにある解説サイトをもう10回読み直しておいで。
>71 php-pgsql とかいうようなパッケージをインストールしてないとか。
74 :
NAME IS NULL :04/08/19 20:16 ID:Pa2FjmTI
CREATE TABLE 時にNOT NULLで定義したカラムがあるのですが、 客の依頼によりNOT NULL制約をどうしても外す必要が出ました。 ポスグレの場合、ALTER TABLEでNOT NULL制約を外すことって出来るのでしょうか。 ↓これやってもだめだったし。。。 ALTER TABLE テーブル名 ALTER カラム名 DROP DEFAULT; ちなみにPostgreSQL7.3です。誰か親切な方、ご教授ください。
76 :
74 :04/08/19 21:09 ID:yiIgPnC3
>75 あーーー、思いっきり見落としていました。w(笑って誤魔化す) でも、ご親切に教えていただいてホント感謝です。 ありがとうございました!
77 :
NAME IS NULL :04/08/20 12:02 ID:+q7I71HJ
マルチですみません。PostgreSQL 7.2.1 から 7.3.4 に移行しようとしています。 7.2.1 で使っているラージオブジェクトを含むデータを % pg_dump -b -F c DB_NAME > foo.out などとしてバックアップを取り、7.3.4 の方で % pg_restore -d DB_NAME foo.out として戻そうとすると、 pg_restore: [archiver (db)] could not execute query: ERROR: Column "COLUMN" is of type timestamp without time zone but default expression is of type text You will need to rewrite or cast the expression と言われてしまいます。 ラージオブジェクトを含まないデータなら、timestamp 型の記述を書き換えて restore すれば良いみたいなのですが、ラージオブジェクトを含むデータの場合は どう対処すれば良いでしょうか。お知恵をお貸し下さい。
www.postgresql.jp って落ちてないですか? ドキュメント調べてる途中でスゲー困った。
79 :
78 :04/08/20 12:39 ID:???
ああスンマセン…メンテで18:00(予定)まで停止だそうです。
80 :
77 :04/08/20 14:46 ID:+q7I71HJ
すみません。自己解決しますた。 問題のカラムが COLUMN | timestamp without time zone | default 'now'::text とあり、text型にキャストしてたのが原因でした。
>>71 php.iniのextension_dirは設定してある?
そこにPostgreSQLとの連携に必要なファイルはある?
extension=pgsql.soも記述されてる?
ちなみにPHP4.3.8をインストールした時の設定です↓
./configure --with-apxs=/usr/sbin/apxs --with-gd --with-jpeg-dir=/usr/lib
--with-xpm-dir=/usr/X11/lib --enable-bz2 --enable-bcmath --enable-mbstring
--enable-mbstr-enc-trans --enable-mbregex --enable-sigchild --libdir=/usr/lib/php
--includedir=/usr/include --enable-inline-optimization --with-pgsql=shared
--with-imap=yes --with-ldap=shared --with-mysql=shared --prefix=/usr --exec-prefix=/usr
--with-config-file-path=/etc/httpd --enable-safe-mode --disable-debug --with-zlib
--enable-debugger --enable-magic-quotes --enable-track-vars
83 :
NAME IS NULL :04/08/24 13:31 ID:UZpf6U5w
Win2K(MDAC2.8)にPostgreSQLのODBCドライバをインストールした。 レジにも書き込まれてるしsystem32にもdllあるのに、 ODBCドライバマネージャーの一覧に出てこない。 同じOSでMDACのバージョンの違うマシンには入った。 なんでだろ。。。
84 :
NAME IS NULL :04/08/24 17:51 ID:VHi/nTiZ
実行したSQLのログを出力する方法があったような気が したのですが、どうやってするのか忘れてしまいました。 知ってる方がいれば教えてください。 Redhat9 Postgresql7.4.2です
ftp.jp.postgresql.org がDNS引けない・・・
>>87 確かjp.postgresql.orgは、本家から何の通知も無く(?) 突然廃止になったんですよね。
今は、ftp.postgresql.jpです。
>>88 あ、そうなの?了解す。
本家サイトのmirrorには未だftp.jp.postgresql.orgでリンクされてんだけど。
クラッシュしなければ問題ないのでいいかな、なんて思ってる。
「クラッシュしても問題ないですよ」って客に言えるようになったのは嬉しい。
>>92 まじでそんなこと言うつもり?(ポカーン
PITR もサポートされたらさらに堂々と言えるようになるね。
>>94 オマエのほうが頭使ったほうがいいんでないかと。
まぁ、痛い思いをするのはオマエだろうから気にしませんが。
PITRサポート後って、日次バックアップはアーカイブログのバックアップ、月次メンテでフルバックアップって感じの運用になるんかね。 Powergres Plusは既にPITRサポート済みらしいけど、使ってる人いない?
いない。
Powergres買うやつなんているの?
>>99 知らずに買わされてる会社ならいくつか知っている。
>>99 Windowsネイティブ用ならね。
8.0が正式リリースされたら、そちらに乗り換えるけど。
102 :
NAME IS NULL :04/08/29 13:53 ID:ye7ZIKf/
select moe_title from anime_table; ってするとアニメの一覧が出てくるんですが、 ココロ図書館 ななか6/17 ガンダム ぽぽたん ・ ・ って出てくるんですが、ガンダム要りません こいつだけ表示させないであと一覧出すってことは、where 条件で可能なんでしょうか?
103 :
102 :04/08/29 13:58 ID:ye7ZIKf/
すみません、普通に != でいけました;; もともと適当に作って見ただけなんで、勉強してきれいにテーブルを作り直して見ます;
>>102 満月をさがして も入れといてください。
最終回はフランダースの犬の1000倍泣けます。
ガンダムにもいろいろあるんだし not like の方がいいんじゃないの。
いやむしろmoe_titleということならdelete from anime_table where like '%ガンダム%'すべきだと思う
「萌え」と「燃え」をきちんと分けてないのがいけないな。 テーブルを作り直すべきだ。
いやいや。燃える萌えアニメなるものが有るかも知れぬ。 スレの本分から逸脱する恐れがあるので、ここでは 萌えの定量化は敢えて触れない。 ∴列名を変更してから萌えのブーリアン列を追加すべきだ。 # ALTER TABLE anime_table RENAME COLUMN moe_title TO title; # ALTER TABLE anime_table ADD COLUMN moemoe boolean;
RDBMSとしての品位が下がるので別スレでよろしく。
>>109 ソフトウェア産業より外貨獲得に貢献しているジャパニメーションをなんと心得る。
>>110 そういうのも含めて、別スレでやれっつってんだよ、アニヲタ。
キモイからシッシッ!
自分がパソコンオタ扱いされているからって、他のオタを見下す発言イクナイ
>>112 問題すり替えないように。
一年前から粘着してるドラゴンボール厨かな?
>>113 違います。
しかし、SRA認定ネタで荒れたスレでRDBMSとしての品位とはねえ。
SRA=アニヲタの巣窟ということでFA?
>>116 いいんじゃない?
しかし、品位のあるレスだ。こういうSRAネタならいいんだよね?109、111。
119 :
NAME IS NULL :04/08/30 10:50 ID:yrxhZjat
アニヲタって怒るとこわいんだなw
>>117 振ってるのはおまいだろ。いい加減にしろ。
>>121 少なくともこの板はアニメオタクの板ではないからね。
123 :
NAME IS NULL :04/08/30 12:43 ID:uRCySAyP
ここはPostgreSQLの話題を話し合うスレです。
>>122-123 なるほど、SRAの悪口や誹謗中傷はPostgreSQLの話題だからOKと。
納得しますた。
126 :
NAME IS NULL :04/08/31 11:54 ID:1x66pMyY
SunのマシンにSolaris9、PostgreSQL7.4.5(ソースからビルド)の環境です。 他のクライアントから $ psql -h 10.0.2.34 -l とすると、 psql: FATAL: missing or erroneous pg_hba.conf file HINT: See server log for details. と出てしまって、困っています。JDBCドライバで接続しようとしても同様のエラーが出ます。 /usr/local/pgsql/data/pg_hba.conf は、 -rwx------ 1 postgres postgres 3429 Aug 30 23:15 pg_hba.conf となっていて、 # TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD local all all trust # IPv4-style local connections: host all all 127.0.0.1 255.255.255.255 trust host all all 10.0.2.0 255.255.255.0 trust # IPv6-style local connections: host all all ::1 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff trust と記述されてます。 PostgreSQLがインストールされているマシン上では、psqlをはじめとする各コマンドは正常に動きます。外部からの接続で失敗しています。 postgresql.conf のtcp_socket はtrue、sslはfalse、portは5432です。ちなみに、XServeで 同条件で稼働させたPostgreSQL7.4.5へは全く問題なく接続できてます。 他に何か見落としているところはないでしょうか。
>>126 IPv6の最後の行をコメントアウトするとどうかな。
128 :
126 :04/08/31 13:48 ID:???
ダメでした(;´д`) pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/postgresql.log としてログの記録を指定したんですが、エラーが出た状態でもログが記録されることはありませんでした。 んー、なんなんでしょう…
129 :
126 :04/08/31 19:31 ID:1x66pMyY
まだ解決に至っていないのですけど、Solarisで54321ポートがあいていないが故に 起きていると考えてます…。が、Solarisでこのポートをあける方法が分かりません(汗 ただ、telnet 10.0.2.34 5432とすると、 Trying 10.0.2.34... Connected to 10.0.2.34. Escape character is '^]'. って出ますので、Solaris側はあいているような気が…。 何かご存じの方アドバイスいただけるとありがたいです。
130 :
NAME IS NULL :04/09/01 00:44 ID:BBAHVEG1
モテない男板の「これって犯罪じゃね?」スレにて業者を攻撃しております。 鯖がベルギーにあるためなかなか落ちません。援軍よろしくおねがいします。
>>129 よくわからんが、アクセス元のIPっていくつよ?
134 :
NAME IS NULL :04/09/01 05:20 ID:9f0hWjDt
unique制約 解除したいんですけど ALTER の書式でどうやって書けばいいですか?
>>134 UNIQUE制約を解除する場合は、ユニークインデックス名でDROPする。
ALTER TABLE table DROP CONSTRAINT unique_key_index;
インデックスが必要な場合は、ユニークでないインデックスを作り直す必要あり。
136 :
NAME IS NULL :04/09/01 07:23 ID:gRxrGgi6
>>133 ローカルにある、10.0.2.25 でっす。いまだ解決せず、とほほな状態です(;´д`)
やっぱpg_hba.confの書式エラーっぽいね。 変な文字が入ってるとか。関係ない行があるとか。 1行ずつコメントアウトしながらやってみたら?
138 :
だいちゃん :04/09/01 11:24 ID:ob6m2bZ4
現在Cygwin 1.5.5 PostgreSQL 7.4.1 を使っています。 psql でselectした時、日本語の表示が出来ず文字コードが出力されてしまいます。 データ的にはあっているようで、PHPやODBC経由で表示させる分には正常に表示できます。 psql でselectした時だけうまくいきません。 日本語がこんな感じで表示されます。(<82>P<82>S<82>X) データはあらかじめCSV形式で作成したデータをテーブルにロードして作成しています。 回避する方法があれば教えて下さい。
>>138 SET client_encoding=SJIS;
ってしてみたらどうかな?
140 :
126 :04/09/01 13:09 ID:n/ozNoX0
>>137 うう、だめですた(;´д`) もう一回、いれなおしてみよっか…
なんだろなー?スペースやタブで問題ないですよね?全角になってることは無いはずなんですが…
141 :
NAME IS NULL :04/09/01 16:40 ID:EzTpTHma
次のような 2つのテーブルがあります。 採点テーブル(採点者ID、店ID、項目ID、点数) 集計テーブル(店ID、項目ID、点数合計、採点数) 店ID は 店マスタのID、項目ID は 項目マスタの ID で、採点テーブルはある店のある項目についての点数を記録します。 同じ店同じ項目でも、採点者が何人もいるので、レコードは複数になります。 集計テーブルは、ある店のある項目についての点数とその数を集計したものを記録します。 ここで集計テーブルの内容を更新するために、次のようなSQL文を書きましたが、期待する結果が得られません。 UPDATE 採点テーブル SET 点数合計=SUM(T1.点数), 採点数=COUNT(T1.採点ID) FROM 集計テーブル T1 WHERE T1.店ID = 採点テーブル.店ID AND T1.項目ID = 採点テーブル.項目ID 正しくはどのようなSQLを書いたらよいのでしょうか。
>>141 集計テーブルを更新するんだよな?とりあえず
UPDATE 集計テーブル
...
FROM 採点テーブル T1
...
の間違いじゃないか?
143 :
141 :04/09/01 17:19 ID:???
>>142 うわーごめんなさい!
UPDATE 集計テーブル SET 点数合計=SUM(T1.点数), 採点数=COUNT(T1.採点者ID) FROM 採点テーブル T1
WHERE T1.店ID = 集計テーブル.店ID AND T1.項目ID = 集計テーブル.項目ID
です。
ここに書いたSQL文のみの誤りで、本物は上記のように書けてます。
144 :
141 :04/09/01 19:28 ID:???
結局 UPDATE の FROM は利用しないで、各カラムごとにサブクエリを使用することにしました。 でも、UPDATE に FROM を指定したときの挙動はぜひ知りたい項目なので、ご存知の方がいましたら 教えてください。
なんでかはよくわからんが、 UPDATE 集計テーブル SET 点数合計=T1.tensuugoukei, 採点数=T1.saitensuu FROM (SELECT 店ID, 項目ID, SUM(T1.点数) as tensuugoukei, SUM(T1.点数) as saitensuu FROM 採点テーブル GROUP BY 店ID, 項目ID) AS T1 WHERE T1.店ID = 集計テーブル.店ID AND T1.項目ID = 集計テーブル.項目ID みたいな感じだとうまく動きそう。
147 :
141 :04/09/02 02:00 ID:???
>>145 それもダメでした・・・
集計テーブルの全行が同じ値に更新されます。
その値を見るに、ある特定の店ID、項目IDの場合の採点テーブルのSUMっぽいです。
恐らく T1 のサブクエリが、集計テーブルの行ごとに実行されるわけでは無く、最初にSUMが求められ、
それを使い回されているのかなぁ、といった感じです。
ちなみに、こんなメッセージも出ます。
NOTICE: Adding missing FROM-clause entry in subquery for table "集計テーブル"
ついでに
>>141 の挙動について補足しておきますと、集計テーブルのどこか一行のみが更新され、
その値は採点テーブルの全行の SUM っぽいです。
やはり WHERE 句が一度のみ評価され、その一番最初に該当した行のみが UPDATE された、って
ことなんでしょうかね。
ところで、FROM句でサブクエリをテーブルに見立てる書き方ができるんですね。初めて知りました。
思わぬ収穫があってよかったです。ありがとうございます。
でも、これって常識なんですか?
間違ってました!
ええと、
>>145 のアイディアの読み違いで、ちょっと違うSQLを実行していました。
WHERE句を、サブクエリ内に書いてしまった結果が
>>147 に書いた内容です。
今サブクエリの WHERE句を
>>145 のアイディアの通り、UPDATE の WHERE句に移したところ、
うまく動きました!
ありがとうございました。
>>147 145じゃないが
>>145 でうまくいくはずだと思うけど。
>でも、これって常識なんですか?
FROM句のサブクエリのこと? なら、常識です。
あら、遅かったw
>>149 あらま、やっぱり常識なのですか。
いや実は、自分はSQLに関してきちんと教育を受けたわけでもなく、つまみ食いの独学でやってきちゃったので、
こういう常識的なことがすっぽり抜けてたりします。
そんなわけで、また新しい世界が開けた気がしています。
今回は大変利用価値の高い情報をゲットして、大満足です。
152 :
145 :04/09/02 12:54 ID:???
俺は145だが、ここでサブクエリが使えるのは正直初めて知ったよ(w SELECT文のFROM句でサブクエリが使えるのは普通だけど、 UPDATE文のFROM句っていうのはPostgreSQL独自のものだしね。
>UPDATE文のFROM句っていうのはPostgreSQL独自のものだしね。 T-SQL(Sybase,MSSQL)は、とうの昔からあったよ。
155 :
だいちゃん :04/09/03 11:07 ID:vHZHjt3I
138です。
>>139 さん
> SET client_encoding=SJIS;
> ってしてみたらどうかな?
だめでした。(^_^;
Windows版8でUNICODEでDBを作って、UTF-8のPHPファイルからDBに日本語を登録したんだけど 何故か、日本語で検索かけても全く引っかからないし、同じ日本語データを複数入れて select c_name from c_table group by c_name; ってやっても全データが返ってくる。バグか、それとも設定がおかしいのか、そもそも UTF-8がサポートされていないのか・・・。
159 :
158 :04/09/03 17:21 ID:???
php.iniのmbstring,http_inputもUTF-8にしたのが問題だったらしい。 UTF-8のはずではあるのだけれど、autoにして事無きを得ました。
160 :
158 :04/09/03 17:26 ID:???
と思ったら、文字によって一致したり、しなかったりするみたい・・・。 だめぽ。
161 :
NAME IS NULL :04/09/03 18:18 ID:sBqoyllH
webベースの検索スクリプトを作るとして、検索結果を 1ページあたり 10件くらいにまとめて、ページ送りの機能を付けるとします。 こういった場合、次のような方法を取ってみたのですが、もっといい方法はあるでしょうか? SELECT ・・・ FROM ・・・ WHERE ・・・ ORDER BY ・・・ OFFSET $ofs LIMIT 10 # $ofs は、出力しようとしてるレコードのオフセット値で、ページ送りボタンによって増減されます この方法で気になるのは、やはりパフォーマンスです。 上記のやりかただと、1ページ表示しようとするごとにレコードの抽出、およびソートの過程が入るわけで、 しかもその結果は、毎回同じものになるわけです。 できればレコードの抽出やソートは一度のみにして、あとは必要な部分を切り出すだけ、 というような処理にする方法はあるでしょうか。 もちろん効率の良い他の方法があれば、それでもいいです。 さらに、同時に検索ヒット数も取得したいのですが、現在は上記レコード取得用の SELECT の他に、 カウント取得用の SELECT を行っています。 ようするに、同一の検索条件の SELECT を 2度行っています。 この点についても、もっとエレガントな方法はあるのでしょうか。 このスクリプトは、同時に数十人からアクセスされる可能性があり、テーブルのレコード数は数万くらいだとします。 使用言語は PHP ですが、言語には特にこだわりがありません。 現時点で問題が出ているわけではありませんが、どんなやり方があるのかは知っておきたいです。 いいアイディアありましたら、教えてください。
メモリ(PHPのセッション)にブチ込むか 毎回sql投げるか 二つに一つじゃないの?
>>162 セッションに入れることも検討しましたが、それだと結果数が多くなったときに何か問題が起こりそうなのと、
ブラウザを複数画面開いた場合の対応を考えなくちゃいけないのとで、見送りました。
でも、これは結構一般的な手法なのでしょうか?
ちなみに、google みたいな検索エンジンはどんなふうにしてるんでしょうね。
ページごとに毎回検索してるんでしょうか。
いや、google 等が RDB かどうかは知りませんが。
>163 アレは参考にならん。 何しろ数百台のマシンのメモリ上に展開して持っているから。
165 :
NAME IS NULL :04/09/03 23:27 ID:04GGoOZS
166 :
Aya :04/09/04 02:35 ID:0bAjw2RU
168 :
NAME IS NULL :04/09/04 10:28 ID:A71MCy6c
すみません、ご存知であれば教えていただきたいのですが、 pg_dumpでバックアップするときに pg_dump: query to obtain list of indexes failed: ERROR: syscache lookup for index 1521522 failed というエラーが吐かれるのですが、 これってどうやったら対処できるかご存知の方いないでしょうか?
169 :
NAME IS NULL :04/09/04 12:54 ID:DURbHXe3
テーブル毎に grant 出すの面倒なんですが、DB レベルでの grant とか、特定の DB 内の全テーブルに grant を自動発行させるとか、できませんでしょうか。 pg_dump でバックアップするために、読み取り専用アカウントを作ってあるの ですが、create table 後に grant を忘れると pg_dump が落ちるんですよね…。
170 :
NAME IS NULL :04/09/04 21:59 ID:4WdYESPM
PostgreSQLのバージョンを確認するにはどうしたらいいのでしょうか? dataフォルダの中のPG_VERSIONには7.4と書かれていましたが 7.4.xじゃないのでそれがわかる方法があれば教えてください
psqlにてselect version();
174 :
NAME IS NULL :04/09/05 04:49 ID:cFYf62B5
以下のようにResultSetが開いてる状態で、別のResultSetを取得しようとすると ぬるぽが返されてエラーになってしまいますが、これは仕様なんでしょうか? 環境はRedHat9&PostgreSQL7.4.2です Connection con = DB.getConnection(); Statement s1 = con.createStatement(); ResultSet rs1 = s1.executeQuery("SELECT * FROM table1"); while(rs1.next()) { String col = rs1.getString("col"); System.out.println(col); Statement s2 = con.createStatement(); ResultSet rs2 = s2.executeQuery("SELECT * FROM table2"); while(rs2.next()) { String col2 = rs2.getString("col"); System.out.println("\t" + col2); } rs2.close(); s2.close(); } rs1.close(); s1.close(); con.close();
175 :
174 :04/09/05 05:05 ID:cFYf62B5
スタックトレースは以下のような感じです ----------------- org.postgresql.util.PSQLException: Connection is closed. Operation is not permitted. at org.postgresql.core.QueryExecutor.executeV3(QueryExecutor.java:115) at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:100) at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:43) at org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:517) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:50) at org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:298)
>>174 それはぬるぽなのかと小一時間(ry
Operation is not permitted.
操作が許可されていない。
phpからアクセスしてるんだけど connectしたあと 業務ロジックでエラーで終了するときって closeせずに抜けてるんだけどまずい? いちいち書くのも面倒で・・・
178 :
174 :04/09/05 15:26 ID:cFYf62B5
>>176 呼び出しもとの方ではNULLが返されてぬるぽに
なるみたいです。
>Operation is not permitted.
>操作が許可されていない。
ですが、08004のエラーコードが返されていて
実際は、コネクションは生きているのにJDBCとDBの間の
接続がDB側から?切られてるぽいのです
てか、
>>174 みたいな入れ子になったデータ取得ってできてます?
>>161 RDB から返ってきた結果をキャッシュする。
181 :
161 :04/09/06 11:06 ID:???
>>180 そのキャッシュの方法として、おれならこうするってアイディアはありますか?
自分だったら、キャッシュ管理用に次のようなテーブルを作って
CREATE TABLE FINDCACHE(
WORD TEXT NOT NULL,
FILENAME TEXT NOT NULL,
ADATE TIMESTAMP NOT NULL
);
CREATE INDEX FINDCACHE_WORD ON FINDCACHE(WORD);
検索結果はとりあえず検索対象テーブルの PK だけを抽出してそれをテンポラリファイルに格納し、
そのときの検索ワード及びソート条件をテキスト化したものを上記テーブルの WORD に、
テンポラリファイル名を FILENAME に、そのときの日時を ADATE に格納して、
検索時には FINDCACHE を WORD で検索して、テンポラリファイル名を得たら、ADATEを
そのときの時刻に更新する、なんて処理をしてみようかなと思います。
で、cron かなんかで ADATE を見て、古くなったキャッシュはたまに削除する、みたいな。
テンポラリファイルは PK のみの記録なのでレコード長が固定ですから、fseek で好きな位置の
結果が簡単に取ってこられそうです。
で、この PK の一覧を検索対象テーブルの SELECT の WHERE句で、IN を使ってまとめて
指定すればいいのかな、と。
この処理で気になるのは 2点。
1点は、毎回 ADATE の更新が入る、って点です。
PostgreSQL って、VACUUM するまでレコードの残骸が残るそうで、頻繁に検索されたときに
DB内にゴミがすごい勢いでたまっていくのかな、などと心配になります。
もう 1点は、IN でキーをまとめて指定した場合、また ORDER BY を指定しないと順番が
ばらばらになってしまう点です。
この辺は、プログラム側で PK の並びのリストを持ってますから、うまいことすればうまいこと
できそうですけどね。
このアイディアのダメな点とか、改良案とか、その他アイディアなどはありますか?
182 :
NAME IS NULL :04/09/06 17:09 ID:NN9rGgOF
PostgreSQL歴1ヶ月ぐらいの超初心者です Windows2000Server上でCygwin+Tomcat 4.1.27+PostgreSQL7.4.3で構築し、 JAVAから操作しようとしているのですが、 \tomcat\common\lib内に、JDBCドライバのpostgresql743.jarをいれ、 JAVAで、ドライバクラスを読みこむところでエラーがでてしまいます コンパイルは通るのですが、実行しようとすると Class.forName("org.postgresql.Driver"); で、 ClassNotFoundException のエラーがでるのですが、何か解決策はないでしょうか
classpath を見直す。 本当に \tomcat\common\lib 以下が読まれているのかどうかを確認する。 postgresql743.jar が壊れていないかを確認する。 それと最も重要なことだが、 「超初心者」と書けば何か教えてくれるだろうという腐った根性も見直すべき。
>>181 というか実際
>>161 の方法でパフォーマンス的に問題があるのかと。
たかが数万レコードでしょ?
あと、キャッシュやるとして、データが更新されることはないの?
ないなら、Smartyみたくhtmlレンダリングしちゃったものを
キャッシュしとけば?
>>184 結果としてヒットし得るのは数万レコードですが、検索条件がたくさんのテーブルを結合したものなので、
ちょっと気になります。
ソート条件にも関数を使うケースがあり、その点でも一度求めた結果はなるべく使いまわしたいです。
ただ、現時点ではパフォーマンス的に問題が出ているわけではないので、こちらの事情は置いといて、
今回は一般論としてどうなってるのかを知りたいのです。
キャッシュを使うとして、データの更新は発生する可能性はあります。
データ更新のタイミングはわかっているので、そのタイミングでキャッシュをクリアしてしまう、
ってのもアリだと思っています。
ですがそれはとりあえず置いといて、手法としてどんなものがあるかを聞いてみたいです。
というか、検索結果画面にはほぼ必ずページ送りボタンが付くと思うのですが、みなさんその機能を
どんなふうに実装していますか?
毎回同じ検索条件で検索しなおしてますか?
>>186 全レコードにシリアル番号を振り、検索結果としてそのシリアル番号の
集合全体を保持しておく。あるいは、X番目まで表示させた時には、X
番目のレコードに該当するシリアル番号を保持しておき、該当レコード
の次のレコードから改めて検索を始める。検索対象によっては、データ
構造を工夫することもある。(Suffix Array とか。)
つうか、数万レコードならどうにでもなるんじゃ?
遅いようならキャッシュで問題ないでしょう。
>>187 >全レコードにシリアル番号を振り、検索結果としてそのシリアル番号の
>集合全体を保持しておく。
これがいわゆるキャッシュだと思っていたのですが、それでOKですか?
シリアル番号は PK でもいいですよね。
このキャッシュを実現する方法として、どんな手法を使ってますか?
自分でも
>>181 に書いてはみたんですけど。
>あるいは、X番目まで表示させた時には、X
>番目のレコードに該当するシリアル番号を保持しておき、該当レコード
>の次のレコードから改めて検索を始める。
このやり方に興味があります。
シリアル番号でソートされている場合は、次のレコードから、という条件は簡単に与えられますが、
そうでない場合はちょっと面倒ですよね。
たとえばテーブル FOO について、シリアル番号をカラム PK として、カラム A、B、C の順でソートしてる場合、
PK=$pk のレコードの次以降を検索する場合には
SELECT T1.* FROM FOO T1, FOO T2
WHERE T2.PK=$pk AND T1.PK<>$pk AND (T1.A>T2.A OR (T1.A=T2.A AND (T1.B>T2.B OR (T1.B=T2.B OR T1.C>=T1.C)))
ORDER BY T1.A,T1.B,T1.C
みたいになるのかな、と思いますが、こんな感じで合ってますか?
ただこの書き方だと、SQLが複雑になりがちなので、シンプルな検索以外には使いたくないな、というのが正直なところです。
テーブルの結合や関数等よる値の変換を含んでいた場合、とても大変そうです。
>>188 そーいうことはやったことないですが、
> SELECT T1.* FROM FOO T1, FOO T2
> WHERE T2.PK=$pk AND T1.PK<>$pk AND (T1.A>T2.A OR (T1.A=T2.A AND (T1.B>T2.B OR (T1.B=T2.B OR T1.C>=T1.C)))
> ORDER BY T1.A,T1.B,T1.C
とかやるくらいなら、$pkではなくA, B, Cの値をアプリで保持しておけば
簡単なんじゃないでしょうか。
あと、行値コンストラクタが使えるんじゃないかな。
WHERE ... (T1.A, T1.B, T1.C) > (T2.A, T2.B, T2.C)
みたいな書き方ができたと思います。
あと、検索結果のprimary key集合をキャッシュするなら、
create table cache (
seach_word text,
seq serial,
p_key int, -- (?)
primary key (word, seq)
);
みたいなかんじでしょうか。seqはソート用。本当はseach_word
毎に通番をつけてもいいんだけど、それだとserial 使えないから
面倒。serialなら
insert into (seach_word, p_key) select ...
で一発だもんね。
ところでこれって、同じキーワードで検索される可能性が
どれくらいあるのかも、キャッシュがどれくらい有効かの判断
に影響しそうですね。
190 :
187 :04/09/07 20:37 ID:???
>>181 プライマリキーで用が足りるならそれでいいんじゃないの。別ファイルにせず
にテンポラリなテーブルでも作る方がいいと思うけど。あと ADATE とかはファ
イルの属性を見るだけでいいんじゃないかと思った。
> SELECT T1.* FROM FOO T1, FOO T2 WHERE T2.PK=$pk AND T1.PK<>$pk AND (T1.A>T2.A OR (T1.A=T2.A AND (T1.B>T2.B OR (T1.B=T2.B OR T1.C>=T1.C))) ORDER BY T1.A,T1.B,T1.C
びっくりするほど贅沢なコードだな(w
そもそも
>>187 に挙げた解は一般論を述べたもので、「最後のシリアルを保
存する方法」は SQL ではあまり効率よくはならない。
>>161 とあまり変わらない。
下手にトリッキーな QUERY を書くより RDBMS のオプティマイザに期待する方
がいい。まあ、
SELECT * FROM sometable WHERE serial > $savedSerial AND $condition ORDER BY $order LIMIT 10
<?php ..update $savedSerial.. ?>
の方が、
SELECT * FROM sometable WHERE $condition ORDER BY $order OFFSET $offset LIMIT 10
よりも速くなるのは自明だけど。
どうしても SQL で効率良く書きたいのであればカーソルでも使うことになる
けど、オープンされたカーソルを保持したまま応答するようなコードを php
で書くのは止めた方がいいと思う(w
いずれにしても、「解く方法」ではなく「効率よく解く方法」を知りたいので
あれば、まず問題の規模と要件ををちゃんとおさえないと話が始まらない。
ユーザが必要とする応答が数万レコード全てもしくは大半ならば、たぶん
キャッシュ用のテーブルを作るべき。でも本当に必要なのはもっと小さい
セットなんでしょう? ならば、いかにして応答件数を減らし効率よい検索を
提供するかを検討する方が、ずっといい。
>>189 >あと、行値コンストラクタが使えるんじゃないかな。
> WHERE ... (T1.A, T1.B, T1.C) > (T2.A, T2.B, T2.C)
>みたいな書き方ができたと思います。
こんなことができるんですね!
と思ってさっそく実験してみたら、期待している動作とはちょっと違いそうです。
SELECT * FROM foo WHERE (A,B,C)>=(1,2,3);
と書いたとき、自分が期待するのは
SELECT * FROM foo WHERE A>1 OR (A=1 AND (B>2 OR (B=2 AND C>=3)));
なんですが、実験した結果では
SELECT * FROM foo WHERE A>=1 AND B>=2 AND C>=3;
のように動作するっぽいですね。
残念。
>>190 >びっくりするほど贅沢なコードだな(w
とおっしゃいますが、
> SELECT * FROM sometable WHERE serial > $savedSerial AND $condition ORDER BY $order LIMIT 10
このコードでは、$order の内容によって serial の並びが番号順にはならないので、
serial > $savedSerial の条件ではだめな気がします。
いや、たしかに
>>181 のは贅沢なコードだと思いますけど、このアプローチでは
こういったクエリにならざるを得なそうです。
でも、これやるくらいならおとなしく OFFSET を指定した方が良さそうですね。
どっちを取るかは、レコード抽出のコストはそんなに変わらなそうなので、ソートのコストを比較してみて
どうなるか、ってところだと思います。
>いずれにしても、「解く方法」ではなく「効率よく解く方法」を知りたいので
>あれば、まず問題の規模と要件ををちゃんとおさえないと話が始まらない。
ごもっともです。
でも、なんでこんなことを聞いたのかと言えば、自分の作ってるものを最適化したいというよりも、
他の人がどんな手法を使ってるのかを知りたかったのです。
この規模ならこんなことをしてるよ、みたいな、できるだけたくさんのやり方を聞いてみたかったので、
あえて詳しい条件は提示していません。
だから、毎回検索する、って解でも OK で、ただしこれはこういうときには使えなさそうだ、みたいな
ディスカッションもしてみたいな、ってところです。
あと付け加えると、検索を引き継ぐ方法があるのに、自分はそれを知らないばかりに毎回
検索しているのではないか、という不安もありました。
だけど、簡単に検索結果を引き継ぐという方法は無さそうなので、その点では安心しました。
# カーソルをオープンしっぱなしで引き回すってのはナシって方向で・・・
ところで、キャッシュをするとしたとき、自分は
>>181 でテンポラリファイルを使うという方法を選択しました。
これは、PK の集合をソートした通りの順で保存でき、seek することによって好きな位置に効率よく
アクセスできるからです。
>>189 にある方法は、データがデータベース内に完結して、メリットがとても大きいです。
なにより、insert 一発でキャッシュが出来上がるってのがすばらしいですし、キャッシュを読み出して
実際のレコードを検索する手順が SQL 一発でできるのもすばらしいです。
しかし、複数キャッシュが同時に生成される場合など、seq が必ずしも連番になる保障が無いので、
任意のオフセットを求めづらい点がありそうですが、解決できるでしょうか。
また、テンポラリファイルにくらべればディスク容量も食うでしょうし、アクセスも遅そうです。
この辺の選択理由とか、そういった意見も聞いてみたいかも。
#こういった質問の仕方がスレの趣旨に合わなかったりしましたら、誘導してくれるとありがたいです。
> > SELECT * FROM sometable WHERE serial > $savedSerial AND $condition ORDER BY $order LIMIT 10 > > このコードでは、$order の内容によって serial の並びが番号順にはならないので、 > serial > $savedSerial の条件ではだめな気がします。 あー、ミスった。 $order が数通りなら、$order の種類毎にシリアル番号をふっておけばよいと 思う。DBのアップデートが頻繁に行われるのであれば「シリアル」ではない 番号を工夫しながらふる必要がある。(二分木を育てるイメージ) …「続きを見る」の最適化のためだけにそこまでやるのもアホらしいけど。
194 :
189 :04/09/08 13:50 ID:???
>>191 ありゃほんとだ。昔は
> SELECT * FROM foo WHERE A>1 OR (A=1 AND (B>2 OR (B=2 AND C>=3)));
のように動いてたと思うんですが、いま手元の8.0beta1では
> SELECT * FROM foo WHERE A>=1 AND B>=2 AND C>=3;
のようになってますね。SQL92的にもこっちが正解らしく
直されたようです。
195 :
NAME IS NULL :04/09/08 17:19 ID:7jOMOMHw
こんなテーブルがあったとします。 CREATE TABLE test ( number INTEGER ); んで、バージョン7.1.3で、 select * from test where number = ''; は、エラーが起きません。 でも、バージョン7.4とか最近のは、 ERROR: invalid input syntax for integer: "" と、エラーになります。 これ、なにか設定で、エラーの縛りをゆるくしたりってできませんか。 もし、頻出質問だったらすみません。 いちおう、調べてみたんですが、手掛かりなくて。 よろしくおねがいします。
197 :
174 :04/09/08 19:59 ID:???
>>197 入れ子になったデータ取得自体は問題なくできる。
おまいがコピペしたソース以外のどこかでやらかしているんじゃな
いかと思う。(だからレスが付かないのかもしれない)。
> ですが、08004のエラーコードが返されていて
> 実際は、コネクションは生きているのにJDBCとDBの間の
> 接続がDB側から?切られてるぽいのです
これは妄想?あるいはなにをどう確認したの?
199 :
195 :04/09/08 22:27 ID:h2p7Fopo
>>196 レスありがとうございます。
pgsql/data/以下の各種設定ファイルは、ざっと見たんですが、
それっぽいのがなかったんです。
でも、もいちど、じっくり見てみます。
それとも素直にバージョン落とした方がいいのか。。。(´-ω-`)
200 :
174 :04/09/08 23:40 ID:???
>>198 鯖負荷が高いとなるっぽいんですよね
うまく逝くときと逝かない時があるのでどこを
どう調べたらいいかわからんです
>これは妄想?あるいはなにをどう確認したの?
>>175 のトレースをおいかけてったらそうなってますた
>>200 PostgreSQL側には何もログは残ってないんですか?
っつーか、
>>200 > 鯖負荷が高いとなるっぽいんですよね
> うまく逝くときと逝かない時があるのでどこを
> どう調べたらいいかわからんです
なのに、何故
>>178 > てか、
>
>>174 みたいな入れ子になったデータ取得ってできてます?
という質問になるのかがわからん。
ひょっとしてこれが釣りというやつか?
203 :
174 :04/09/09 20:16 ID:???
>>201 logは残ってないっぽいです。
syslogに出てる分と、-lで指定したところと両方みてますけど
他にあります?
>>202 原因がサパーリわからんのでいろいろ調べてるんですが、
エラーコード調べたらPostgreSQLのオフィシャルML?ぽいところに
そんな記述があって似たような構造なので
どこを調べたらいいかわからんのでいろんな可能性を
聞いてます
204 :
202 :04/09/10 02:30 ID:???
語録
> 呼び出しもとの方ではNULLが返されてぬるぽに
> なるみたいです。
> 実際は、コネクションは生きているのにJDBCとDBの間の
> 接続がDB側から?切られてるぽいのです
> 鯖負荷が高いとなるっぽいんですよね
> エラーコード調べたらPostgreSQLのオフィシャルML?ぽいところに
> そんな記述があって似たような構造なので
おまいがやった操作と、おまいが見た事実を書け。
なぜ「ここのURLを見たらこう書いてあったのでこう判断した」
と書けない。
>
>>175 > のトレースをおいかけてったらそうなってますた
トレースを追うと、エラーコードや、実際にはコネクションが
生きてるのにDB側から切断されていることがわかるのか?
205 :
174 :04/09/10 03:58 ID:???
PostgreSQL8betaをWindowsにインストールするにはどうしたらいいですか?
>>206 downloadして、インストールしたらいいよ?
209 :
202 :04/09/10 15:41:34 ID:???
>>205 だから、それを見てなぜ、エラーコードや、実際にはコネクションが
生きてるのにDB側から切断されていることがわかるのか?
と罵倒しつつ一応調べてみたけど、
at org.postgresql.core.QueryExecutor.executeV3(QueryExecutor.java:115)
というのは、
s = con.createStatement() した後に con.clcose() して
s.executeQuery() すると同じエラーが出るね。
スレッドが絡んでたり、コネクションが意図しないところで
close()されてたりしない?
210 :
174 :04/09/10 20:47:17 ID:???
>>209 >スレッドが絡んでたり、コネクションが意図しないところで
>close()されてたりしない?
と思って見てはいるんですが、意図してないところのcloseなんて
どこでされてるのか検討もつかないです
close自体はfinallyで最後に閉じてるだけなので、あるとすれば
別のスレッドからぽいんですけど、どうやったらわかるでしょうか?
>>210 以下は素人がググって推測しただけなんで、そこんとこは割引で。
ttp://java.sun.com/j2se/1.3/ja/docs/ja/api/java/sql/Statement.html ttp://java.sun.com/j2se/1.3/docs/api/java/sql/Statement.html > Statement オブジェクトごとに 1 つの ResultSet だけがいつでもオープンできます。
> したがって、1 つの ResultSet オブジェクトの読み込みが、別の読み込みにより割り込まれると、
> 各々は異なった Statement オブジェクトによって生成されたことになります。
> すべての文の execute メソッドは、
> 文の現在の ResultSet オブジェクトでオープンされているものが存在すれば、
> それを暗黙にクローズします。
「暗黙にクローズします」、ということから逆に考えて、
引数なしのcreateStatement()で作ったs1とs2が、じつは同じものだったとしたら、
>>174 の
>...
>ResultSet rs2 = s2.executeQuery("SELECT * FROM table2");
→ここで、rs1が「暗黙にクローズ」されているのではないでしょうか?
>while(rs2.next())
>...
引数ありの
public Statement createStatement(int resultSetType, int resultSetConcurrency)
を使えば、多重化できるよーな気がしますが、そういうもんなんでしょうか?
212 :
174 :04/09/12 10:48:04 ID:???
>>211 いけそうですね
ちょっと試してみます。ありがとうございました
213 :
NAME IS NULL :04/09/12 18:33:09 ID:o1IBNX1v
勉強用にサンプルデータが欲しいのですが 無料で手に入れられるデータはありませんか?
うわぁ、聞いて良かった。 214さん、215さんありがとうございました。 早速勉強を開始します。
217 :
NAME IS NULL :04/09/12 22:59:13 ID:Tg/C9pCP
一つのサーバにTomcat+PostgreSQLが入ってる状態で 認証時にパスワードをMD5又はCryptで暗号化する意味はありますかね?
>>214 実は郵便局のデータで見れば見るほどいい加減なんだけどね。
地方によって書き方ばらばらだったり
いろんな省略があったり
データー中に説明の文言があったり
複数行に渡ってたり
一行一レコードと単純にみなすだけなら問題ないけど
219 :
GRE君 :04/09/13 13:26:46 ID:JBMHKhCh
市町村合併により住所の変更を行おうとしました。例として横浜市が海港市になったとします。で下記の命令を発行しました。 *テーブル名:tbl_inf、フィールド名:home_adrs => update tbl_inf set home_adrs = translate (home_adrs,'横浜市','海港市'); 「横浜市」→「海港市」はこれでできました。 しかしついでに「横浜市横田区」→「海港市横田区」となってほしいのが「海港市海田区」になってしまいました。 どうも1文字ずつ検索でかけて1文字ずつ置換しているようです。これを「横浜市」→「海港市」だけ置換できるようには、どのような構文を書いたらいいのでしょうか?
220 :
NAME IS NULL :04/09/13 13:34:09 ID:RV9U7DMy
同一のホスト(Postgresql)で動いている 「A」と「B」の二つのデータベースを同時に参照したいのですが SELECT ATable.Price, BTable.PCS FROM A.TABLE AS ATable LEFT JOIN B.TABLE AS BTable ON ATable.ID = BTable.ID このように違うDB同士のテーブルの結合を実行したいのですが 何か良い方法はありませんか? DBを切り替えないで 別々のDBの値を同じSQLで参照したいのです。 宜しくお願いします。
>>219 update tbl_inf set home_adrs = translate (home_adrs,'横浜市','海港市') where home_adrs like '横浜市%';
223 :
NAME IS NULL :04/09/13 13:57:00 ID:RV9U7DMy
>>222 やっぱり無理だよな・・・。
一つのDBにまとめろという事ね。
しかし、別々のDBで管理したほうが都合が良い案件なんだす。
例えるなら、本社と営業所が沢山ある会社のDBを構築するときに
各々の営業所を別々のDBにしたいのよ。
でも、それぞれのDBの間にもリレーションが存在するので
データベースを飛び越えたテーブルの結合がやりたい感じ。
仕方ないから、一つのDBにするよ。
pgadmin3がセグりまくり。 現時点では使い物にならん。
227 :
220 :04/09/14 18:09:14 ID:???
229 :
NAME IS NULL :04/09/15 10:07:39 ID:q473lqGr
postgresqlで、UNIXタイムスタンプを"YYYY/MM/DD"みたいな形式で取り出す関数ってあります? 探してみたんですけど、見つからなかったので。
>>229 関数じゃないけど、
SELECT '1970/01/01'::TIMESTAMP + '1095211305 seconds'::interval;
231 :
NAME IS NULL :04/09/15 10:39:23 ID:q473lqGr
>>230 それを、普通のSelect文にサブクエリとして入れてあげれば良いわけですね。
試してみます。
ありがとうございました。
232 :
231 :04/09/15 16:43:48 ID:q473lqGr
すみません、試行錯誤を繰り返したのですけど、 SELECT '1970/01/01'::TIMESTAMP + '1095211305 seconds'::interval; の、『1095211305』の部分をどうしてもデータベースの値にする事が出来ませんでした。 『TIMESTAMP + lastlogin' seconds'::』のようにすると 『ERROR: type "lastlogin" does not exist』といわれてしまいます。 どなたか、よろしくお願い致します。
たぶん、 SELECT '1970/01/01'::TIMESTAMP + (lastlogin || ' seconds')::interval; かな。
234 :
プー太郎 :04/09/15 22:28:00 ID:FWFbSHGU
Fedora Core2 に postgreSQL をインストールし、 JDBCドライバーの postgresql-jdbc をインストールして、 同じpcよりjavaプログラムでデータベースに接続してみました。 で、成功したのですが、以下の設定をしなければ接続できませんでした。 postgresql.conf ファイルに以下の行を追加 tcpip_socket = true pg_hba.conf ファイルに以下の行を追加 host all all 127.0.0.1 255.255.255.255 trust localhostより接続していてもやはり上記の設定は必要名のでしょうか? どなたかご存知ありませんか?
SELECT文で詰まっています・・・どなたか助けてくださいm(_ _)m A(整数)、B(タイムスタンプ)という二つカラムがあるテーブルにおいて Bが2004年の8月のレコード内でAが何種類あるのか出そうとしてます。 GROUP BYとHAVINGを使うということはなんとなく分かるんですが 期待する結果が出ません。どうかお願いします。
>>235 SELECT count(DISTINCT a) FROM table WHERE date_trunc('month',b)='2004/08/01 00:00:00'::TIMESTAMP;
238 :
NAME IS NULL :04/09/16 16:20:36 ID:35CLisq1
あのー、MS-AccessとpostgreSQLをODBC接続するんですが、 この通信を暗号化する方法ってありませんかね?
>>238 SSHのforwardingじゃだめ?
241 :
NAME IS NULL :04/09/16 20:12:32 ID:35CLisq1
あああ、portfowardingがありましたね。 すいません。対応してるSSL対応のODBCとか無いのかと拘って まったく気付きませんでした。_| ̄|○ ありがとうございます。バッチリいけました。m(_ _)m
242 :
NAME IS NULL :04/09/16 20:14:27 ID:35CLisq1
>>240 ありがとうございます。今回はTeraTermでイキました。
こんなのもあるんですねー。知りませんでした。ありがとうございます。
243 :
NAME IS NULL :04/09/23 20:21:25 ID:se1pVqkJ
copyコマンドってpostgresアカウントで実行されるのかな? rootで実行しても/root/ディレクトリに書き出し、読み書きができません。
244 :
NAME IS NULL :04/09/23 21:15:10 ID:xu7mwazl
JDBCでint型のカラムの値を取得するメソッドって getColumnTypeでいいんでしょうか? よろしくお願いします。
245 :
NAME IS NULL :04/09/24 00:19:13 ID:ZDjKs/zr
設計のことなのですが、個人の情報の中に例えば都道府県などの項目を複数選択できるようにしたいのですが、その場合考えられる方法が (1)同じテーブル内に都道府県というフィールドを一つ作ってその中で カンマ区切りなどで保持 (2)同じテーブル内で1−47の県のフィールドを作ってフラグで保持 (3)別テーブルでユニークなIDプラス(2)の感じ って感じなのですがどの方法が良いと思いますか? (1)はmysql向けでpostgresには向いてないと思いますが、、 初歩的な質問ですいません、、
>>245 どういう回答があるか、初心者の漏れも興味深く見守っているとして、
245が挙げた(2)の変形(2')として、
(2') bit(47)のフラグ用カラムで保持
ってのが、容量的に一番有利だと思う。245はそのテーブルが何人分を扱う予定で、
呼び出しや更新の頻度や、どういうインターフェースで読み書きするか
書いた方が、いいんじゃないのかな。
根拠なしに感覚で漏れがやるとするなら、100人以下だったら都道府県別にbit(1)
のカラムを用意して方法(1)。これ読み書きの扱いが楽。それ以上なら方法(2')。
今までPerlからPg.pmでしか扱ったことないけれどね。回答者よろ〜
>>245 正規形にこだわるなら、素直に個人IDと都道府県IDのテーブルを作る。
個人ID|都道府県ID
------------------
ID0001|1
ID0001|2
ID0002|1
ID0003|3
ID0004|1
ID0004|3
みたいな。ま、都道府県て増減しそうにない固定みたいなものだし、
他の情報、例えば都道府県のカタカナとかローマ字表記など要らなければ
わざわざ都道府県IDを作らなくてもいいような気がするけど。
都道府県の情報が末端的な情報で、個人情報内の都道府県を元に
別テーブルと結合するようなことが無ければ、(1)の方法でもカンマ区切りの
変わりに配列型でもいいような気がするが、他のテーブルと結合するなら
このようにしておかないと面倒でしょ。もちろん(1)の方法でも結合条件が
面倒な書き方になるだけで、結合できないと言うわけじゃないけど。
>>245 何のために都道府県情報を複数もつかも重要では?
山田太郎 東京都 神奈川県
たとえば、という情報の場合、この東京と神奈川がそれぞれ何についてかという情報はいらないの?
東京が本籍で神奈川が現住所というような意味を持つとか。
これまで居住したことがある都道府県で、順番も持たせる必要があとで出てきそうだとか。
それによって設計が変わりそうな気がするんだが。
> わざわざ都道府県IDを作らなくてもいいような気がするけど。 データベースで都道府県を扱うときは、JISの都道府県番号を使ってる。
250 :
NAME IS NULL :04/09/24 12:03:31 ID:QPEzY+V7
hoge LIKE '%hoge%' と書いた場合には、文字列中にhogeがあって引っかかるのはよいのですが、 hoge LIKE '%%' になった場合、null 以外のもの全部を引っ張ってきてしまいます。 nullになってる行も引っ張るにはどうしたらいいでしょうか?
LIKE句を書かない。
252 :
247 :04/09/24 13:18:32 ID:???
>>249 あくまで都道府県を例えとした話なんで作らなくてもいいとしたけど、
実際にはソートの問題でJISの都道府県番号でID付けするわな。
>>250 全行引っ張るのなら何もいらんだろ。
もしくは AND hoge is NULL を追加するか。
SQLの動的生成の関係で常に同じSQLで済ましたいと言う考えなら、
WHERE CASE WHEN hoge IS NULL THEN '' ELSE hoge END LIKE '%%';
253 :
247 :04/09/24 13:34:31 ID:???
>>252 ほとんど余計なことを書いてミスっちまった
×AND hoge is NULL を追加
○ OR hoge is NULL を追加
254 :
250 :04/09/24 22:49:55 ID:QPEzY+V7
>>253 >WHERE CASE WHEN hoge IS NULL THEN '' ELSE hoge END LIKE '%%';
これすごい参考になりました。
目的が達成できました
ありがとうございます。
>>243 そう。copyコマンドはバックエンドがファイルに書き出す。
psqlからなら\copyを使えばできるはず。
>>255 レスありがとうございました。
でもそうならそうと、もっと分かり易いエラーを出して欲しかった。
半日潰してしまいました。
257 :
NAME IS NULL :04/09/25 08:57:12 ID:MM3GDsqJ
素朴な質問で恐縮ですが、日本語テキストをデータとして扱う事はできますか?
できます。
259 :
NAME IS NULL :04/09/25 09:04:53 ID:MM3GDsqJ
それは、何か特別なものを追加インストールしなくても ですか?
261 :
NAME IS NULL :04/09/25 23:45:36 ID:DVjDKwn6
postgresは同一変数を一つの結果セットとして返すことができるのですか? select * from ( select code , tcode from pgdata.sales ) a left join ( select code , scode from pgdata.salesdetail ) b on a.code = b.code ; とすると code tcode code scode として返ってきます。あり得ますか?
>>261 on a.code = b.codeの代わりに
USING(code)とすると一つしか返りません。
CygipcをインストールしたいのですがCygwinを使っての解凍の仕方がわかりません 本を見ながらやってるんですがそこではbunzip2 cygipc-1.10-1.tar.bz2 と記載されてるのですが試してもファイルが見つからないとなって解凍されません この圧縮されてるファイルはどこに置けばいいのでしょうか?
>>263 cygipc-1.10-1.tar.bz2をダウンロードしたディレクトリに移動して、bunzip2 あるいは tar jzxf してみ。
ところでcygipc-1.10-1ってすげー古い気がする(今のCygwin 1.5.Xじゃ動かん)と思うのだが。
>>264 てことでこれはcygwin上からファイルが置かれているディレクトリに
移動してからbunzip2なりtar jzxfコマンドをやればいいってことですか
はは恥ずかしながらディレクトリの移動の仕方すらわかりません
でもおかしい点がわかったので明日調べてみます
Cygipcが古いのは参考にしてる本で使う教材ソフトと互換性がないとのことで。
動かないときは素直に1.14使います。なにはともあれレスthx
266 :
NAME IS NULL :04/09/27 15:47:41 ID:RiTzpXck
シフトJISでデータベースを作成したいのですが、 どうすればできますか? # createdb -E SJIS test などとしても ERROR: SJIS is not a valid encoding name createdb: database creation failed とエラーになってしまいます。 PostgreSQL 7.3.6 です。どなたかご教授願います。
>>267 ありがとうございます。
解決しました。
Perlで作成したCGI(シフトJIS)よりコールする時に、
SET CLIENT_ENCODING TO 'SJIS';
を投げてやるだけでよかったんですね^^;
D:\Cygwinにあるcygipc.tar.bz2を解凍の仕方はどうすればよいのでしょうか? bunzip2 D:\Cygwin\cygipc-1.10.1-patched-bin.tar.bz2 上のようにDOSみたいにやっても解凍されないのでどうかお教えください
>>269 $ which bunzip2
$ which tar
してみれ。
なければsetup.exeからインストール。
両方ともあるなら
$ cd /cygdrive/d/cygwin
$ tar xvjf cygipc-1.10.1-patched-bin.tar.bz2 -C /
で。
>>270 ありがとうございますさっそくやってみてできました
これでやっとPostgreSQLにインストールありつけます
ちょっと大きな声では言えないんですけどね わからないんですよ。え?何がわからないかって? あれです、Postgresqlの本を買ったのはいいけどわからないんです たとえるなら数学の教科書を買ったのはいいけど 足し算引き算の解説が私には必要なレベルなのにそれが載ってなかったっていう話 sqlを書くためのテキストエリアを開くことすらできないorz ちなみにPostgreSQL 8.0使って就職できるようになりたい中卒無職です
>>273 ヘルプ見てもpsqlが載ってなくてわからないです
でもしばらくいじってたらそれらしいのがでてきたので
>>247 のを貼り付けて
実行してみたら出来たのでたぶん成功です、就職に一歩近づけましたthanks yau
thanks you って見ると、どうしてもアレだ。 シュレディンガー音頭を思い出すのは俺だけか?
心配するな、お前だけだ
通信制の高校とか進めてくれるのは嬉しいんですが 残り預金が200万切ってますので余り余裕がないというか金銭面は崖ッぷちです ところでMS Windows2000&XP用のpgadminUを配布してるサイト潰れてますか? 昨日と今日と404エラーがでてしまうんですが
>>280 私目にはもったいないものです、感謝しながらインストールさせていただきます
pgadmin3バグ多すぎ。 まだ実用的に使えるレベルじゃないよ。 将来は期待してるけど。
>>282 確かによく落ちるけど、これって「実用的に使う」ものなの?
動作確認の補助程度にしか使ってないのだけど。
284 :
NAME IS NULL :04/10/01 00:30:07 ID:QZltdLXt
libpq.so.2.2 ってどっかに落ちてませんかね? 一生懸命ぐぐったんですけど… おながいします。
pgadminは全然使ってないが鯖自体は結構安定してないか?>8.0βWin
>>285 意外と安定してるねぇ。
んでも、今日8.0beta1から8.0beta2-dev3に上げようとして結構苦労した。
あと、8.0betaWinのデータをpg_dump -b -Fcでバックアップすると
7.4.x(Linux)に移せない(Dumpフォーマットバージョンが違うと言うようなエラー)が
発生してラージオブジェクトを含むデータベースを移せないのだけど、
もともとバージョンを落とす方へデータの移行は無理なのかな?
通常のテキストで吐いて psql -d dbname -f dumpfile なら問題ないのだけど、
これだとラージオブジェクトは移せない。
288 :
NAME IS NULL :04/10/02 08:29:31 ID:NGl/1i9J
>>283 pgadminはACCESSのようなフロントエンドを目指してるのと違うの?
adminっていうぐらいなんだからやっぱテストとか確認用だろ。 pgclientとか言う名前なわけじゃないんだから
290 :
283 :04/10/02 13:18:05 ID:???
>>288 それはpgaccessだろう。使ったこと無いけど。
一番最初にPostgreSQL触った時に使ってみたきりだな…>pgaccess
tkじゃねぇ....
pgctlの-lオプションで出力できるログのローテーションって どうやってやってますか?
294 :
NAME IS NULL :04/10/03 19:50:00 ID:FPL8MjTU
>>294 意味ワカラン。
半角カナ文字がうまく扱えないと言いたいのだろうか?
EUCでINSERTもSELECTも問題ないけど。
フロントエンドの問題じゃないのか?
297 :
294 :04/10/03 23:14:08 ID:FPL8MjTU
>>295 なるほど。エンコードしてからという方法もありましたね。
>>296 おっしゃるとおり、EUCの場合はフロントエンドの問題でした…
htmlで吐き出すとき
<a href="
http://www.googl (略)8B%E8%B0キ&num=50">
http://www.googl (略)8B%E8%B0キ&num=50
</a>
のようにしているのですが、リンクがうまく機能していない
みたいです。
「渋谷」というワードで検索しているはずなのに「渋??」と
言うワードを検索したリンクになってしまいます。
これはどうしたら良いのでしょうか…
>>297 そんなもん知るかw
そもそも、なんでそこに「キ」が混じっている?
googleで「渋谷」と入れたら%E6%B8%8B%E8%B0%B7になるんだけど。
299 :
NAME IS NULL :04/10/04 11:51:54 ID:6QgqjC8U
mailtable
email | character varying(100) |
readflg | character varying(1) |
registdate | timestamp with time zone |
という2万件くらい登録されているテーブルがあります。
登録、解除をreadflgで制御して、
再登録時には古いデータはそのままで、新しいデータがinsertされます。
email | readflg | registdate
------------+---------+------------
[email protected] | 1 | 2004/9/29
[email protected] | 1 | 2004/9/29
[email protected] | 1 | 2004/9/29
[email protected] | 0 | 2004/9/30
[email protected] | 0 | 2004/9/30
[email protected] | 1 | 2004/10/1
のような感じ。
一番新しい日付で登録されているデータのreadflgが1のメールアドレスを取得したい
というときに、
SELECT email
FROM mail
WHERE readflg = 1
AND ( registdate, email )
IN ( SELECT MAX(registdate), email FROM mail GROUP BY email );
というSQLを実行したところ、すごく遅くなってしまいます。
もうちょっと早く処理できる方法はないでしょうか?
PostgreSQL 7.1.3
Red Hat Linux 8.0 3.2-7
です。
>>299 explainしてindexはちゃんと使われてるのに遅いってこと?
そのSQLだと
「一番新しい日付で登録されているデータのreadflgが1のメールアドレス」
じゃなくて
「readflgが1のメールアドレスで登録された最新の日付」
にならない?
テーブル全部で最新の日付なのか、メールアドレス単位で最新の日付なのか?
301 :
299 :04/10/04 12:21:27 ID:6QgqjC8U
>300 メールアドレス単位で最新の日付です。 explainは実行結果の見方が分かりません。 indexのあるなしはどこで判断すればいいですか?
303 :
302 :04/10/04 12:39:22 ID:???
SELECT MAX(registdate)AS mdate, email FROM mail AS T1 WHERE EXISTS (SELECT * FROM mail WHERE (registdate,email,readflg)=(mdate,T1.email,1)); これでどうかな。
304 :
302 :04/10/04 12:47:06 ID:???
>>303 ゴメソ、間違ってた。
SELECT MAX(registdate)AS mdate, DISTINCT email FROM mail AS T1
WHERE EXISTS (SELECT * FROM mail WHERE (registdate,email,readflg)=(mdate,T1.email,1));
305 :
299 :04/10/04 12:59:28 ID:6QgqjC8U
>302さん、ありがとうございます。 でも、今実行してみたのですが、 ERROR: parser: parse error at or near "DISTINCT" というのが出てしまうようです…。 SELECT DISTINCT email, MAX(registdate)AS mdateにしたら MAX(registdate)の方にもDISTINCTが効いてしまうでしょうか?
306 :
302 :04/10/04 13:15:51 ID:???
>>305 あれ、DISTINCTって後ろに持ってきたらダメなんだったっけ?
SELECT MAX(registdate)AS mdate, email FROM mail AS T1
WHERE EXISTS (SELECT * FROM mail WHERE (registdate,email,readflg)=(mdate,T1.email,1)) GROUP BY email;
307 :
302 :04/10/04 13:20:35 ID:???
あああああぁー。 DISTINCTの作法に勘違いしているのに気がついた。orz 恥ずかしい(;´Д⊂)
308 :
302 :04/10/04 13:43:29 ID:???
何度もスマソ。
>>306 動かないね。嘘ばっか言ってスマソ。
309 :
302 :04/10/04 14:13:05 ID:???
SELECT T1.email
FROM (SELECT MAX(registdate)AS mdate, email FROM mail GROUP BY email)AS T1 ,
(SELECT * FROM mail)AS T2
WHERE T1.mdate=T2.registdate AND T1.email=T2.email AND T2.readflg=1;
で、どうでしょう。(^^;
>>299 だとループするのに対して、こちらは2回のスキャンで済むから
7.1の時代なら速いと思うんだけどなぁ。
310 :
299 :04/10/04 15:49:47 ID:6QgqjC8U
>302さん ありがとうございました! 先ほど試しましたが最初のに比べると驚くほど早くなりました。 FROM句の副問合せって、こういう風に使うんですね・・・。勉強になりました。
311 :
属性 :04/10/05 11:44:27 ID:64zUwooX
すみませんが、フィールドの属性を取得するSQL文 ってどういうに書けばいいんでしょうか? 教えてください。
>>311 -Eをつけてpsqlを起動する。
$psql -E dbname
後はコマンドを打ってそこで表示されるSQLを参考する。
=>\d tablename
\d table-name とか。
他に聞くとこが見当たらなかったので質問させていただきます。 よくweb上で、氏名や希望IDパスワードなどをいれて アカウントを発行するシステムありますよね。 あれってSQL使ってやってるんですか? 場違い質問だったらすみません。
>>314 アカウントを発行するのは、SQL(DB)には直接関係ないだろう。
発行したアカウントをDBに記録して、新規発行時に発行済みでないかを
SQLで確認している可能性はあるが。
316 :
314 :04/10/05 14:03:46 ID:???
>>315 なるほど。重複確認はSQLでできるんですね。
これから勉強して導入しようと思ってるので
参考にさせていただきます。
ありがとうございました。
>>316 あと、会員番号とかをシーケンスで発行してる場合があるよ。
318 :
284 :04/10/05 18:23:23 ID:0oRtg4dC
319 :
NAME IS NULL :04/10/06 00:24:12 ID:4Vfsvys6
create function f(text) returns text as ' declare flag_text alias for $1; begin if flag_text = "a" return "aaa"; else return "bbb"; end if; end; ' language 'plpgsql'; これを作って実行するとattribute〜とかエラーでる 文字列が同じかどうか判定するのはどうすればよろしいですか?
>>319 ダブルクォーテーション(")を使っているところは、シングルクォーテーション(')を2個の間違いじゃないの?
321 :
NAME IS NULL :04/10/06 01:24:51 ID:tV75h7QC
シリアル型の列名と、それに関連するシーケンスがあります。 で、なんどかWebmin(ブラウザからGUIでDBをいじれるツール) でinsertしたのですが、 シーケンスのlast_valueは昔のままでした。 そこで、 update categorymaster_categoryid_seq set last_value = 159; としたものの、 You can't change sequence relation categorymaster_categoryid_seq と怒られてしまいました。 どうすれば、last_valueの値を変更できるのでしょうか?
>>321 select setval('categorymaster_categoryid_seq',159);
Text形のデータは、改行がある文字列を扱えますか?
>>324 扱えるけどインポート前に改行コードを\nに置換する必要アリ
おまいらはPostgreSQL CEはとりますか?
取りません。
こういうことがやりたいけど、できません。 SELECT A.id, (SELECT sum(price) from list B where A.id = B.id) AS price, count(SELECT DISTINCT date FROM list B WHERE A.id = B.id) AS count FROM member A, list B; これだとできるので、2回に分けるしかないのでしょうか? SELECT A.id, (SELECT sum(price) from list B where A.id = B.id) AS price FROM member A; どなたか教えてください。
>>328 SELECT id,SUM(B.price),COUNT(B.date) FROM member AS A JOIN list AS B USING(id) GROUP BY id,date;
かな? ちょっと取り間違いしている気もするが。
そもそも、下段も
SELECT id,SUM(B.price) FROM member AS A JOIN list AS B USING(id) GROUP BY id;
旧構文なら
SELECT A.id,SUM(B.price) FROM member AS A , list AS B WHERE A.id=B.id GROUP BY A.id;
って書くべきだと思うんだけど。
330 :
328 :04/10/07 16:43:51 ID:???
すみません。ご回答ありがとうございます。 SELECT id,SUM(B.price),COUNT(B.date) FROM member AS A JOIN list AS B USING(id) GROUP BY id,date; 実は、USING(id) は B では member_id になるので A.id = B.member_id になるのですが、 この場合の記述がわかりません。 すみません。
331 :
328 :04/10/07 17:00:19 ID:???
これだと大丈夫なのですが、 SELECT A.id FROM member AS A JOIN shopping_list AS B ON (A.id = B.member_id); これだとだめです。 SELECT A.id ,SUM(B.price),COUNT(B.date) FROM member AS A JOIN shopping_list AS B ON (A.id = B.member_id) GROUP BY id,date;
332 :
328 :04/10/07 17:11:33 ID:???
できました。 だけど、思った結果が出ませんでした。 SELECT A.id ,SUM(B.price),COUNT(B.date)FROM member AS A LEFT JOIN shopping_list AS B ON (A.id = B.member_id) GROUP BY A.id,B.member_id,B.date; これを実行すると、 id | sum | count ----+-------+------- 3 | | 0 8 | | 0 24 | 40000 | 2 24 | 10000 | 1 24 | 5000 | 1 37 | | 0 こうなるのですが、例えば id 24 の人だと sum 55000 、count 3 にしたいです。 こまった。
333 :
328 :04/10/07 17:15:09 ID:???
何度もすみません。できました! SELECT A.id ,SUM(B.price),COUNT(B.date)FROM member AS A LEFT JOIN shopping_list AS B ON (A.id = B.member_id) GROUP BY A.id; ありがとう!!
>>332 GROUP BY A,id だけでいいのかな。
あ、かぶった。つか、おそかった。 オメです。
>>326 どうせ金は会社から出してもらうので受けるつもり。
質問です。よろしくお願いします。 Postgresqlのconfigure時のオプションを調べたいのですが、 どうしたらよいでしょうか。 どなたかご教授いただけませんでしょうか。 FreeBSD/i386 Postgresql-7.4
340 :
NAME IS NULL :04/10/08 21:41:11 ID:KQ16bcj/
SRA社員ってなんでDQNなんですか?
>>339 338が聞きたいのは、すでにバイナリーで手元にあるものが、どういう
オプションでconfigureされたか知りたい、ってことじゃないんだろうか。
たとえば、php_info()みたいにね。もちろん339のように、どういう
オプションがあるのか、って意味にも取れる。
そこんとこどうなの >338
バイナリーパッケージ引っ張ってきて使ってるだけで幸せだった頃は
漏れもそんなことが分かったらいいって思ったことがあったけど。
postgresでバイナリーからconfigureオプションを知る方法があるのか
漏れは知らないし、探すつもりも無い。もしあるのなら誰かがたぶん書くだろう。
無いなら、バイナリーパッケージばらせばわかるだろうし(少なくともヒントは
あると思われ)、ソースパッケージ持ってきて自分でパッケージ作り直すか、
いっそソースから自分でビルドしたらいいんじゃね。
pg_config --configure で、もしかしたら出来るかもしれないよ。 pg_config自体は ./configure したときに編集されるシェルスクリプトだから、 バイナリの作り方にもよるけどね。
343 :
NAME IS NULL :04/10/11 22:47:06 ID:wRlE6/s7
OracleからPostgreSQLに移行するから、 Oracle表領域ごとにPostgreSQLでの容量見積もれって言われたんだけど 何か参考になるサイト、市販本とかありますか? 当方、PostgreSQLは初めてです・・。
345 :
343 :04/10/12 00:38:56 ID:VBJQdYx8
>>344 レスありがとうございます。
まずは、データ移行した場合のディスクサイズが知りたいので、
ORACLEの項目型、ブロックサイズなどから算出した
サイズが分かると良いのですが・・
あと、ディスク分散する場合のコツなんかが知りたいです。
とりあえずシーラカンス本買って見ます。
346 :
NAME IS NULL :04/10/12 05:41:54 ID:2cA1Qpyb
すいません、FreeBSD 4.7を使っているのですが、このたびpamを全ユーザにあてはめました。 すると、 pg_hba.conf で、 # TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD local all all trust host all all 127.0.0.1 255.255.255 pam のようにMETHODをpamにしたのに、ODBCで接続できなくなってしまいました。 まだ他に設定が必要なのでしょうか?
347 :
346 :04/10/12 08:54:07 ID:2cA1Qpyb
すいません、その後調べたら、postgres入れるときに、 ./configure --with-pam をつけ、さらに、 pg_hba.conf には host all all 127.0.0.1 255.255.255 pam サービス名(デフォルトはpostgres) としなければならない、とマニュアルにありました。 しかし、そうやっても、pg_hba.confの書式が違うと怒られてしまいます。 ただしくはどうすればいいのでしょうか? なお、今回Postgresの7.4.5をいれました。
たまに、ディスク分散の話が出るが、実際のところ物理的に 別HDDじゃないと意味ないよね? ディスクアレイで複数HDDを束ねて、それをまた、パーティションを 切ったシステムでディスク分散とか考えても意味ないよね? たとえばRAIDと効果的なディスク分散を両立させるなら、 分散させるファイルシステムごとに、ミラーなりRAID5の ディスクアレイクラスタを設定して、それぞれのファイルシステムが 物理的に別のHDDになるようにしないと効果ないよね? あってる?
>>346 お前さー
local all all trust
の意味わかって使ってるの? 恐らくわかっちゃいねーんだろうな。
psqlから \d tablename; しても列の一覧が表示されるだけで制約の一覧が表示されないんですが、 (制約自体はちゃんと動いているので存在するはず) どうすれば表示されますか? 制約を消したいのですが、これでは制約名が分かりません。 Postgresqlのバージョンは7.4.5、OSはDebianです。
352 :
351 :04/10/17 14:11:53 ID:???
すいません、あげます。
具体的には本来こんな感じで表示されるはずなのですが Table "t_bbs2" Column | Type | Modifiers --------+--------------------------+----------- seq | integer | not null wdate | timestamp with time zone | Primary key: t_bbs2_pkey Check constraints: "aaa" (wdate IS NOT NULL) この部分しか表示されません。 seq | integer | not null wdate | timestamp with time zone | 主キーも存在するテーブルなのですが、Primary key:の行もありません。
354 :
351 :04/10/17 14:18:49 ID:???
すいません自己解決しました いつのまにかpsqlが-t付で起動するようになってました…
355 :
NAME IS NULL :04/10/19 20:33:42 ID:RZ9faG+F
テーブルからcreate文を作成してくれる便利なツールってありますか? Windowsで動くとありがたいのですが・・・
pgdumpじゃいかんのか
>>355 PgAdmin3で接続してテーブルを見れば
SQLも表示されるよ。
>>359 うるさいうるさいうるさい!
結果が合ってるんだから文句を言うんじゃないわよ!
362 :
355 :04/10/20 12:39:26 ID:???
>>357 無事に解決しました。
ありがとうございました。
365 :
NAME IS NULL :04/10/21 22:37:12 ID:JwaoDAkV
integer型をbytea型に変換したいのですが、どうやったらできますか?
>>365 integer型のフィールド名::bytea
367 :
NAME IS NULL :04/10/22 09:32:30 ID:ePgzErNH
>> 366 > SQL実行中に以下のエラーが発生しました。 > ERROR: cannot cast type integer to bytea となります。
PostgreSQLのソースを読むときにガイドになる資料ってなんかありますか?
>>365 例えば、123という数値を'123'というbytea型文字列に変換すると言うことでいいのかな?
SELECT decode(123::text,'escape');
370 :
NAME IS NULL :04/10/22 11:07:06 ID:+jBbM62q
tba と tbb という2つのテーブルがあり、それぞれ id, idate, kin という という項目をもっているとします。 この tba と tbb を仮想的に1つのテーブルとみなし、抽出したいのですが その抽出結果で tba と tbb を意識する事なく、同じように id, idate, kin を扱いたいのですがどのように SQL を書けばよいのかわかりません。 select * from tba, tbb where tba.id = tbb.id としてしまうと tba.kin, tbb.kin がそれぞれできてしまうので、これを どちらのテーブルのフィールドであっても kin として使いたいのです。 アドバイスよろしくお願いします。
select * from tba natural join tbb;
>>365 [pgsql-jp: 34134] とマルチの疑いあり。
どっちかにしませう。
(SELECT * FROM tba) UNION ALL (SELECT * FROM tbb);
374 :
370 :04/10/22 12:14:17 ID:+jBbM62q
>>369 123という数値なら'\\173'にしたいです。
>>375 255以下なら、
SELECT decode(chr(integer),'escape');
で出来るな。それ以上も変換する必要があるなら、
結果文字数(1〜4)に合わせてCASEで分岐し
一文字分ずつchrで変換して連結後decodeするしかないのかなぁ。
一発で変換できる関数を知らない。あってもよさそうだけど。
>>376 なら向こうに「2chで聞くから喪前らにはもう聞かない」と書いて来い。
>>372 >>378 マルチは良くないが、さすがに厳しすぎ!
そんなメールがMLに流れる方が迷惑。
>>379 そういうメール出すクズは脳内アボーンで永久に排除できるだろ。
クズを排除できるなら糞メールの一通くらい安いものだ。
正しくは、 2ちゃんねるで同じことを聞いていました。マルチポストしてしまい申し訳ありません。 あちらでは、こういう回答を頂くことができました。 皆様の参考になればと思い、こちらにも報告させていただきます。 integer型のフィールド名::bytea という方法で、できるとのことです。 みたいなのを投稿することだな。
>[pgsql-jp: 34134] 向こうでは見事にスルーされてるねw
384 :
NAME IS NULL :04/10/25 00:37:17 ID:GsefG0k5
7.4.5を使用してて、主キーを設定しようとして CREATE TABLE test (a int,b int,primary key(a)); とすると NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_pkey" for table "test" という文が2行表示されます。 2行表示されるというのが気になったのですが、大丈夫でしょうか? \d testとすると aはnot nullで最後の行にIndexes: "test_pkey" primary key, btree(a)と出るので 大丈夫だと思っているのですが、ちょっと気になりましたので
>>384 お前、その低レベル度から推測するに、安江だろ。
387 :
384 :04/10/26 02:23:42 ID:1pWRNhqx
低レベルですみません。 NOTICEは主キーが作られるための注意文だと示すためだと思ったのですが違うんですね。 WARNINGに近いものとして捕らえたほうがいいのでしょうか? 7.4.5でも主キーの設定の仕方は CREATE TABLE test(a int, b int, primary key(a)); でいいんですよね。それなのに上記のような文が出るのはなぜですか? 教えてください!
>>387 index名を指定もせずに主キーを作れ言われたんで、作るには作ってやるけど
index名はこちらサイドで勝手につけさせてもらうよってこと。
同じメッセージが2行表示される、というところがひっかかって いるのであれば、もしかしてpostmasterを起動したのと同じ 端末でpsqlを実行したために、psqlの表示するメッセージと postmasterの表示するメッセージの両方が表示されてるって ことじゃない?
>>389 それって、silent_modeがtrueになっていないと言うことだろうな。
391 :
NAME IS NULL :04/10/26 18:42:39 ID:mUWk+/vE
せっかく専用のパーティション作ってやったのに initdb すると「lost+found なんてもんがあるぜ、空じゃなきゃいやよ」 とか抜かしやがる。まっさらのパーティションにクラスタは作れないってこと?
一階層はディレクトリを作りましょう。
>>387 礼の一つもなしかよ安江ぇーーーーーーー!
先日、OracleとSQLServerを比べて、大量(10億レコード程度)データを扱うにはOracleでないとダメ、 と聞いたのですが、PostgreSQLとSQLServerを比べたらどうでしょう? どこかにこのような情報は無いでしょうか?
補足。 ダメ、というのはパフォーマンスのことです。遅くて使えないとのこと。
数千万なら経験あるけど、別になんでもいいと思う。
>>397 ベンチマークは公開してはいけないというライセンスになっているので、公開されることはないと思われ。
パフォーマンスなんか、利用方法で変わるので、自分で検証すべし。
信頼性とか可用性考えるとOracleとかSQLServerになるかもしれんけど。
10億レコードにもなるとバックアップが大変なんだよね。 PostgreSQL はバックアップやリカバリがどうも弱いように思う。
>>401 可用性はともかく、信頼性を気にしてSQL Server選ぶ奴はおらんな。
パフォーマンスは MySQL > PostgreSQL > Oracle スケーラビリティは Oracle > PostgreSQL > MySQL かねえ。 信頼性が一番重要視すべきファクタなので Oracle ってことになるんだろうけど。
>404 そこにSQLServerを入れるとしたらどこに入るの? ランク圏外?
Solaris か Linux の鯖しか使ったことないので分らん。
>>404 PostgresよりOracleの方が全然速いよ
>>407 わしもそう思う。
MySQL でも MyISAM には勝てないだろうが、
InnoDB なら Oracle のほうが速そう。
DB2もいれてくらさい。
MySQLは4.1からデフォがInnoDBになったので それ考慮したほうがいいな 実際ロックを考えたらInnoDBしか選択しないわけで問題ないが
>>407 同じマシンで動かして、どっちもきちんとチューニングすると、あんまり変わらないよ。
得意不得意もあるので、どっちかが速くて、どっちかが遅いというパターンもあるし。
それは、一概には言えない。
>>404 > 信頼性が一番重要視すべきファクタ
そうとは限らんよ。金がかかる。
一台のサーバーで運用するならそんなに変わらんし。
>>411 その「きちんとチューニング」というのが、PostgreSQLではできないから。
SQLの実行計画の改善も、インデックスを使うか使わないかくらいしか指定できないし。
それと、PostgreSQLは16CPUとか32GBのメモリーとかを活かしきれないから、Oracleみたいに「遅ければハードウェア増強」というのが効かない。
414 :
NAME IS NULL :04/10/30 08:28:25 ID:js5xENO/
計算で求めた値を WHERE句の条件に指定しつつ、値としても取得したい場合について質問です。 SELECT *,FUNC1(xxx),FUNC2(yyy) FROM TBL1 WHERE zzz BETWEEN FUNC1(xxx) AND FUNC2(yyy); という感じです。 FUNC1 や FUNC2 の部分は必ずしも関数ではなく、任意の計算式です。 今やろうとしていることでは、CASE 文による値の変換を行っていますので、とても長いSQL文になります。 こういったとき、SELECT で取り出すカラムにも WHERE句にも同一の計算式(FUNC1 および FUNC2 の部分)がありますが、 これをもっとスッキリさせる書き方ってありますか? できれば計算自体は文中に一度だけ、という書き方が知りたいです。
415 :
414 :04/10/30 08:46:44 ID:???
すみません。早々に自己解決です。 SELECT T1.*,T2.F1,T2.F2 FROM TBL1 T1,(SELECT FUNC1(T1.xxx) AS F1,FUNC2(T1.yyy) AS F2) T2 WHERE T1.zzz BETWEEN T2.F1 AND T2.F2 こんな感じで良さそうでしょうか?
>>413 今って、16CPUとか32GBメモリとかのシステムに限って話しをしてるのか?
それに、生かし切れないと断言しているが、殆どのやつは、そんなシステムで
PostgreSQLを詳しく検証したこと無いだろ。
得意不得意があるって言ってんだから、そこだけ切り出してOracle最高というのは違うと思うぞ。
>>416 > 16CPUとか32GBメモリとかのシステムに限って
どこから「限って」とでてくるのやら。
> 同じマシンで動かして
の部分が、どんなマシンでもと読めてしまうから、性能の高いマシンではPostgtreSQL不利でしょ、と。
それに、検証とかの話ではなくて、使いきれるしくみになってないということだ。
チューニングも、パラメータがないからPostgreSQLはすぐ限界になるし、ボトルネックがどこか調べるツールも不足してる。
explainしかないんじゃない?
Oracleが遅い場合でも、チューニングすればPostgreSQLより速くなる場合も多いし。
可能な性能、という話でいえばOracle有利。
ただし、チューニングに知識や時間が必要だし、最低限必要になるリソースも多いから、Oracle最高というわけでもない。
日本でまともにものを考えれる奴が、PostgreSQLを選択するときの理由は 低コストでシステム構築したい(Oracleは高い)、MySQLはバギーと知っている、 の2つだと思う。 どうしてもパフォーマンスやスケーラビリティが必要ならOracleかDB2選ぶし、 SELECTオンリーでかなり負荷の高いシステムならMySQLをだましだまし使うし。 PostgreSQLにしてもMySQLにしても、まだまだ完成されたシステムじゃないってこと を知った上で使うべきだ、プロなら。
プロなら「完成されたシステム」がありえないということをまず知るべきだし。 PostgreSQLは、SQLの構文がどうこう、とかビューとかストアドとか、プログラムインターフェイスに関しては出揃ってるから、MySQLに比べれば成熟度は高い気がする。 可用性、スケーラビリティに目が向いてきているし。
最近日本でも注目されてきてやっと正式版がでたMySQL4.1は 特にエスケープも厄介なWindows版が日本語方面でこけたからな 自滅もありえるかもしれん あちらではSJIS系といっても一般的なSJISとMS932やAppleSJISとか認識してないっぽ Postgresは間違いなく狙ってるのは速度的なものはともかく 機能的にOracleあたりかと 安いoracleという認識で間違いない方向は向いてると思う
あんま詳しくないから信用しないでネ。 Oracleは何でもDBでやっちゃおうというシステムだから、 チューニングできるポイントも多い。それが良いところでもあり 悪いところでもある。 PostgreSQLはOSに任せられる所はOSに任せちゃおうというシステム だから、パフォーマンス出そうと思うと、OSのチューニングも大事かもね。 だからといって、PostgreSQLのパラメータが無いわけじゃないよ。 walとかbufferとかcostとかはちゃんと見といた方がいいらしい。
↑ PostgreSQLはOSに任せるなんて嘘だから信用するな。 効率より機能拡張性
>>417 > チューニングも、パラメータがないからPostgreSQLはすぐ限界になるし、ボトルネックがどこか調べるツールも不足してる。
> explainしかないんじゃない?
Oracleだとどんなことができるんですか?詳細キボンぬ
>>422 shard buffer のアルゴリズムがいまいちなので
OS に任せた方がましという話じゃなくて?
>>423 explainのほかには、データディクショナリとか、SQLトレースとか。
10gからは自動SQLチューニングがあるという噂。
426 :
NAME IS NULL :04/10/31 01:35:09 ID:IXaXBW+D
自動チューニングは便利だ、感動した
Oracle使える人達がうらやましいよ。金かかりすぎて、うちじゃあ決裁が降りない。
>>424 421の論旨は"PostgreSQLの実装自体がOSに面倒なことをまかせている"。
422の反論は"PostgreSQLは高い機能拡張を目的とした実装で、処理効率はあまり追求されていない。
少なくともOSにまかせようという思想ではない"。
OSに処理を肩代りさせるなら、OSべったりの汚いソースになる。
PostgreSQLのソースは、それとはまったく違う、きれいなソースだ。
MySQLの汚さとは雲泥の差。
ちなみに、8.0でbufferまわりの処理が効率化されているらしい。
中規模ならチューニングしなくても PostgreSQL > Oracle、 でも大規模になるとチューニングできる Oracle > PostgreSQL。
中規模でも、中の下くらいだね。 ま、こういう規模の話になると、どっからが中規模やねん、ってことになるんだけど。
SQLServerは眼中にないのね。。。
Windowsでしか動かんからね。。。 低予算ならFreeBSD + PostgreSQLでやることが多いけど それなりのはSoralis + Oracleで組みたいな。
s/Soralis/Solaris/
おらくる みらくる るるるるる〜
>>435 ここでは、個別のチューニングパラメータのことを言ってるわけではなくて、パフォーマンスを改善するための調整項目一般のことをいってるわけだ。
アーキテクチャが違うなら違うなりの調整パラメータを用意すればいいだろう。
437 :
NAME IS NULL :04/10/31 23:00:29 ID:xw6clPjK
ソースを触ればいいじゃない。
>>436 よくわからん。何が足りないわけ?
ア=キテクチャが違えばパラメータが少なくてもおかしくなかろう。
ポスグレはこういうア=キテクチャだからこういうパラメータを用意ればいい
なら話はわかるが。
RDBMSを使うことの目的がパラメータをいじることじゃないだろ?
Oracleと同じような設定方法が見つからないと、 他のDBは融通利かないなってことでかたづけてるんじゃないの? Oracle厨とか言われちゃうよ。 そんな心意気じゃ、DB2だってSQLServerだって使えないって。 Oracle使いの世の中は、Oracleに詳しければそれでOKなんだろうが、 他のDBMS使いから見ると、Oracleは優秀なプロダクトだという主張ではなくて、 俺はOracleしか使いこなせないと自慢してるようにしか思えないぞ。
と言うよりも、むしろOracleの方がDBMSとして特殊なんじゃないのか…?
オラクルゴールドの俺様をなめんなっ!
新しいドリンク剤か?
>>438-439 Oracleと同じパラメータ用意しろなんていってないわけだが。
何が足りないって、非効率な実行計画立てるときに、効率的な実行計画にできるようなパラメータが足りない。
効率的にハードウェア資源を使えるようにできるパラメータが足りない。
要するに、俺のチューニングは実行計画がすべてだとおっしゃってる訳ね。 俺はシステムエンジニアではなくて、プログラマだよと。
実行計画を設定して、ハードウエアを効率的になんだって?
アーキテクチャが違うDBを比べて、中の人を操作するやり方が違うからクソだなんて、どうかしてるぜ!
その話興味あります。PostgreSQLだと実行計画が良くない場合は、 統計情報の精度を高くするんですが、Oracleだとどんなことを するんでしょう?
別に、Oracleの方がうまく設定できると思うのなら、Oracle使えばいいんじゃないの? 選ぶ権利は利用者にあるわけだし 俺たちは、PostgreSQLで満足行く設定をできているから、PostgreSQLを使っているのであって まーそりゃ、何千万円も払ってるんだから、Oracleの方が優秀じゃないと困るだろうけどさ
予算を消化した後にそんなこと言われても困ります・・・
まあOracleとPostgreSQLを比較して物を言える443がある意味ちょっと
羨ましいよ。俺もちょっとはOracle使ったことあるけど、管理は別会社
だったし、本棚にビッシリ詰まってたOracleのマニュアル読んでもどうしても
頭にはいらんかった。
パラメータが足りないというよりは、パラメータをチューニングする
為のツールは足りないんじゃないかな。ディクショナリ的なものなら
pg_stat*とか見るんだろうけど。あと、
http://pqa.projects.postgresql.org/ こんなもんもあるみたい。
>>446 やり方が違うからクソだとは言ってないが。
もっと効率的に動かせる選択肢を用意して欲しいと書いてるだけだ。
>>451 クレクレ君かよ。ボラクルに大枚はたいてろw
要望書いたらクレクレ君か。
>もっと効率的に動かせる選択肢を用意して欲しいと書いてるだけだ。 だからお前は数千万円払って用意してもらったわけだろ? 比べる次元が間違ってるんだってば。 高性能さを求めるなら、スーパーコンピュータ使えよって話になっちゃうし。 結局のところ、費用対効果でしょう。 いくら楽して設定できるからと言って、2000万円払えるかと言われれば、 面倒でもソース書き換えてコンパイルし直すわって人が多くても不思議ではない。 PostgreSQLに詳しくなって安価に仕上げるか、 高い金でツール満載のOracle買うか。 それは使う側の価値観なわけで。
あ、ちなみに2000万ってのは、うちのプロジェクトがOracle導入の時に払った金だけど。 2CPUライセンスで1000万。ハードで300万。その他サポート諸々数百万… まぁ、自社のシステムじゃないから、いくら掛かっても知らないけどさ。
ソース書き換えてコンパイルできる人>お金貰う側 便利なツールが出るのを待つしかない人>お金払う側 ってことでしょ。
って言うことは、お金があればOracleの方がイイってこと?
458 :
457 :04/11/01 02:58:35 ID:???
>>457 そりゃそうだ。
ただし逆に言うと、途中でお金が無くなると、Oracleは動かなくなるけど。
2000万の金が自分の会社をスルーしてOracleに流れるよりは、自分の会社に
いくらかでも留まってくれたほうがうれしくね?
あ、
>>457 は客の方か?ならじゃぶじゃぶ使ってくれよ。
>>460 どちらにせよ、2000万でOracle導入するのなら、2500万円くらいで請け負うだろうから、
どっちにしろSI会社は儲かるよ。
Oracle導入しなければ、予算が500万円になるだけの話。
金ばっかり掛けて顧客満足度もゼロに近くて、 次の仕事回ってこない方がアホだと思うな。 低予算でもシステムはできると言うことを客に教えて 継続的にお金を取れる奴が神だと思う。
顧客満足は高いほうがいい。 金をかけるのは悪いことではない。 顧客満足のうちには、金を適度につかってくれるってのも ありなんだよ。分かんないだろうけど。
んなことではなくて、費用対効果を考えると、2000万も使うんだったら、 作る方も楽できないよってことじゃないの?
PostgreSQLに対してもうちょっといざというときの選択肢用意して欲しいと言っただけなのに、こういう話の流れになるオマエラを、ある意味尊敬する。
>>466 心配するな、PostgreSQLの狂信者はこんなものだが、開発者はちゃんと耳を傾けることを知っているよ。
>467 それ微妙。
SQLite まんせー
Oracle, PostgreSQL, MySQL, SQLite 使い分けまんせー
>>467 どっちかというと、Oracle信者の方が、何に対しても聞く耳を持ってないような気がするんだが…
何か指摘しても、貧乏人はフリー使ってろでかたづけるし。
>>472 一般論は別として、上の流れは「金があるならOracle使ってろ」で聞く耳持たない感じだね。
仕事でSIやってんならPostgreSQLよりOracleのエキスパートの方がアサインしやすくね? 協力会社や派遣に「PostgreSQLの達人きぼんぬ」とか言ってもまず居ないし、むしろヤヴァイ プロジェクトとみなされて敬遠されるでぇ。 今後規模が拡大されてゆくシステムならDB側にスケーラビリティは必須だと思う。逆に 拡張もなければ想定を超えるようなこともないだろうというシステムならコストベースの 話をしても良いと思う。
別に基幹系でpg使えよって話じゃないんだし、怪しいも何もないだろ。 Web系なんて、割に大規模でもMySQLなんてのもあるし。
Web系の人がいう「大規模」なんて、たかがしれてる。
>>474 DBの達人なんて、1人か2人いれば足りると思われ。
どっかの国のクレジットカード会社の顧客DBを MySQLでやってるって話なかったっけ?
>>477 それもそうか、大量に必要なのはプログラマだしな。でも今までに見た
Oracle の達人と同レベルの PostgreSQL の達人って見たことないや。
技術屋の裾野が狭いDBにシステムの将来を賭けたくない気持ちも分かる。
どっかの航空会社の予約システムがPostgreSQLだと聞いたことがある
ここはあやふやな情報を貼るスレですか?
オラ厨の釣堀ですがなにか?
あほーびーびーは、最初はアクセスとエクセルの組み合わせで顧客DB作ってたいう話も
>>483 真偽はしらんが、逆に超小規模なのにDB使いたがる奴もいるよなぁ
単純に1つのデータを追記するだけならファイルで構わんけど、検索・集計したり変更があったり、関連のあるデータがあるときにはDB使った方がラクだしなぁ。 DBが使える環境でDB使わないのってアホらしい。
487 :
NAME IS NULL :04/11/04 10:50:46 ID:loHog9Xg
当方、携帯向けコンテンツを作成してるのですが絵文字の処理で苦労してます。 環境は FreeBSD 4.7-RELEASE Apache 1.3.29 (suEXEC enabled) PostgreSQL 7.2.4 PHP4 4.2.4 List of databases Name | Owner | Encoding -------+----------+---------- testdb | postgres | EUC_JP レンタルサーバーなので設定はいじれません。 どうも他のサーバーで出来る事が出来なかったりと引っ掛かる事も多いのですが・・。 それは置いておいて、文字列に絵文字が含まれていればpackするなどしてinsertするしかないのでしょうか? 具体的に試してないのですが、読み込んで正常に変換して処理出来るかなどに不安が残ります。 他に簡単な方法、またはヒントに繋がるアイデアはないものでしょうか? 初心者の質問で誠にお恥ずかしいのですが、宜しければご指南頂けないでしょうか? 宜しくお願い致します。
488 :
チョウ :04/11/04 12:58:40 ID:???
VBから、アクセスのmdbファイル中のクエリ名とデータ内容を検索できますか?
489 :
チョウ :04/11/04 13:00:05 ID:???
VBから、アクセスのmdbファイル中のクエリ名とデータ内容を検索できますか?
できるけど、スレ違い。
>>487 >それは置いておいて、文字列に絵文字が含まれていればpackするなどしてinsertするしかないのでしょうか?
それしかないと思う。
>>491 >>492 有難う御座います。
結局やはり進数の値に変換する方法にしているのですが・・
ソースをEUCにしてoutputをSJISにしてるのですが、変換した値から更に値を送って変換して
データベースに書き込むと絵文字種によって別のコードに解釈される事が・・。
なのでSJIS(不本意ですが)で全て書き直しデータベースの読み込みはSJIS、書き込みはEUCにするという方法にしました。
しかし、どうも最近の携帯向けサイトを見てると他の新しい試みがありそうな感があるのですが・・。
EUCとなると限界なのでしょうか・・。
>>493 それはphpに文字コード変換させてるからダメなんじゃない?
ご返答頂き有難う御座います。
>>494 すいません、URLをエンコードとは・・?
>>495 やはりphpとの互換なのでしょうか・・。
同じような環境と仮定して他の方がどのように為さっているのかが大変気になるところです。
PostgreSQLをCygwinと一緒にインストールしました。 7.4.5です。 で、こいつを一度アンインストールしてから もう一度入れなおそうとしたのですが、 なんと2回目からは ctgwin\user\local\pgsql のpgsqlフォルダが作られなくなってしまいました。 どうしたらもう一度このデータベースを使えるように なるでしょうか?
>>497 「それにもう一度このデータベースを使えるように」ってのが、
PostgreSQLをアンインストールしても、データベースクラスタは残しておいたので、
それを使いたい、って意味なのか、
それとも単に「またPostgreSQLを使いたい(=DBMSを使いたい)」と言いたいのか、
わからん。
あと、Cygwinのpostgresql-7.4.5-1 パッケージはcygwin\usr\local\pgsql なんて
ディレクトリはかってには作らないし…。
まあ、CygwinでPostgreSQLを使うなら、8のβでいい気がする。
正規化ってテーブル作成段階でやるものなんですか? 作った後に変更することってできないんですか?
テーブル構造決定後に変更すると、プログラマな方々がニフラムされる可能性があります
>>505 cygwinで動かすより、ある意味まとも。
linux版はまともなんだけどね。8のβ。 もっとも大して使いこなせない人には関係のない問題か。
508 :
NAME IS NULL :04/11/05 16:11:41 ID:X6Q7K1U0
PostgreSQL + OpenSSL をしてみたのですが psql hoge -h 127.0.0.1 としたら SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) こんな風に出るので、SSLで繋がってるなと判るのですが、 PHPとかJAVAから、DBつなぐときには、普通に接続して、SSLになってるんでしょうか?
>>508 Javaは知らないけど、PHPの方はPostgreSQLにTCP/IP経由でSSL接続できるよ
510 :
NAME IS NULL :04/11/05 17:04:47 ID:X6Q7K1U0
>>509 どもです
Pg_Connect するとき
host名を 127.0.0.1 でつないでやってみます〜
511 :
NAME IS NULL :04/11/05 19:15:51 ID:st/1ZvTx
別スレに誤爆した後で申し訳ありません 質問です ID (INT) |MAKE_DATE (TIMESTAMP) ----------+--------------------- 1 |1999-12-12 11:11:11 2 |2000-01-01 01:01:01 上記のようなTIMESTAMP型を含むテーブルから 時間の各要素を取り出す方法ってあるですか? SELECT EXTRACT('HOUR',makedate) FROM <TABLE名> WHRER ID = 1; SELECT EXTRACT('HOUR', TIMESTAMP makedate) FROM <TABLE名> WHRER ID = 1; SELECT EXTRACT('HOUR', TIMESTAMP (SELECT makedate FROM <TABLE名> WHRER ID = 1)); こんな感じでいろいろ試してみました
>>511 別スレで答えておいた。
誤爆ならそう書いとけよ。
>>501 AllAboutJapanの新しい方の記事(2003/08のじゃなくて、2004/08/16)の記事の手順で
うまく行かなかった、ってこと?
だったら、Cygwinの /usr/share/doc/Cygwin/postgresql-7.4.5.READMEに書いてある
手順でやってみたら?
514 :
NAME IS NULL :04/11/06 00:27:15 ID:dErfnuxh
現在、PHPとPostgreSQLを使い、個人データの登録を行っています。 PHP:4.3.5 PostgreSQL:7.3.4 個人データ ID|名前 1 |a 2 |b 個人情報データ ID|情報 1 |aaaaa 1 |bbbbb 1 |ccccc 2 |aaaaa 今つまづいているのは削除のときです。 一人の方の情報データを削除後、すぐにその方のデータを 画面上に表示したときに、削除したはずのデータが 表示されてしまいます。表示後、1・2秒待ったあと、再更新すると データは消えています。 こんなことは初めてなのですが、何が原因でしょうか。 よろしく御願いします。
>>514 わかりやすく、丁寧にひとことでいいましょう。
「オマエのバグだろ、ゴルァ」
ブラウザのキャッシュだろ。
518 :
たっちゃん :04/11/06 14:27:05 ID:bF7eqDLm
PostgreSQL 8.0をWin2000にインストールして、使ってみました。 インストールしたマシンでは、うまく動いたのですが、別のマシンからログインできません。 postgresql.confのlisten_addresses = '*'に変更してあります。 hda.confでhost all ............ trust でIPも登録して有ります。 エラー:210 FATAL:missing or erroneous pg_hda.conf fileがでます。 接続方法をご存知の方教えてください
どっかミスってんだろ。 pg_hda.confなんて書くやつは きちんと設定してあると言っても、信用できん
Cygwin上からコマンドで select * from で24件以上のデータを抽出しようとすると 9 | <91><E5><95><AA><91><E5><8A>w <91><E5><8E><9A><8A><8E><96><EC><8C><B4>700 ↑こんな文字が大量に出てきて結果が表示されないんですが、 これはどうしようもないんでしょうか? なんかエディタの画面みたいになってるらしくqキーを押さないと 復帰できません。 Cygwin+PostgreSQL7.4.5です。
>>520 24件という数字になんの意味があるのかわからないが、EUC_JPっぽい
ので、set client_encoding to sjis;してやればいいんでない?
522 :
お願いします! :04/11/07 13:22:47 ID:quVGw0mp
phpPgAdminでログインできなくて困っています。 色々調べてpostgresユーザではログインできないということがわかっている ので、別のユーザを作ってそのユーザでログインしようと試みましたが、 結局ログインできません。一体なんのユーザでログインできるんでしょうか・・・
>>522 >postgresユーザではログインできない
事の是非は別にして、可能。
>別のユーザを作ってそのユーザでログイン
手順をやったとおりに(as is)書いてくれんかね?
524 :
お願いします! :04/11/07 13:47:18 ID:quVGw0mp
523様、よろしくお願いいたします。。。 やったこととしては、 1.phpPgAdminを自宅鯖(Fedora Core2)へインストール 2.Linux側でphpuserというユーザを作る 3.phpPgAdminのindex.phpにアクセス 4.ユーザ、パスワードを入力してログインを試みる 5.「ログインできません」と言われる 「config.inc.php」変更箇所 $conf['servers'][0]['host'] = '192.168.0.40'; $conf['default_lang'] = 'japanese'; やったことはコレくらいなんですが・・・何か足りませんか? ちなみにPostgreSQL、PHPはFedora Core標準インストールです。 ただ、インストールするときに連携できるための何かをインストール した記憶があるんですが・・・・なんだか忘れてちまいまちた
>>524 そこでのアカウント・パスワードは、Linux側ではなく、
PostgreSQLが管理するものが対象なので、
PostgreSQL側のユーザ追加とパスワード設定をしてみてください。
526 :
お願いします! :04/11/07 20:51:47 ID:quVGw0mp
なるほど、Linux側のユーザと同じ名前でPostgreSQL側のユーザを 作らなければならなかったのですね。 とりあえずdbuserというユーザをLinux側に作っていたので、同じく dbuserというユーザをPostgreSQL側でもcreateuserしました。 ただパスワードはLinux側で設定したもので良いのですよね? それでもログインできないんです・・・。 .bashrcを変更しなければいけないという記事も見つけたのですが、 そもそもそんなファイルは所有していません。 phpPgAdminは簡単に使える・・・と聞いていたんですが、そうでも ないですね・・・(涙)
>>526 まず、PostgreSQLのアカウント管理とOSのアカウントとは全く関係がありません。
別々に管理されますし、片方を変更・追加・修正しても他方に影響しません。
ただ実際にはpsqlを-U無しで実行した場合にはデフォルトのユーザとしてOSのアカウント名が
渡されたりする等、両方で同じアカウント名にしておいた方が便利な場合が多いです。
で、話を元に戻すと、PostgreSQLのアカウントの方にもパスワードが必要になります。
phpPgAdminはこのアカウント名とパスワードを使って認証を行います。
これが設定されていない状態になっているんじゃないでしょうか?
パスワードの設定は、create user NAME passwd 'PASSWORD' か、
alter user NAME with password 'PASSWORD' を使います。
(大文字部が アカウント名 or パスワード。自信無いんで要マニュアル参照)
528 :
お願いします! :04/11/07 23:22:25 ID:quVGw0mp
527さま お返事ありがとうございます。ただの素人の私にアドバイス下さって とてもありがたいです。周りにLinuxなどに詳しい人が全くいないの で、とても心強いです。ご指摘の通り、お恥ずかしいながら私は createuser dbuser としてユーザを作っていました。正しくは createuser -U dbuser -W だったのかと思います。-Wをつけることで、この後にパスワードを 聞かれました。 ただ、ちょっと変なのです。 -------------------------------------------------------------------------------------------------------- -bash-2.05b$ createuser -U test50 -W Enter name of user to add: Shall the new user be allowed to create databases? (y/n) y Shall the new user be allowed to create more new users? (y/n) y Password: createuser: could not connect to database template1: FATAL: IDENT authentication failed for user "test50" -------------------------------------------------------------------------------------------------------- この2行目はなんでしょう・・・ template1ってなんだろ・・・ さらに結局ユーザを作ることが出来ないんです・・・ また、su - postgresでポスグレのマスターの状態から su - dbuser でdbuserという名前のユーザになることが出来ます。 一度、exitで抜けてpostgresに戻り、 dropuser dbuerをすると -------------------------------------------------------------------------------------------------------- dropuser: could not connect to database template1: FATAL: IDENT authentication failed for user "dbuser" -bash-2.05b$ dropuser dbuser dropuser: removal of user "dbuser" failed: ERROR: user "dbuser" does not exist -------------------------------------------------------------------------------------------------------- と、存在は確実なのに上記のように言われてしまいます。 一度、dbuserというのを削除して作り直し、Linux側、Postgres側で dbuserというユーザと同じパスワードを設定すれば本来はログインで きるということですよね? postgres側のユーザというのは、postgresユーザでcreateuserした ユーザの事と認識していますが、私の認識は間違いでしょうか。
>>518 CIDR-ADDRESSを正確に入力しましょう
今までIP+ネットマスクで設定する仕様だった時は結構
いい加減な記述でも通ってましたが、8は違います。
>>528 PostgreSQLでは認証方法をいくつか選ぶことができますが、
現在はIDENTが選択されています。これは$PGDATA/pg_hba.conf
ファイルで変更することができます。
IDENTが選択されているために、結果としてLinux側にも同じ
ユーザが登録されている必要があるのではないでしょうか。
531 :
NAME IS NULL :04/11/08 03:19:01 ID:l7COVC+q
PowerGres Plus のソースはどこで公開してるの?
ソース公開してんの?
533 :
名無しさん :04/11/08 04:29:12 ID:YizH8jRn
A | 6 B | 2 B | 8 A | 9 C | 7 A | 2 C | 1 B | 0 C | 4 このようなデータからA, B, Cそれぞれの 最小値を取得したいとおもいます 現在はAのなかの最小値、Bのなかの最小値、Cのなかの最小値 と別クエリで取得しております。 A | 2 B | 0 C | 1 一発のSQLで取得できるでしょうか? サブクエリ使えば出来るのかも、とおもうのですが どうなのでしょうか教えてください。
う〜ん、select abc, min(num) from t group by abcでは解決しない難しい問題なんだろうなぁ。
>>534 サンクス
order byしか思い浮かばなかったからどうすればいいんだろうと考えた
min,maxとかの集約関数忘れてました
>>518 どこで教えられたか知らないが、trust使うな低脳。
>>528 unix domainのident認証はパスワードは使わない。ユーザー名、パスワードが渡されても無視する。
そして、その時のuser idがそのまま使用される(pg_hba.confの設定がsameuserの場合)。
ユーザ指定してパスワードで認証したかったら、pg_hba.conf設定して、-h localhostを付けたまえ。
pg_hba.confでは絶対にtrustは使わないこと。
trustにすると、生パスワードをプログラムに記述しなくていいので、パスワードが漏れないっていう説はどう?
>>538 localに関して言えば俺もtrust。
テスト環境なのか、実運用にしてもどういったものなのか。
trustだから×って決め付けるもんじゃないと思うけどね。
>>537 ところで、trust使ってはいけない理由は?
env PG_USER=hoge psql って、やってみて驚け。
なんか驚くことあるかなぁ
7.4.1 なのですが、 bigserial 型を強制的にインクリメントする方法、 または insert 時に not null 制約を一時的に無効(MSので言うnocheckみたいな?)にする方法は無いでしょうか?
後者は無い。 強制的にインクリメントってのは select nextval() じゃダメなんだっけ?
>>544 アリガd(´ー` )
手元の本はSQL2準拠で・・・。
おかげで助かりますた。
546 :
NAME IS NULL :04/11/11 01:36:26 ID:tNmzRnix
PostgreSQL って BLOB/CLOB って扱えるんでしょうか。なんかTEXTが CLOBっぽいようですがBLOB/CLOBってキーワードでSQL上で指定できますか?
548 :
NAME IS NULL :04/11/11 11:31:13 ID:NczU4nku
あるテーブルから、ユーザIDと年齢が一緒のレコードが複数ある場合に、 そのユーザIDを重複する事なく抽出したのですが・・・ 例) user1、32 user1、32 user2、28 user3、31 user3、31 user3、31 の場合、 user1、32 user3、31 の2レコードを抽出したいです。 よろしくお願いします。
仕事して下さい
>>548 select * from t order by age desc offset 1 limit 2
それは本当にIDなのかと小一時間(ry
>>531 PostgreSQLはGPLではないよ。
554 :
NAME IS NULL :04/11/12 06:20:20 ID:EMtwVk+z
DBのことじゃないんだけど PostgreSQL好きってことで教えてください。 WebサーバーとDBサーバーを別マシンにするとき 100BASEのLANで性能でますか?1000BASEじゃなきゃだめ?
マシンの性能とやりとりするデータ量による。 どうせ外部とのやりとりするデータ量の方が内部でやりとりするデータ量をうわまわるので、外部とやりとりするネットワークの太さと同程度であれば、それ以上は無駄。 外部と1000BASEでつながってるんなら、内部も1000BASEにしろ。
556 :
554 :04/11/12 07:04:52 ID:EMtwVk+z
>>555 Thanks
寝ぼけてて環境間違えました。ごめん。
Webサーバーは無かったことにしてください。
バッチ処理PGMと、そのバッチ処理に使うデータベースがあります。
それをひとつのマシン上で動かしてTOPコマンドで見ると
CPU100%で回りっぱなしで5分程かかってます。
そこでマシンを別にしたらもっと効率が上がるかなと思ったのです。
自宅LAN環境(100BASE)でやると別マシンにしたほうが明らかに遅いんで
ネットワークがボトルネックになってると思いました。
1000BASEの環境がないので教えて君してます。よろしく。
557 :
NAME IS NULL :04/11/12 07:05:54 ID:+NoAzB19
>>554 そもそも 1Gb の帯域を活用してるといえるアーキテクチャのサーバなんてあまり無いんだが。
業務システムでも RDBMS とアプリケーションサーバ間は大抵 100BASE-T (もちろん外部と
繋がってる線とは別で)。構成にもよるが DB サーバならディスク I/O がネックになるので
たいていネットワークは後回し。
558 :
554 :04/11/12 07:23:38 ID:EMtwVk+z
>>557 さんもその前の
>>555 さんも ありがとう&おはようございます。
>そもそも 1Gb の帯域を活用してるといえるアーキテクチャのサーバなんてあまり無いんだが。
なるほど。
>たいていネットワークは後回し
うーーん、テスト環境をもう一度クリーンにしてチャレンジしてみます。
ありがとう。
そこで15000rpmのCheetahでRAID0+1ですよ。
>>556 読み落としたが、共有メモリなのかローカルソケット使ってるか知らないがそれをハブ経由のと
比べるのはちょっと酷だろ。100BASE-T で 60〜80Mbps、1000BASE-T で 200Mbps 程度が
相場だからその状況なら改善の余地はあるかもしれない。とりあえずバッチ処理中の帯域
占有量を調べれ。それが 60Mbps 以上なら改善の余地あり。
561 :
NAME IS NULL :04/11/13 02:00:02 ID:/IwXI261
>>554 ,557,558
おいおいネットワークのスループットとレイテンシをディスク、メモリ
、CPU能力と比べることも出来ないのか?知ったかはよせ。
Pen4のメモリの帯域は6.4GB/Sだぞ?
1000BASE-Tは、理論値が125MB/Sで最悪20MB/Sってとこだろ。桁が違う。
帯域だけじゃなくレイテンシの影響が大きい。
バッチ処理って事は、短時間でDBとの間で多数のやり取りがあるんだから、
ネットワークレイテンシの影響も大きいぞ。
説得力のある知ったかの登場です。
>>561 送信データの内容がすべてメモリ上にリニアにキャッシュされてるって前提ならまだしも、
そんな話をしてもこのケースは意味無いだろ。それにバス直結ならまだしも PCI が噛んだ
環境でそんな理論値でないよ。
>>561 実際やってみれば謝りたくなると思うよ。
565 :
NAME IS NULL :04/11/13 07:56:30 ID:/IwXI261
>>
GbEのネットワークカードは、64BitPCI*66MHzで試すんだよ?
これであればGbEの帯域は全然問題にならない。
それにチップセットにGbEが内蔵されている場合は、最近はPCI経由しないだろ?
>>564 やったことあるよ。Pen4XEON(2.66GHz,MEM:2GB,HDD:IDE7200RPM+Chache2MB)
1台の構成と2台の構成で、APサーバからDBサーバの対して、
数百から数千件の結果を返すクエリ(1件あたり数百バイト、非主キー検索)を投げて、
その間のネットワーク速度をNICの設定を変えて1000Baseから100Baseに変えて測定した。
全然レスポンスが違った。(正確に数値は覚えていないが)
そっちこそ試したことあんの?
大量データ転送時にパフォーマンスは上がるだろうが、 レスポンスは変わらないと思うが。
データ転送量が少いけど重いクエリ実行が多い場合は web サーバー用マシンと DB サーバー用マシンを 分けて負荷分散。 転送量が多い場合は両サーバーを同じマシンに、 そのマシン構成で複数設置して負荷分散。 負荷のバランスが取れてレスポンスの早いの採用?
Solaris9、PostgreSQL-7.4.6をソースからビルドしました。 initdb すると、コアダンプ吐きます。 bash-2.05$ initdb --no-locale -D /usr/local/pgsql/data The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale C. creating 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... 40 selecting default shared_buffers... 800 creating configuration files... ok creating template1 database in /usr/local/pgsql/data/base/1... ok initializing pg_shadow... ok enabling unlimited row size for system tables... ok initializing pg_depend... ok creating system views... ok loading pg_description... ok creating conversions... ok setting privileges on built-in objects... ok creating information schema... ok vacuuming database template1... Bad System Call - core dumped initdb: failed うう、何が原因でしょう…
569 :
568 :04/11/13 18:30:58 ID:DH3aZI2h
ちなみに、gcc (GCC) 3.4.1 、 GNU Make 3.80 でビルドしました。
>>568 おっ!Solarisのコアダンプネタ。俺の出番だな。どれどれ・・・・・・・全くわかんね。
straceでinitdbしてみるとか、gdb使うとか。 どこで落ちてるかだけなら簡単にみつかりそうだけどね。
574 :
554 :04/11/14 00:19:03 ID:HLJ6ND06
>> こらこら君たち 俺がいないのに喧嘩すんなよw 俺がただのアンポンタンってことは皆さん承知でしょう。 565さんも承知でしょう? たのむ 俺のとこ来て 手取り足取り教えてくれ。 いや、俺の変わりに設定&テストしてくれ。 で本当はどうなのよ?
パソコンまがいに犬積んでシステムだあ〜、パフォーマンスだあ〜 とか言ってる奴って所詮こんなレベルって事。
>やったことあるよ。Pen4XEON(2.66GHz,MEM:2GB,HDD:IDE7200RPM+Chache2MB) Xeonでメモリ2Gなのに、IDEのディスク1台って、ネタ臭いんですけど。 DB鯖なら普通、CPU落としてでもディスクをRAIDにするだろ。
IDE7200RPM+Chache2MBとか誇らしげに書いてるけど、 SCSIなんて見たこと無い厨が妄想で書いたスペックだから仕方ないと思う それとも、テストサーバだとか言い訳するのか?(w そこまでパフォーマンスだなんだ騒いでて、 マジでIDEのディスク1台で運用入ってたら、笑うけどな
>>565 同じクエリを同じマシンで2回投げると、2回目のレスポンスは、
キャッシュが利いてて速くなると思うんだが、
当然NICの設定を変えたときには、OSも含めて、全部クリアしてるよね?
キャッシュの存在を知らずに 1回目は100で投げた→ちょっと微妙 2回目は1000に変更→結構速い! とかやって喜んでないよね?
580 :
568 :04/11/14 10:38:30 ID:Z9vlPXZS
>>570 、571 うまくいきました。どうやら、/tmp の容量が足りなかったのが原因だった模様。
再起動してみたらうまくいった…
/tmpの容量増やすにはどうすればいいのやら(OS再インスコ?
>>580 Solarisは動的なパーティション変更できなかったっけ?
AIXとかならできるんだけどな。UNIX板で聞くか、ググったら?
返事がないところを見ると、ディスク構成とキャッシュは考えてなかったみたいだな。
583 :
568 :04/11/14 19:37:55 ID:???
>>581 ありがd。具具ってさがしてみます。慣れないOSだと苦労しますな、とほほ(;´д`)
>>583 動的に変更できなくとも、/tmpのとなりのパーティションが
/root,/binなどじゃないなら、
バックアップをとって、シングルユーザモードでrebootして、
変更部分だけパーティションをきり直し、ファイルシステムを作り直す
なんて荒技も可能かな。
それともHDを追加して、/tmpを切替えるって手もありそうだし。
OS入れ直しは最後の手段だよ。
585 :
568 :04/11/14 22:24:51 ID:???
>>584 なるへそ、勉強になります。んが、ハードも含めてテスト&評価&勉強目的なので、
気が付いたらOSを入れ直してましたw もちろん、本番機ではこんなことできないでしょうけど。。。
586 :
565 :04/11/15 00:07:17 ID:???
>Xeonでメモリ2Gなのに、IDEのディスク1台って、ネタ臭いんですけど。 >DB鯖なら普通、CPU落としてでもディスクをRAIDにするだろ。 システム領域はIDE RAIDのミラーにした。 今時メモリ2Gで多いと思っているなんて可愛いな。 >IDE7200RPM+Chache2MBとか誇らしげに書いてるけど、 >SCSIなんて見たこと無い厨が妄想で書いたスペックだから仕方ないと思う SCSIが最高だと思っている厨か?その時の検証には使っていないが、 本番環境はファイバチャネル接続ディスクを別途用意した。 ネットワーク速度のテストは、IDE RAIDのディスクでやったが。 SCSI厨は、U160の太くて取り回しのしにくいケーブルでも使ってな。 >同じクエリを同じマシンで2回投げると、2回目のレスポンスは、 >キャッシュが利いてて速くなると思うんだが、 >当然NICの設定を変えたときには、OSも含めて、全部クリアしてるよね? その他の検証も行っていたのでOS再起動まで含めてやった。 クエリも結果件数が変わるようにいろいろ試した。 ていうかやったこと無い童貞が下らん反論するな。
なんだこいつ? 知ってる言葉並べただけか? 普通は >IDE7200RPM+Chache2MB こんなのは重要じゃなくて、IDE-RAIDの方が書くべきことだろ。 で、FCのディスクは何回転でキャッシュはいくらか書かなくていいのか?(w
で、OSは何ですか?
OSはPostgreSQLです。
OSはミツカン酢です
にゃー、にゃにゃーにゃー。にゃにゃにゃー。
>クエリも結果件数が変わるようにいろいろ試した。 どう試したんだ? 結果件数変えるくらいじゃ、中の人の動きはかわらんぞ。
>システム領域はIDE RAIDのミラーにした。 パフォーマンス気にしてるのに、ミラーとかあり得るのか? 普通は5か10あたりにしないか?
ネットワーク速度のテスト? なのに数百件や数千件でやってんの? 結果の差が出づらいだろ。 まさかそんなコンマ何秒かの結果差出して、大差が付いた!とか言ってるのか? 普通、最低数百万件入れて、数十万件当てたりしないか?
こういった「普通」がない話で、「普通何件のデータ使わないか?」とかいうのも痛いね。
596 :
NAME IS NULL :04/11/15 11:52:58 ID:Ff1g5uJn
もまいら > Chache2MB にも突っ込んでやるやさしさを持ってください。 未だにカーネルもイーサチップもハブも明かされて無い辺り今後のネタの布石だと期待してるぞ、チャッチュ君 (w
PostgreSQLのことならここで聞け。
>>595 まーでも、少なくとも、数百件はありえないけどな。
あと、その他の検証もやってたって、
>>586 にあるけど、
ネットワークの測定なら、それだけ純粋にやらないと、
どの作用でそうなったのかとの切り分けが難しいのではないかと。
ネットワークの測定だったら適当なファイルをコピーした方が 正確だと思うのは素人? というか、DB使う意味がないじゃん。
602 :
NAME IS NULL :04/11/15 16:46:30 ID:nuaFmwyY
コネクションプーリングの仕掛けがいくつかあるみたいですが redhat9+postgresql7.43+tomcat5 の組み合わせでオススメのがあれば教えてください<m(_)m>
ふつうにTomcatのデータソースで。
コネクションプーリングはPsotgresのがふつーにあるだろ もちろんApacheDBCPでもいい ご自由に
606 :
NAME IS NULL :04/11/15 18:07:49 ID:hvuw/xCX
大文字小文字関係なく並べ替えるにはどうすればいいですか? MM, maとか。。。
select * from lower(fieldname); もうちょっと質問の仕方考えた方が良いのでは?
それ並べ替えてないし、、、
lower()が示せれば充分だろ。 ここでorder byが思い浮かばないならどうしようもない。
610 :
NAME IS NULL :04/11/16 12:15:03 ID:f7/WOeLC
C言語関数を作りたいのですが、ソース以外に参考になるサイト、書籍などありませんか?
>>609 入力ミスなのに指摘されて逆切れってかっこ悪いですね。プ
加えて言えば、lower()はSELECT句かWHERE句に来るべきもので、 FROM句には来ないと思いまつ、、
みんな突っ込むのがめんどくさくてスルーしてたっぽいw
614 :
NAME IS NULL :04/11/16 22:43:40 ID:psi/skYt
dayって名前の『timestamp』のカラムを 日付でグループ化ってできるんでしょうか? つまり、こんなやつを day ----------------------- 2004-11-08 22:47:59+09 2004-11-08 22:48:48+09 2004-11-09 11:18:52+09 2004-11-09 11:24:15+09 2004-11-09 11:27:54+09 ----------------------- => select day from テーブル group by day ************;して こんな検索結果にしたいんだけど。。。 day ----------------------- 2004-11-08 2004-11-09 あまりにも小僧な質問でしょうが。。。
dateかcharに変換してからgroup byすればいいんでないの。 select day::date from テーブル group by day::date; 未確認だが。
616 :
NAME IS NULL :04/11/16 23:50:10 ID:mHsEfkKc
PostgreSQL7.4.6の同時接続数を 某本を片手に行いましたが、 例に載っている同時接続数64で設定すると、 書き込みなどのパフォーマンスがかなりわるくなりました。 postgresql.conf内容 max_connections=64 shared_buffers=128 あまりにも悪かったため、shared_buffersを10000にすると、 初期設定よりもパフォーマンスがよくなりました。 共有メモリは128Mぐらいなのですが、同時接続が64*10000になった場合、 SWAPなどが起こり、遅くなるのでしょうか? また、同時接続数を増やした場合のパフォーマンスをあげる方法ですが、 WALを設定したり、sort_mem を増やしたほうがよいのでしょうか? OS:FreeBSD4.10 CPU:pentiumV1Gz MEM:1G
617 :
NAME IS NULL :04/11/17 00:41:13 ID:teQkvpJS
PostgreSQLについて質問です。 数冊の書籍を流し見したのですが、オラクルのビットマップインデックス に当たるものはあるのでしょうか。 ちょっと見あたりませんでした。 データウェアハウス用途でどれだけ実用になるか興味があります。
>>616 shared_bufferは大きい程よい。max_connectionsの2倍ってのは最低限必要って意味。
で、質問の意味が分からんのだが、パラメータをかえただけで、接続数は変わってないの?
それともパラメータかえて接続数も増えてパフォーマンスが落ちたっていう落ち?
そもそも同時接続64*10000ってなに?
>617 無い。以上。
622 :
NAME IS NULL :04/11/17 10:17:20 ID:vZBdMe8w
PostgreSQLの起動時に、他のプログラムを自動実行するような手段はありませんか?
623 :
sage :04/11/17 10:35:33 ID:ffSHJYdD
>>618 パラメータを変えただけです。接続数は64のままです。
64*10000は同時接続がおこった時に1接続に対しshared_buffers分発生すると
思いました。
64接続も1接続もshared_buffers内で行うと考えてよいのでしょうか?
>>620 指摘されて逆切れってかっこ悪いですね。プ
625 :
614 :04/11/17 12:05:14 ID:Z4W5FTYY
>>615 できた!!
ありがとうございますぅ。
早く小僧を脱出しなければ・・・先は長そうだけど・・・
ギガビッドの夢が破れたので、今度はいちいち逆ギレ指摘か。
>>623 接続数は64のままって、じゃあデフォルト32のときも64接続しようとしてたわけ?
> 64接続も1接続もshared_buffers内で行うと考えてよいのでしょうか?
"shared"ってどういう意味か知ってる?
あと、
> 64*10000は同時接続がおこった時に1接続に対しshared_buffers分発生すると
> 思いました。
は意味不明。
swapがおこるかどうかは実際vmstatとかしてみるのがいいのでは? あと、shared_buffersはでかけりゃいいってもんじゃないらしいよ。
>>622 PostgreSQLを起動するスクリプト内に埋め込む。
この極めて単純な方法を考えなかったり、試行してみなかった理由があるのなら
それを添えて質問してくれ。
今回初めてcygwinを起動してcygipcをインストールしたいのですが cygipcはD:\cygwin\tmpに解凍することができました しかし肝心のインストールの仕方がわかりません ご主人様、どうか哀れなこの豚めにお教えください
スレ違いだ、豚!
豚か。人間なら教えたのに。
633 :
NAME IS NULL :04/11/17 22:06:34 ID:ubZIXP1e
>>629 すみません。
エラーが起きてPostgreSQLが自動的に再起動するときがあるのですが、
このときに他のプログラムを実行させたいのです。
このとき起動スクリプトは実行されないようなのですが。
>>630 D:\cygwin\usr\localに解凍したファイル移動させればいいだけ
>>627 まず、postgresql.confを
max_connections=64
shared_buffers128
に設定を行いました。
テーブルに100件書き込むクエリを実行すると、設定を行う前に比べて
遅かったので、
shared_buffers=10000
にすると、設定を行う前以上に早くなりました。
設定を行う前はpostgresqlの初期設定です。(confファイルはいじってません
また、インストール時にメモリ割り当ては行っていません)
これに関しては色々調べて、キャッシュにあたるほどよいということが
分かりました。
OS:FreeBSD4.10
CPU:pentiumV1Gz
MEM:1G
上記スペックの時、WEB+DBサーバにしか使用しない場合、
FreeBSDの共有メモリにどのくらい割り当てられるものなのか
また、shared_buffersの容量はその共有メモリに対してどのくらい
割り当てたほうがよいのか、その目安はどのくらいなのでしょうか?
また、パフォーマンスをあげる方法としては上記以外にどんな設定を
したらいいのでしょうか?
>>628 現在の設定で100件のデータを書き込む処理を行いましたが、
あまりメモリ容量は上がっていないような気がします。
次はpg_benchで64接続設定を実行しながら、
vmstatでメモリ使用量をチェックしたいと思います。
>>435 のURLのところ見てみるといーんじゃない?
お前ら当然、SoftwareDesign買っただろ? 俺はまだ買ってないけど。 雨だし。
デザイナーの雑誌ですか?
煽る力も残ってないなら寝たほうがいいよ
え、煽られるような内容なの? まあ、天気もいいし、遊びに行くとするよ。
643 :
NAME IS NULL :04/11/20 18:03:10 ID:TCBn6jbt
timestamp型のところにUnix時間で入れる方法が あれば教えてください。 出すときにUnix時間にするのはdata_partでできるみたいなんだけど その逆がみつからなかった・・・orz
644 :
NAME IS NULL :04/11/20 18:44:59 ID:Gp7u48nM
PHP掲示板作ってもらったんだけど、「予約して」って打ったら化けた。 どうして?
予約できないってこと
646 :
NAME IS NULL :04/11/20 23:35:41 ID:CjusAjFh
cygwinでpostgres使いたいんだけどソースからコンパイルしたpostgresは cygwinフォルダのどこにインストすればいいんですか?
どうやってコンパイルしたんだよ…
>>646 htp://www.pathname.com/fhs/ を参考に、好きな位置に。
>>648 thx!
それらしきメッセージがだらーっと出てきたんでたぶんインストール出来ました
次にデータベースユーザを作りたいんですがこんながでてエラーで困ってます
/usr/local/pgsql/bin/createuser nobody
>Shall the new user be allowed to create databases? (y/n)
>Shall the new user be allowed to create more new users? (y/n)
>createuser: could not connect to database template1: 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"?
651 :
650 :04/11/21 18:28:05 ID:???
cygwinってことで > connections on Unix domain socket あたりもクサいね。 ipcdaemonやらcygipcやらcygserverやらの設定はしてるんかいのぅ
653 :
649 :04/11/21 21:08:57 ID:???
>>649 postgres.exe(あるいはpostmaster.exe)がちゃんと起動してるか調べるべし。
少なくともプロセスがちゃんと存在するかどうかぐらいは、調べてもよかろう。
タスクマネージャか、Cygwinでps -W、もしWinXPならtasklistでもよし。
もし、Cygwin特有のトラブルと考えるのなら、最低限、
Cygwin、PostgreSQL のバージョンをちゃんと調べて、
OSの種別とバージョンも添えて、
Cygwinスレ(UNIX板とWindows板にある)にでも聞くべし。
ついでに。CygwinのPostgreSQLなら、ぐぐったらもっと新しめの情報がいくつも見つかるはず。
少なくとも、古いのを使うならコンパイルする必要があるかも知れないが、最新版なら
とりあえずはCygwinのパッケージの物を使ってもいいと思う…。
その場合
ttp://www.aspect-sys.co.jp/etc/win/xp_db/cygwin/install.html の情報は
2つほど古いので(CygIpc 1.X の情報が書いてあるが、その後、 CygIpc 2.X を使うようになり、
さらに現在は CygIpcを使わずに cygserver を使うわけで。)
655 :
649 :04/11/22 21:16:48 ID:???
無事postgresを起動させることができました できなかった理由がcygipcなんて古いもんつかってたのがいけなかったみたいです cygserver使ったらいままでの嘘みたいにすんなりと出来ました。 助言くれた人たち、ホントありがとうございます
>>655 よかったね。年末にはPostgreSQL-8.0が待ってるからそちらもがんばってくれ。
ちなみに8.0はCygwin不要。 現在beta4が出てる。
さっきbeta5が出た。 beta4はなんかやばいのでやめた方がいい。 beta3はOKだったのだが。beta5はまだわからん。
報告よろ
CSE使ってPostgresいじりたいんだがiオプションがどうのこうのとでて接続できん Postgresのiオプションてなんですかい?
662 :
660 :04/11/23 22:26:34 ID:???
>>661 pg_ctl の引数の "-i" やらtcpip_socket = trueやらとわけわかめですが
なんとかできました。thank you!
beta5はどこ?
ftp鯖にある
beta4・beta5ともコンパイル中にエラーが一杯出ますね それ以前のバージョンでは出なかったのに warning: pointer of type `void *' used in arithmetic
Winはまだないのね。
Win用って、バイナリで落ちてるだろ
winでbeta4しばらく使ってたけど不具合にまだであってねーな beta2あたりよりはさすがに安定したというところか 5はどーだろうな
669 :
666 :04/11/24 20:31:12 ID:???
>>667 beta5は見当たらないけど。
tp://ftp.jp.postgresql.org/projects/pgFoundry/pginstaller/
psqlコマンドでパスワード認証ができない(勝手にパスワード入力を飛ばして認証エラー)のを
何とかして欲しい。
671 :
666 :04/11/24 20:52:10 ID:???
672 :
NAME IS NULL :04/11/24 22:41:44 ID:koKizAYz
PostgreSQL7.4.6で、日本語のデータをソートしようとすると、 なぜか上手く五十音順にソートできません。なぜでしょうか? データはカタカナ・漢字が混じっています。 1バイト文字の列のソートはふつうに出来ます。 ex) select * from table order by 2byte asc;
initdbの時にno-localeオプション付けた?
8.0 beta5 の Winバイナリを落とそうとしたら
今回からファイル名に -en が付くようになったけど
beta5 から何か変わったんですかね?
>>668 本体はともかく pgAdminIII は相変わらず不安定まくりだよね
普段使わないけど(UNIX 系では使ったことがない)、
669氏が言ってるようなpsqlも含めて、
どうも直コマンドの操作性が悪いので時々使ってしまう…
Windows版、糞だな。 Linux版でテストは好調だが。
どうせ正式に出ればWindows版のほうがユーザー数があっさりおいこすから 安定性とかすぐに向上する希ガス でもMySQLという例があるしなぁ・・・あれは特別か
そもそも、Windowsと言えども、WindowsXPHomeとかWindowsXPProとかWindows2000Proとかは、 データベース動かすように設計されたOSではないので、安定しないと思うんだが。 わざわざデータベース動かす用のWindowsとか出してきてるくらいだし。
pgAdminIII、只でさえ不安定だったのが、ベータ3以降は さらに磨きをかけたのかメチャクチャ不安定になったな
680 :
NAME IS NULL :04/11/25 16:10:31 ID:7TaEXRyK
postgresql-7.4.6がインスコできないんですが//// 環境はAIX5.2で../configureするんですが,次の makeで Makefile:13: Makefile.global: このパス名の ファイルまたはディレクトリーは存在しま せん。 と出てダメです.Makefile.global.inはあるのですが.そのほかにも, Makefile.portがないとか言われしまいます.どうしたものでしょうか???
で、どうconfigureしたの?
該当のエラーメッセージくらいそのまま載せろボケ
>>678 でも、多数の使用形態になるであろうクライアント機に搭載された
MS-Accessからリンクして使用した場合、Linux版の8とは挙動が違ったり
データビューが化けて(#Deleted)表示されるってのは考え物。
一応テスト用にこしらえた2000serverや2003で実験したけど、これじゃぁ
Windows版に移行しようとする人が躊躇するだろうな。
ユニークインデックス使っただけなのになぁ。
ちなみに激不安定なpgAdminIIIでデータビューを見ると正常。
もしかするとODBCのせいかな。
ftpに上がってるスナップショットの最新は08_00_0002になってるし。
(うまくインストール出来ないのでテストしてないけど)
684 :
680 :04/11/25 17:00:34 ID:7TaEXRyK
Makefile:13: Makefile.global: このパス名の ファイルまたはディレクト リーは存在しません. gmake: *** No rule to make target `Makefile.global'. Stop. 上記2つがmakeしたときに吐き出せられたエラ-メッセ-ジです. configureはごく普通に ./configereしただけです.configureの時の エラ-メッセ-ジは下記のとおりです. configure: error: readline header not found If you have readline already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory. Use --without-readline to disable readline support. 教えて君ですいません.どうぞよろしくご教示して下さい
門外漢がしゃしゃり出てスマン >readline header not found >Use --without-readline to disable readline support readlineでググれば何か出てきそうな気がするけど
configureでエラーでてるのに、makeが成功するとでも思ってるのか?
とりあえず、configureとは何のためにするものか makeとは何のためにするものかを理解しないと、 説明するだけ無駄のような気が… AIX使ってるくらいだから仕事だと思うけど、 だとしたら今後困るんじゃない?
ODBCってあまりつかわんからなぁ そっち方面の不安定さはわからん
>>683 #Deletedって、Linux版の8だとちゃんと表示されるようになったの?
それならありがたいんだけど。
690 :
680 :04/11/25 21:42:44 ID:7TaEXRyK
>>689 それって確か今までのLinux版でも主キーにオートナンバーを設定してると
Access側でビューを見たり入力したりする時に#Deletedって出る話ですよね。
それなら8ではまだ実験してないです。
692 :
NAME IS NULL :04/11/26 17:05:36 ID:4/aP9aPl
P3 3GHz/1GB/SATA HDのマシンにpostgresql-7.4.6をインストールして 単純なデータファイルのアクセス用に利用。ただし、遅い気がする。 ↓がpgbenchの結果となりますが、これはマシンの性能並なんでしょうか? データベースは専用のSATA(160GB,7500回転)に載せてます。共有メモリ は物理メモリの半分の512MBに設定してます。 transaction type: TPC-B (sort of) scaling factor: 1 number of clients: 1 number of transactions per client: 10 number of transactions actually processed: 10/10 tps = 373.580395 (including connections establishing) tps = 421.567388 (excluding connections establishing)
693 :
NAME IS NULL :04/11/26 17:08:28 ID:4/aP9aPl
×P3 3GHz ○P4 3GHz のマチガイ。
だから、SATAとか7500回転と言われてもさ… もっと重要なことを書いてよ… OSとか、指定したオプションとかさ…
695 :
NAME IS NULL :04/11/26 17:47:34 ID:4/aP9aPl
Redhat Enterprise Linux(Kernel 2.4.21-4.ELsmp on an i686), Pentium4 3.0(HT) っていうか比較できるpgbenchのベンチマーク結果がほしいだけなんだけど
696 :
NAME IS NULL :04/11/26 17:55:25 ID:AQ+rVg4K
PostgreSQL7.4.2を利用していますが、 timestamp型をdefault 'now'でテーブル作成すると、 以前のバージョンはINSERT時に省略するとそのときの時刻が入っていたのですが、 今はテーブル作成時刻にセットされてしまいます。 回避する方法を教えていただければ助かります。
>っていうか比較できるpgbenchのベンチマーク結果がほしいだけなんだけど え?バカなの?
698 :
NAME IS NULL :04/11/26 18:04:12 ID:4/aP9aPl
>え?バカなの? もういいよ。確かに聞いたおいらがバカだった
自分の出した情報だけじゃ比較できないと気がついてない方がバカだと思うな
しかしまぁこのスレ、仕事で使ってるっぽい人が多いのに、 恐ろしくレベルが低くて無礼な奴が多い気がするんだが…
. ィ .._ .......、._ _ /:/l! またまたご冗談を :~""''.>゙' "~ ,、、''‐'、| みなさん無職ですよ ゙、'、::::::ノ:::::::_,.-=. _〜:、 /_.}'':, ``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ ,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:' ノ゙ノブ " .!-'",/ `'-‐'') /\ `/ でノ-〈 .-''~ >'゙:: ‐'"゙./ ヽ.,' ~ / //::::: ', / ,:'゙
無職なのに妄想AIX使い! 無職なのに妄想RHEL使い! 道理で詳しくないわけだ
リアル無職な俺が勝ち組('A`)
まー俺も、Oracleのチューニングとか出来るけど無職だな orz
ブラック企業に引っかかったら大変だからな ハロワなんて法に違反した内容の求人票でも受け付けちゃうし
2相コミット使える? JTAでJMSと同じ卜ランザクションで扱えられれば いいとふと思ったんだけど
ハローワークでたまに求人見るけど、IT関連はほとんど人材派遣だしな。
709 :
NAME IS NULL :04/11/26 22:18:29 ID:4/aP9aPl
いきなりバカだもんね びっくらこいたよ
8.0 beta5ってアンインストールすると postgresのユーザーが残っちゃうみたいだね。 コントロールパネルのユーザアカウントには表示されないのに 新規ユーザでpostgres作ろうとすると「既に存在します」になる。 困った。
>>709 自分からろくに情報を出さないのに、比較したいとか言い出したら、
バカだと思われても仕方ないんじゃないか?
ちなみに、いきなりバカだと言われたのは、ディスクの回転数に拘って、 他の情報を出さないで荒れたことが最近あったので、そのせいだろう ディスクの回転数出すなら、他に出すべき情報あるだろって ちょっと上の方見たら解ると思うが
まぁ、よくわかんないけど貼っとく。 Debian/GNU Linux Woody (kernel 2.4.27) Eden VIA Samuel 2 533GHz Memory PC-133 64M HDD UltraDMA/33 5,600rpm Postgresql 7.4.2 オプションとかインストールされたまんま。 $ pgbench tome starting vacuum...end. transaction type: TPC-B (sort of) scaling factor: 1 number of clients: 1 number of transactions per client: 10 number of transactions actually processed: 10/10 tps = 20.079716 (including connections establishing) tps = 20.991910 (excluding connections establishing) たいしたことない用途なので、速度で困ったことない。
>Eden VIA Samuel 2 533GHz 参考にならねーよ
まー、そりゃ速度で困らんだろうなぁ…
716 :
NAME IS NULL :04/11/28 02:26:41 ID:jZVNaIXP
どなたかxmlpgsql使っている方いないでしょうか。 Vine 3.0 にインストールしようとしているのですが、どうにも上手くいかないのです。 元々Debian向けに開発されているようで、 どうやらVineだけじゃなくてRedhatでもインストールできてないようなんですが・・・ それとも他の方法考えた方がいいのかな・・・
>>716 普通にインストールできると思うが。
ちょっとググったら、RH7.1に入れてる人いたし。
というか、一から順に教えてくださいって話でもなければ、
どううまく行かないかくらい書かないと誰も答えようがないわけで。
なんか最近、こういうの多いな…
憂える事態ですね。
CPUクロックが全く生かされてないな。
クロックが生きてないとコンピュータは動かないけどな
533GHz
724 :
NAME IS NULL :04/12/02 01:30:20 ID:w9oX3nEH
俺はコロッケが好きだけどな
Windows版pgAdminIII クエリやSQLが文字化けするからフォントの設定をMSゴシックに変えて 再起動すると、エラーが出て起動しない。 MSゴシックや明朝は駄目でもFixedSysだと問題ないのは仕様ですか? 仕方がないからアンインストール後、残ったゴミファイルやレジストリの それらしき値を消去してから再インストールすると、Administratorでは とりあえず使えるようになるのに、以外の一般ユーザーで使おうとすると やっぱりエラーが出て立ち上がらないは仕様ですか? 結局Windowsを入れ直さないとどうにも駄目なのは仕様ですか?
727 :
NAME IS NULL :04/12/02 19:57:32 ID:YbXY/ZSB
テストDBに10万件ほどのゴミデータを入力して 10万件のデータの検索速度の実験を行おうと考えているのですが テストデータの10万件を登録する最も楽な方法は何だと思いますか? 普通にプログラムで、 for(int i=0; i<1000000; i++) SQL実行関数("insert into table () values()"); でもいいんだけど、プログラム書くのが面倒なので もっと楽にデータを突っ込めるPostgresqlの管理ツールは無いかなぁと。 さらに、できれば、ランダムな文字列とかを挿入できると更にGOODです。 宜しくお願い致します。
>>726 おれデフォで設定何もいじらずないで問題ないけど
>>727 質問の結果を待つより自分で作れば2,3分でおわるんだからそっちのほうがはやいぞ
そんなのここにカキコする時間があったらperlでもrubyででもさくっと書けばいいじゃねーか。 素直に言えよ、プログラムかけませんと。
731 :
NAME IS NULL :04/12/02 20:28:41 ID:ervGI8Vq
732 :
NAME IS NULL :04/12/02 20:30:09 ID:YbXY/ZSB
>>729 楽するのは良くないか〜じゃあプログラムで書くことにするよ。
ところで、MySQLの管理ツールではフリーで「かねやん」というソフトがあったんだけど
それみたいな感覚で使える、Postgresqlの管理ツールってありますか?
CSEというのをSQLクライアントとして入れてみたんだけど使いにくくてね。
最近Postgresqlの管理に関わるようになったので、イマイチ分からないんだよね。
>>730 C、C++、Javaは不得意だけど、遊びでアプレットアルカノイド作れるくらい、VB。
何処までスキルが求められるかによるけど、触れるって程度なのかな?
疑わないでねw
733 :
NAME IS NULL :04/12/02 20:31:18 ID:YbXY/ZSB
>>731 ありがと!!
こういうポジティブな返信を待ってたんだ。
とりあえず、これをODBC経由で取り込んじゃうのが楽そうだな・・・。
やってみるね。
業者からスパム用アドレスでも買っとけ。
735 :
NAME IS NULL :04/12/02 22:17:52 ID:C2POy9Zw
おい、ぽまえら!! 100万レコードのテーブルを2つJOINして、特定のIDの行を取り出そうとすると、 異常に遅いんだが、なんとかならんのでしょうか? 例えば、以下のような処理で、Oracleの100倍以上時間がかかって困ってます。 select * from table1 t1 inner join table2 t2 on t1.id=t2.id where t1.id=100 なお、t1.idもt2.idもprimary keyで、インデックスも作ってますです。 何卒、どうやってチューニングすればよいのか教えてくださいませ。
インデックスを作ったかどうかより、インデックスが使われているかどうかのほうが大事だぞよ
>>735 joinがない場合はどうかね?
それで変わるというのならサブクエリーでやってみるとか
実はID100が50万件くらいあったりしてな
oracleならFirstRows指定でレスポンス重視とかいろいろできるんだよな
>>727 もう8割書いてるのに面倒とか意味解らんぞ。
郵便番号ダウンロードして、伸張して、それをインポートするコマンド打つ方が面倒だろ。
>>728 デフォだとSQLとかで日本語が文字化けしませんか?
項目名とかが日本語だと□□になっちゃうはず
郵便番号辞書を読ませるのは pgpost のスクリプトとか使えば? それとは関係ないが、同じ sql ファイルで30万件ほどのデーターを 読み込ませてインデックス作るテストを Windows 上で 1) coLinux 上の PostgreSQL 7.4 2) PostgreSQL 8.0beta5 for Windows の両方の環境で試したのだが、インデックス作るのにかかる時間が 異常に2が長かった。1では1〜2分だったのに、2では10倍 くらいかかった。データーを読み込んだり SELECT する場合には そこまで差が無かったのだが。 Windows Native の方が当然速くなると思っていたのだが、 何か間違ってるのでしょうか??
Windows用は前途多難だな
まー、OracleをWindowsで使ったって、トラブルはUNIXより多いからな…
>>740 項目名に日本語は使わないときめてるしな
betaはデバッグコードはいってるとか
>>740 プロのデーターベースの世界では項目名やDB名等に日本語なんか使わないのが常識
藻前、多分今までアクセスしか弄ったことないだろう?
あの程度ではデータベースを経験したとは言わないし、あんな見かけだましで標準から外れまくり
ソフトを作ってるような会社が作ったカスソフトをデータベースの標準だと思ってもらっちゃ困る
KUBUN は日本語じゃないのか? ローマ字か、そうか。
まー、中国語でもロシア語でも、駄目だけどな。 プロならダブルバイト文字と言え。
ダブルバイト以外ってのもちょっと微妙だな、ISO-8859-1 とかの 0x80 以上の範囲まで 意味に入っちゃう。us-ascii の英数字とでも言うか。
>>748 マルチバイトキャラクタといえ、プロなら
昔はユーザー名にハイフンも使えなかった世なー
プロなら、全角文字といえ
プロならテーブル名は8文字まででしょ。
>>753 それはプロというよりただの年寄りではないかと。
項目名に日本語を使っちゃだめって言うのも十分年寄りの話だよな
>>739 ダウンロードできる郵便番号のデータって表記がめちゃくちゃだよね。
なんか町名の中にコメントが書いてあったりテキトーな括弧付けしてあったり。
なんとかしてほしい。
>>755 DB自体がマルチバイト通ってもソフトのほうが通らないケースってのも十分あるわけで
特に今は海外発のソフトを使うことが多いしな
むしろ今のほうが慎重になる
そのへんがすべて裏が取れてはじめて項目名やテーブル名に日本語使うのが普通だろ
>>756 邪魔なのは括弧だけのはずだよ。おいらは
#!/usr/bin/perl
require 'jcode.pl';
for (<STDIN>){
jcode::h2z_sjis(\$_); #半角がイヤなとき
jcode::tr(\$_, '()', '()');
s/\(.*?\)//g;
print;
}
とかいうスクリプト(未検証)に流し込んだな。
>>757 いやあ、結局何か障害があれば、ターミナルから直でSQL叩くなんてこと
になる。そのさい使用可能なターミナル/端末が日本語が打てるとは限ら
ない(海外出張時にヘルプが飛んで来たときとかさ)わけだから、テーブル
名、カラム名には非ASCII文字は使うべきではないな。
折れはアルファベットと数字アンスコのみ使うようにしてる。
入門には、日本語だととっつきやすいかもしれんが。
>>757 >>759 うん。だから環境によるよ。
ソフトウェアだけじゃなくて顧客とか自社とかの政治的な環境も含めてね。
漢字は絶対だめ!って思考停止しちゃうおっさんは多いよな。
ま、そのおっさんが政治的な一部であることも多いんだけどさ。
ちなみに、OracleとSQL Serverでは漢字の項目名使ったけど、
運用中も含めてまったくそのことに関しては問題出てないよ。
メリットも結構あると思う。
がんばって日本企業固有の英語になりにくい項目名に、変なローマ字を付けた
り、わけのわからない英語を割りあてたりする必要がなくなる。
仕様書も見やすくなるし。
PostgreSQLではやったことないから、完全なスレ違いだね。すまん。
>>758 いや、物理的な問題じゃなくって表記が不親切って意味です。
たとえば
○○村全体
○○1丁目(○○番地は除く)
○○【○○番地〜○○番地(○○番地は除く)、○○番地】
○○の真珠工場
○○町<○○通りの西側>
(○○通り入る、■■通り下る、△△通り
上る)■■町 ←複数行に跨る
みたいな感じで、各郵便局の担当者がテキトーに手書きしたのもをそのまま打ち込んだ感じなんです。
MS-IMEの郵便番号辞書みたいなきっちりしたものに仕上げるのは大変です。
OracleとかSQLServerでも問題でてるのみたことあるよ 結局海外のツールだったからあたりまえというか それがLinuxやUnix環境でさわってると日本語が化けるツール等がわりかし多く、 運用管理するツールの選択肢が狭められること、担当者が自分以外にかわったとき 適当に拾ってきたツールがうまく動かないじゃないかといわれたりするので できるだけ使わないほうがいいという状況は今も変わってない コード書く人間からするとわざわざFEPONにするのが面倒だとかいろいろあるだろうけど 結局後から追いやすい日本語のほうが俺もいいとは思う 実際のところローマ字あてると人によって jyutyuuとかjyutyuとかjyuchuとかいろいろあるし かといって英単語を苦労して当てると聞いたことのないものだったりして 理解に苦しんだりまぁどっちに転んでも問題山積みはかわらん 言語にJavaを選べばまずマルチバイト通るからすべてのツールはJavaを通すこと、 IDEから含めてマルチバイト圏の人がすべて設計から開発までしてること という条件があるなら安心していけるけど、実際はIDEもすべてあちらだし ツール類ももちろんすべてあちら そしてそれらをすべて自作しようと思うとコストがかかりすぎる
>>761 いや、それがデータとして正しい。
郵便番号がユニークキーであって、住所番地がキーのデータではないから。
郵便番号には、複数の住所が結んである場合も当然あるので、そうなるのは仕方ない。
郵便番号簿というのは、住所から郵便番号を調べるためにあるので、
日本語で読んで解ればまったく問題がないものだし。
役所が電子化する以前のシステムなので、それは仕方ないよ。
だから、郵便番号を入力すると、住所を補完してくれるサイトなんかを使うと、
普通に『西新宿(次のビルを除く)』とか変換されて悲しくなったりすることもあるけど。
>>763 まあそうなんだけどね。
結局根性で整形するプログラム書いたので今楽ちんだけど。
>>760 確かにAccessVBA+SQL Serverのシステムでテーブル名もカラム名も、
コード内の変数名までみんな漢字というのを見たことがあるが、あれはあれで、
見易くはあるな。
仕様書が見易いというよりは仕様書なしでいきなり作られてて製造者が逃げて
泣きつかれた時なんかはコード追っかけやすくてよさそうだった。
日本語ベーシックみたいで俺はダメだぁ・・・
システムに使うすべてのOS、アプリケーション、言語などが、 同じ文字コード前提で、それに対応してるのなら、使えるのは当たり前だわな。 Windowsサーバに、WindowsOracleに、ASPなら問題も出ないだろうし、 AccessにSQLServerでも問題は出ないでしょう。 ユニコードになれば、何語で書いても使えるようになるんじゃないの?
ハングル混在とかは問題がありそ
120 モシ A=4 ナラ 250 ヘ イケ
ぴゅう太乙
トンパ文字
アラビア語みたいに、右から書く言葉が混じるとつらいね。
PostgreSQL-8.0.0 RC1出ました。
774 :
NAME IS NULL :04/12/04 21:07:21 ID:OjLRj/5y
ユニコードにも各ベンダに解釈の違いがあるのよ。特にOracleはひどい
誰が見てもわかるPostgreのインストール手順が 書かれているサイトってありませんか? いろいろ本見てやっても上手く逝かないんです。
>>775 「誰が見てもわかる」って幼稚園児とかも含むのか?
>776 釣りですか?ほとんどの幼稚園児が postgreを理解できるわけないと思いますが・・。 すみませんが、真面目に困っているんです。
自分が幼稚園児級に見られてることも知らず・・・
OSは? 何をやって何がうまくいかなかったの? 質問の定型さえそろえられないなら園児以下と見られてもしかたがない
freeBSD5.2で、7.4.6をかつおぶしのTipsを見ながらやってみましたが、 gmakeのコンパイルで最後のReady to install.が出なかったです。 明確にエラーとは出なかったのですが。 また、ある本を見て6.3.1をインストールしてみたのですが、 こちらもgmakeが通りません。こちらははっきりとエラーがでました。 エラーは必ず同じ内容で、再現します。 ちょっと今はマシンの電源を落としてしまって明記できませんが。 gmakeのバージョンがかなり新しいので、古いpostgreと 合わないのでしょうか? あと、シェルはbash以外では問題があるのでしょうか?
ふつーにportsでインストールしてください
782 :
780 :04/12/05 22:31:23 ID:???
>781 ネットワークにつながっていないですが、 問題ないでしょうか?
ネットにつながってないと、むずかしいと思う。 とりあえずインストールの時だけつなぐというのは?
784 :
780 :04/12/05 22:59:00 ID:???
>783 どうやって繋げばいいのか分からないので、 そこから調べないといけません。 安全、迅速にインストールする方法はないものでしょうか? 翔泳社のPC UNIXユーザのためのPostgress・・・ の新版(2004/06)は役にたちませんか? 購入を検討しているのですが。
786 :
780 :04/12/06 00:28:24 ID:???
>785 何故、その書籍がお勧めなのでしょう?
>>775 そういう人のために、SIベンダという業者があるんだと思いますが。
まさか、技術者や研究者なのにインストールできないとかいうオチじゃないですよね?
>>780 PostgreSQL本といえばコレ というくらいのバイブルだからです。
初版は無料でPDF公開されているというオマケ付きです。
最新版は第4版です。PDFを見て気に入ったら買うといいと思います。
通称シーラカンス本だっけ たしかにこれがスタンダード 初版はさすがに内容が古いな
とりあえず今売りのSoftwareDesign買え
日を求めるのに、一桁の場合01のように前に0をつけたい のですが、どのようにすればよいかわかりますか? date_part関数だと0がつかなかったので。 ご存知の方よろしくです。
それは、数字や日付という扱いではなく、文字列にすると言うこと? 普通に文字列扱いにして、一ケタなら0を加えるようにすればいいのでは。
794 :
792 :04/12/06 15:12:21 ID:???
> 793 その通りだった。 汚してスマソ
vacuumdb -f dbname をすると、1GB程度メモリを使って解放しないのですが、 これはやり方がまずいのでしょうか? クーロンで一日一回実行していますが、PostgreSQL自体も再起動させたほうが いいのでしょうか?
だから、環境くらい書けと何度言ったら(ry
あと、環境に、ディスクの回転数はいらないからな。
799 :
796 :04/12/07 14:04:38 ID:???
失礼しました。環境は [PostgreSQL] 7.3.4 [postgresql.conf設定] max_connections = 128 shared_buffers = 256 [HDD] da0: <FUJITSU MAN3184MP 5507> Fixed Direct Access SCSI-3 device da0: 160.000MB/s transfers (80.000MHz, offset 127, 16bit), Tagged Queueing Enabled da0: 17366MB (35566478 512 byte sectors: 255H 63S/T 2213C) [CPU] CPU: Intel(R) Pentium(R) III CPU family 1133MHz (1130.45-MHz 686-class CPU) [メモリ] real memory = 2147475456 (2047 MB) avail memory = 2084921344 (1988 MB) [OS] FreeBSD 5.2-RELEASE [カーネル再構築] options SYSVSHM #SYSV-style shared memory options SYSVMSG #SYSV-style message queues options SYSVSEM #SYSV-style semaphores options SHMMAXPGS=4096 options SHMSEG=256 options SEMMNI=256 # 150/4以上 options SEMMNS=512 # 150以上 options SEMMNU=256 # SEMMNS/2+1 options SEMMAP=256 # SEMMNI + 2
システムがキャッシュしてる領域じゃなくて?
「解放」の定義が庶民と違うのかもね
802 :
796 :04/12/07 16:35:32 ID:???
バッファでもキャッシュでも共有でもなくメモリ使用自体がグッと増える んですが、それが解放されていません。 vacuumdb -f dbname を実行したごく短時間のうちに1GBほどが・・・。
803 :
NAME IS NULL :04/12/07 18:18:44 ID:5n3ZVKvN
postgresqlで作成したテーブルの属性を確認するには どのコマンドなのでしょうか? oracleでいうところのdescです。
\d
805 :
803 :04/12/07 18:50:11 ID:5n3ZVKvN
>>804 とても助かりました。ありがとうございます。
テーブル t1 に 100 件のデータがあります。 そのうち 90 件の郵便番号 zip にデータが入っており、残り 10 件は NULL です。 その時に select zip from t1 where zip not like 'abc'; は 100 件を期待したのですが、NULL の 10 件を除いた 90 件が返ります。 select zip from t1 where zip not like 'abc' or zip is null; かな、と思ったのですが同じように 90 件です。 NULL を「abc」じゃない、と見なして 100 件にする方法はありませんか?
zip is null or
>>802 で、vacuumdb実行前後のswapinfo,vmstatとかの結果はどうなってんのよ。
>>806 >807に答があるが補足な。
NULLは特殊な値で、IS NULL/NOT NULLでしかSELECTされないのだ。
俺もはじめのうちはハマったな。NULLには。
NULLは「abc」でも「abcじゃないもの」でもない、なにもないんだね。
NULLとブランクを混同すると駄目だよな。
それは駄目すぎだろ。このポコチンが!
そのようなおぞましいもの、ついてませんが、なにか?
現在 クライアント:Win+C+libpq IP 192.168.0.100 サーバー:Vine+PostgreSQL7.4.5+OpenSSL IP 192.168.0.200 db.****.jp でプログラムを作っています。 pg_hba.confに hostssl all all 0.0.0.0 0.0.0.0 trust を追加 クライアントのCのプログラム内で conn = PQconnectdb( "host=db.***.jp dbname=111 user=aaa sslmode=require"); とし、接続しようとすると 「pg_hba.conf内に192.168.0.100 dbname=111 user=aaaは記述されていません? SSL=Off」 というような内容のエラーがでます。 同様のプログラムをサーバー内で実行したところエラーはでませんでした。 クライアント側から接続するにはどうすればいいのでしょうか?
time型データで ----time-------- 19:21:01.159871 19:22:36.451286 18:45:24.484522 14:28:15.234152 を時間別に集約したSQL文をどう書けばいいかわかりません。 ↓これはだめでしたこんなかんじです。 select time,count(*) from table group by substr(time,1,2) 結果 時間--件数-- 14 1 18 1 19 2 と取得したいのです。
817 :
NAME IS NULL :04/12/08 20:15:35 ID:chzY6eiR
timestamp型の端数を切り捨てたいならextractと同じような関数がもう一個ある date_trunc('hour', current_timestamp) time型を使った時点で負け組
>>814 libpqがsslに対応してないとか。
819 :
814 :04/12/09 02:05:18 ID:???
>818 PostgreSQL 7.4.5 文書ではSSLに対応しているとでています。 ですが、クライアント側で使用しているlibpqのヘッダ・ライブラリは確かどこかのHPで拾って きたもののような気が・・・。 調べてみたところ、「nmake /f win32.mak」のコマンドでwindows用のファイルを作成するようなことが出ていますね・・・。 今は手元に作成中のプログラムがないのですが、今度やってみようと思います。
820 :
815 :04/12/09 13:27:50 ID:???
>>816 >>817 ご回答の程、ありがとうございます。
extract関数は知りませんでした。
ただ、この関数だと直接データを指定するのみで
テーブルのフィールドデータはどのような記述になるのでしょうか?
select date,time from table
group by date,extract(HORU FROM time time)
姓 | 名 | date 山田 | 花子 | 2004-12-03 山田 | 太一 | 2004-12-03 村上 | 健一 | 2004-12-04 村上 | 健一 | 2004-12-04 藤本 | 太郎 | 2004-12-05 田中 | 次郎 | 2004-12-05 山田 | 花子 | 2004-12-05 2004-12-05以前には存在しなくて、2004-12-05 のみ存在する名前の一覧。 ここでは 山田 花子 は 2004-12-05 に存在するのでアウトで 藤本 太郎 と 田中 次郎を抜き出すにはどうすればよろしいでしょうか?
822 :
821 :04/12/09 16:35:42 ID:???
間違いました。 > 山田 花子 は 2004-12-05 に存在するので 山田 花子 は 2004-12-05 以前にも存在するので
(select first_name,last_name,date from t1 where date = '2004-12-05') EXCEPT (select first_name,last_name,date from t1 where date < '2004-12-05')
>820 こんな感じ select extract(HOUR FROM time) from table
select first_name, last_name, date from t as t1 where date = '2004-12-05' and not exists (select * from t as t2 where t1.first_name = t2.first_name and t1.last_name = t2.last_name and date < '2004-12-05')
826 :
1/2 :04/12/10 16:10:55 ID:vBo2xf8o
長文失礼します 例の郵便番号を10回読み込ませて、擬似的に100万件のデータを登録しました。 それで、検索速度を調べてみました。 INDEXは郵便番号部分と、住所カタカナの部分に張りました。 1.SELECT * FROM 郵便 WHERE 郵便番号 = '111-1111' これは早いです、0.1秒の世界。 2.SELECT * FROM 郵便 WHERE 住所カタカナ like 'ドコカノマチ%' 下方への曖昧な検索です、これもなかなか早い、0.8秒の世界 問題なのは次です。 3.SELECT * FROM 郵便 WHERE 住所カタカナ like '%ドコカノマチ%' 上方と下方への曖昧な検索です、これはめっさ遅い、30秒の世界。 問題を調べていくと、メモリキャッシュが1,2では有効に働いていて 3.ではディスクアクセスが頻繁に発生しています。 仕方ないので、共有メモリを鬼のように取り、shared_buffersを増やしてみました。 だが、変化無し。 何か良い解決手段はないでしょうか? マシン構成とOSは次のレスで書きます。
827 :
2/2 :04/12/10 16:16:26 ID:vBo2xf8o
マシン構成 CEL_1Ghz MEM_512MB OS:FreeBSD5.3-Release DB:Postgresql-7.3.8 [ カーネル ] options SHMMAXPGS=40000 [Postgresqの設定] shared_buffers = 16000 今はテストマシンを使用しているのですが 実メモリを2Gにして、共有メモリを1G単位で取れば メモリキャッシュが有効になるのかなぁ・・・。 とりあえず、解決方法を知っている方がいたら宜しくお願いします。
>>826 1と2はインデックスが効くけど、3は効かない。
PC側の設定で凝ったことはしたこと無いが、速度的にはそんなもんじゃないかな。
部分一致を高速に検索するなら、検索用のテーブルを作るしかないんじゃないかな。
インデックスが使えるか使えないかだけの話だよね。
>>826 like を使わずに済むようにデータ構造を見直すか、
DB 使わず全文検索エンジンでも使うとか。
>>826 みたいな書き込みを見ると、ハードの高性能化に押され気味な
ソフトウェア技術者の存在価値がまだまだ残っているなとほっとするよ。
むしろ
>>826 はSQLしってるひとからみたらつりかと
まぁ、色々な人がかねてから指摘してることだが 商売や研究や勉学でやってるはずなのに、レベル低すぎ と言うことだな。 趣味的に遊んでる人は勝手に悩んでればいいけど。
それだけ裾野が広がったと言うことだろうが、 俺たちの時代はみんな独学でブツブツ…(ry
EUC環境で構築したPostgreSQLのサーバに対して 同じくEUC環境のTomcatサーバと UTF-8環境のTomcatサーバの二つからアクセスしています。 当然EUC環境同士は問題ないのですが、UTF-8のTomcat上で動くServletから 日本語を含んだINSERT文を投げると、文字化けされた状態でDBに登録されるのですが、 なにか回避方法はありますでしょうか? ちなみにINSERT文を実行する直前にそのSQLをSystem.out.println(...)で出力しても コンソールには日本語が正しく表示されます。
>>835 変換してないんだから当たり前。
コンソールで文字化けしないのも当たり前。
>>836 だから835はその変換方法が知りたいんだろ?
>なにか回避方法はありますでしょうか? が、質問なんだから。 変換すれば? が、答えだな。
というか、Javaから使うならUnicodeデータベースにしておけ、と。
Tomcat両方ともEUCにすりゃいいじゃん。
Postgresがディスクに吐き出す各種実ファイルに関するの資料、ていうのは どこぞに無い物だろうか。いや、なんか鯖を長期放置するとレコード数に変化は ほとんど無いのに(更新は頻繁らしい)TOASTのファイルが膨れ上がってディスク 圧迫するから調査汁、との命が下ったので調査している訳だが。 ドキュメントにはそういった低レベル層の情報は記載されておらず、ググっても 探し方が不味いのか「TOASTによって1レコード8KBの縛りが解けた」程度の物しか かからん...。 解決案だけならバキュームorリインデックスor鯖の再立ち上げすれば直る、との 事例が何件かかかりはしたが、調べたいのは解決方法では無く膨れる方の原因。 ううむ。
Tomcatの出力とDBのコードとはまったく関係ないぞ Javaは内部はすべてUTF8だし
>>841 Postgresは更新(UPDATE)の場合でも、古いデータはそのまま残して、
更新後の新しいデータを挿入するから、更新が頻繁だとほっとけば
更新の分だけ膨れますよ。削除(DELETE)も同じでデータそのものは
残ってます。この辺りはMVCCの弊害かな。
>>842 入力だろ。
ブラウザのフォームから送信されてきた文字コードが関係してくる。
Tomcatに載せてる(固定HTMLでもいいけど)アプリケーションから文字コードがEUCで送られてくれば
EUCのまま処理されるし、UnicodeにしてればUnicodeのまま処理される。
846 :
NAME IS NULL :04/12/14 13:23:22 ID:isOo4OrY
データ件数に対する、キャッシュの量の目安について質問します。 メインのテーブルのデータの件数が1万、10万、50万の 3つのデータベースがあったとして それぞれ、どれくらいのメモリキャッシュサイズが適当だと思いますか?
>Javaは内部はすべてUTF8だし EUCで入力すれば、ずっとEUCのまま扱われるわけだが。
>>846 それだけで答えが出せるとマジに思ってるわけ?
>>851 頭大丈夫か?
普通はServletRequest.setCharacterEncoding()とか
web.xmlの中にフィルタの文字コード設定いれてフィルタリングするかだろうが
StringはUTF8以外を格納したときの動作保障ないんだから
そこに無理やりへんなのいれるって・・・
>>835 「EUC環境」「UTF-8環境」ってどういう意味で使っているのですか?
その文字コードでHTTPレスポンスを出力しているということですか?
Postgresは使ったことないですけど、きちんと設定してあればJavaプログラムと
DBとのやり取りで文字化けが発生することはないです。もしHTTPレスポンスの
文字コードによって文字化けが発生したりしなかったりするとすれば、HTTP
リクエストのハンドリングをきちんとしていないのではないかと思います。
>>842 Javaの内部コードはUCS2です。
>>852 するだろうがって、してないからそのままなんだろ。
それは変換するように設定してるからであって、
JavaがUTF-8なのとは何の関係もないことだが。
質問の内容飛ばしてるから荒れてるんだろ 質問者は、UTF-8のTomcatからEUCのDBサーバに INSERTすると文字化けするけど、EUCに設定してる Tomcatから呼ぶと文字化けしてないと言ってるんだぞ。 EUCの文字、そのままEUCのDBに入れれば、文字化けもせずに入るのは当たり前。 UTF-8の文字を、そのままEUCのDBに入れれば、文字化けするのは当たり前。 JAVAだから、Tomcatだからなんて全く関係ない。 PHPだって同じ。
>>852 頭大丈夫か?
EUCのDBにデータ入れるのに、UTF-8に変換してどうするんだよ。
EUCのデータをそのまま流して問題ないと言ってるんだよ。
EUCのデータが問題があると言ってるのなら、確かにそうだが。
俺はTomcatに詳しいぜと言いたいだけだろ
>>853 Stringは内部でたしかUTF-8だったような。
コード書く側はキャラクタはUCS2なのでまったく意識しないけど。
>>854 してないのが問題って普通は思うねぇ。
>>835 ユーザーからのリクエストをそのまま流すってことはやめたほうがいい。
サーブレットコンテナによって、特にGETのエンコーディングは
ややこしいからちゃんとサーブレットフィルタとかを導入したほうがいいよ。
PostgreSQLにたいしてはJDBCドライバレベルでUTF-8からサーバーの
設定されたエンコーディングにコード変換されるわけで、そこをUTF-8
以外にしているということは危険かと思う。
>>856 俺が言ってるのはJavaの内部で扱うコードはUTF8にしていれば
JDBCドライバがEUCなりUTF8なりサーバーの環境に合わせた
保存形式にしてくれるから、ということだった
最後の行のとこを言いたかったのだけど説明不足ですまんそ
>>858 言語仕様やVM仕様では、StringクラスはUnicode(=UCS2)文字列を表す、
とはあるけど内部コードがどうかはわからんですね。char=16bitだから
UCS2だと思ってたんですが、明確な根拠が見つからん:-)
>>858 だから、お前は自分の知識を披露したいだけで、質問に答える気はあるのかと。
スレ違いなんだよ、JAVAの内部の話なんて。
>>861 今回の
>>835 の問題はPostgresのほうではなくて
Java側のコードに問題があるとみんな指摘しているだろうに
だからスレ違いなんだって。 日本語読めない奴に注意しても仕方ないけど。
>みんな指摘しているだろうに 多分お前だけだろう
あるデータベース(foo)の特定のテーブル(bar)だけダンプ(hoge.dump)して、いじくった後、 ダンプされたもの(hoge.dump)を元にデータを復元するのって、どうやるんですか?
このスレって質問に答えないで 貶す人が多いですな。
仕方ないよ 厨しか集まってこないんだから
>>865 $ pg_dump -d foo -t bar > hode.dump
:
(barを弄くり倒す)
:
$ psql -d foo -c "drop table bar"
DROP TABLE
$ psql -d foo -f hoge.dump
>>868 サンクス!
DROP TABLE は必須なのですか?
$ psql -d foo -c "drop table bar"
をやらずに、いきなり
$ psql -d foo -f hoge.dump
やるとまずい?
>>866 答えられる質問をしないというのもあるわな…
たいがい、スレ違いだったり、同じ文言で検索したら答え出るようなことだったり、
環境とか必要なことを1回で出してこなかったり…
質問者のレベルも明らかに下がってる
>>869 DROPしないとテーブルが既にあるから作れませんと言って断られる。
PostgreSQLのダンプは開いてみれば分かるけどテーブル作って、
データコピーして、インデックスやシーケンス作ってってやるだけ
なんで、現存するテーブルはDROPしないと
>>870 しかし、初心者スレも無い状態で
Postgresqlのことならここで聞けという文言がある時点でそれは仕方ない気もする。
ざっとスレ見た感じ、
仕事等で部下を育てられないタイプが多そうだな、と感じた。
マニアには人格が未熟な人も多いのです
技術や知識は他人がやってるのを見て自分の物にするのが一番いい 教えて貰ってたらいつまでたっても身に付かない
[いっかい やすみ]
技術や知識は他人がやってるのを見て自分の物にするのが一番いい 自分が先にやってたらいつまでたっても身がもたない
>>872 初心者スレという存在も免罪符でどうかと思うけどね。
自分で初心者だと思ってるのなら、本の一冊買って読んだり、
ここのやMLのログ読んだりして一通り勉強くらいするでしょ。
初心者ったって、読書や質問の仕方が初心者なわけじゃないんだし。
そういう初心者もありうる。
それは親に教育し直して貰おうよ。
以前のバージョンって ALTER TABLE で外部キーをはるときにそもまま上掛けたけど 今のバージョンって先にDROPしないとエラーになりますよね。 REPLACEみたいなオプションってないでしょうか?
881 :
814 :04/12/16 10:08:18 ID:???
PostgreSQL7.4.5のヘッダファイルとWindows機にてコンパイルしたlibpqdll.libを VC++のプロジェクトに、コンパイルしてできたlibpq.dllをsystem32に入れ実行しても 前回と同様のエラーが発生します。 他になにか原因はあるのでしょうか?
>>877 免罪符とか宗教チックで難しい話になる以前の問題として
初心忘るべからずという事じゃないかな。
と、そろそろこの話は止めた方が良いような気もする。
多分解決しない。
まぁ、次スレから
>>1 にテンプレ入れようぜ。
ちょっとはググレ、ちょっとは説明書読め、すこしは過去ログ遡れ、
くらいは。
884 :
NAME IS NULL :04/12/16 18:01:12 ID:J+JPYMLL
Postgres+php5を使ってcsvデータを取り込むと文字化けしてしまうんですが 何か良い方法はありませんか?
早速だけど、どういう方法でやって失敗したとか、OSは何かとか、 PostgreSQLのバージョンとか、ファイルの文字コードとか、そういうの書こうよ orz 自分がそういう質問をされたとき、それだけの情報で答え返せる?
886 :
NAME IS NULL :04/12/16 19:10:49 ID:J+JPYMLL
すいませんまだバージョンとかよくわかってないもので。 Postgres7.4.5 + php5 1.3.31 csvファイルの文字コードがShift_JISです見づらいですけどご容赦ください
いやだから、どういう方法で失敗したのかというのが一番重要なわけで…
>>886 あとpostgreSQLの文字コードと、phpで変換どうやってんのかだな。
それとどうやって文字化け確認してるか。
ターミナルでpsql使えるのか、webベースでブラウザでしか確認とれないのか。
要するに取り込めているが取り出す際化けてるのか、そもそもDBに化けて
取り込まれているのかを切り分けることだ。
>>886 885氏、888氏の言うとおりな気がするが、とりあえず、
$hoge = mb_convert_encoding($hoge,"EUC-JP","SJIS")に一票。
890 :
NAME IS NULL :04/12/16 20:35:15 ID:J+JPYMLL
共同で使ってたやつを知らない間に設定変えられてたみたいです それがわかったんでなんとか出来ました 887-888さんご迷惑おかけしましたホントすいません
で、何の設定だったかも書かない、と。
892 :
NAME IS NULL :04/12/17 01:34:49 ID:ibFP6IpU
初心者スレが出来たら おいらそっちえ行くぞぃ みんな焦ってるみたい
893 :
NAME IS NULL :04/12/17 01:42:23 ID:ibFP6IpU
追伸 テンプレ作って情報まとめてくれくれ 文字コードはWEBがあるとさらにワケワカメ DB自体とっきにくいと思われ
WebProg 板に初心者スレを立てとけばいいと思う。
a と b の2このカラムがあるテーブル test に unique index を設定したいのですが、 create unique index test_idx on test(a,b); b が NULL の場合だと重複したレコードのインサートか可能になるのですが、 いろいろ調べたのですが、不明です。 現在はアプリ側で対応してるのですが、どうやれば unique index を設定できるでしょうか? どなたか教えてください。
デフォのpgbenchで遊んでるんだけど、max_connections = 1024が現在最高値。 今のところメモリ不足でswapしたまま帰ってこないんだけど、 意味があるかどうか別として、どこまで増やせるもんなんだろ?
>>895 それでいいんだよ。unique制約付きのINDEXなんだから。
nullはindexに含まれないが、値が重複すればunique制約を受けるから
インサート出来ない。
まあ、uniqueか結合インデックスのどちらかを諦めることだな。
見た感じaがpkeyなんだから普通にCREATE INDEX (a,b)で検索パフォーマンス
に影響なさそうなんだが。。。
898 :
895 :04/12/18 21:12:23 ID:???
> 897 違うんです。 本当はもっとカラムがあるのですが、aとbを抜き出しただけなんですよ。 実際のところは違うデータなのですが、 aとbの両方のカラムを1セットでユニークなレコードとして扱いたいのです。 なので b に null がある場合には a のレコードに 「田中」ってデータがある場合には 田中, null なデータがいくらでも入るのを防ぎたいのです。 なにか unique index 以外でチェックできればいいなぁと。
制約作りたくないのなら DB制約ではなくてアプリで制約したら?
libpq.dll と libpq.lib を探しまくったのだが、自分の鯖のバージョンのが無い。 これは配布不可なモンなのかな? でも、よくよく探したら、Postgresql-バージョン.tar.gz のInterfaceの中に Makeファイルがあったので、コンパイルしたら無事できた。 だが、MSVCが必要になるのね。 久しぶりに、nmakeなんて使ったよ。 これでEXEから直でDBアクセスが可能になる。 ネイティブなEXEから接続する人って少ないから需要も少なそうだ。 やっぱり、JSP、JDBC経由で、WWWが大人気って事か。
というより、libpqの関数を直叩きする人が少ないと思われ。
MinGW + MSYSとかBCCでもコンパイルできるらしいけどね。
>>902 こんな2ch屈指の過疎板でスレ重複もクソもないから好きにやれば?
むしろ、重複スレ建てまくれ。
8.0.0はクリスマスプレゼントらしい。
RC2 kiteta-。 RC1-ja mokiteta- RC2、インストール時にPostGIS拡張があった。使ってないからまだ分からんが。
907 :
mk :04/12/23 11:57:53 ID:4tNJfqp/
initcb したときに creating information schema... initdb:failed ってでるんだけどこれってどういう意味なん? (TT:)
>>907 初期化処理の失敗でしょ
パーミッションとかじゃね?
実データで8使ってる人なんていないだろうから、 特に問題にならないと思うけど、rc2でやばめのバグが発見されてる。 まあ、いつものことだけど、やっぱり8.0.3くらいまでは様子見をしてた方が よさそうだ。
詳細もしくはソースきぼん
>>910 本家MLだけど、本家ってアーカイブ公開してたっけ。
バグを出した人間は、ただのケアレスミスみたいなこと言ってるけど、
この段階でそういうのが入り込む余地があるってことが、なんか不安。
そうだね。RC2だし。 RC2で新たにエンバグしたんじゃないのなら、しかたないことかと。
913 :
mk :04/12/25 10:40:56 ID:XwNpqCnS
p
>906 それってどこに書いてあるの?
915 :
NAME IS NULL :04/12/25 20:24:14 ID:M5IwN66m
917 :
NAME IS NULL :04/12/26 19:11:15 ID:WYt16Lfk
「postgreSQL」 には 「mysql」のデーター定義で使用する 「AUTO_INCREMENT」のような機能はあるのでしょうか???(@p@)
>>917 何で同じ単語をgoogleに入力して検索ボタンを押さない?
なんでマスコットが象なんでしょうか?
VBでODBC使ってResultset開くいて、一行ずつ取得するPGで 集計関数(max,min)の値を取得するところでエラーになるんですが、 これは、回避できるんでしょうか?
マタークの素人だけど集計してるフィールドを取得する時に 集計前のフィールド名を使って指定してたり?
質問です。 現在Java(サーブレット)でWebアプリを作っています。掲示板のような物です。 サーバはRHL9、PostgreSQLのバージョンは7.4.6です。 画面はShift_JISで指定してあり、フォームに入力された値を サーブレットで受け取り、DBにinsertし、それを閲覧画面で一覧表示します。 実はこれ自体は完成しており、フォームに日本語を入力し、 登録後に閲覧画面に表示させると、無事日本語も化けずに表示されます。 質問はここからです。 そのDBを、pgAdminIIIやEMS PostgreSQL Manager などで見ると 入力された日本語データが全て文字化けしています。 繧ソ繝「繝ェ といった感じで、一見すると UTF-8→Shift_JIS の文字化けのようです。 pgAdminIIIやEMS PostgreSQL Manager等といったツールで、正しく日本語を表示させたいのですが どう設定すればよいのでしょうか? よろしくお願いします。
フォントをMSゴシックに設定してみる
んな問題じゃねぇだろ
クライアントエンコーディングと文字セットが間違ってなければ 化けないと思うのだが サーバエンコーディングがなにで、中に入れてる円コーディングはなにで とかもう一度良く確認しる
データベース作成時は以下のようにしました createdb -E UNICODE testdb ので、文字コードはUNICODE です(Javaを使うため)。 これを表示させるためのクライアントエンコーディングと文字セットがわかりません。 フォーム上から各種データを修正する画面も作ってありますし $pg_dump -b -F c テーブル名 と $pg_restore -d テーブル名 を使用した バックアップやリストアもテスト済みで、日本語など問題なく復帰できることも 確認しているため、運用上の問題は無いとは思うのですが イレギュラー修正時などは直にDBに書き込んだ方が早いので 各種クライアントソフトから修正できないかと思い質問した次第です。
うーん、EMS PostgreSQL Manager Lite で試してみましたが
クライアントエンコーディングをUNICODEとしても、SJISとしても、
文字化けが直りません。というか、どっちも同じ化け方をします。
クライアントエンコーディングをSJISとした場合は、DBがUNICODEですから、
>>922 のように化けるのは納得がいくんですが
クライアントエンコーディングをUNICODEとしても全く変化がないのが納得いきません。
どこか見落としているんでしょうか?
クライアントで表示する時winとかSJIS環境なら、 例えば、SET CLIENT_ENCODE TO SJIS; でサーバから受け取るのがSJISになる(サーバ側で変換してるのか、ローカルのlibpqによるのか良く知らないけど) で、クライアントがSJISで受け取ったとして表示させるには、 そのクライアントでSJISに対応した文字セットを使わなきゃいけない。 あなたの使ってるPosgreSQLManager(win)ならDatabase Proertiesで Client EncodeingをSJISにFont CharsetをSHIFT JIS_CHARSETに。 そんでOptions > Environment Options > Fontsで MS UI GothicとかMS PGothicとかMS 明朝とか日本語が表示できるフォントセットに すればOK。 今試したけどこれで問題ナッシングだよ?
>>928 その設定で化けるんで、もうお手上げです。
何が原因なんでしょうか…
ちなみに、さっきPowerGres落としてきてWindowsマシンにインストールし、
PowerGresサーバマネージャ(GUI)でDB作って、
PowerGresの方を使う設定にしてから自分の作成したWebアプリで
書き込んだりしてみた後、PosgreSQLManagerで中を覗いてみたところ
文字化けせずに表示されました。
一層わからなくなりました。
すいません、ややこしくなりましたが 整理します ・Webアプリ側の設定は(使用するDBの記述以外)変えていない ・RH側はPostgreSQL7.4.6、Win側はPowerGres1.2(試用期間) ・RH側で作ったDB、Win側で作ったDB、共にWebアプリからの書き込み/閲覧は問題なし ・PosgreSQLManagerで覗いたときに ・RH側で作ったDBは化ける ・Win側で作ったDBは化けない です。 原因を思い当たる方がいれば、よろしくお願いします。
Windowsのバージョンは何?
Windows2000 SP4です。
>>930 実は、WebアプリがDBに書き込んでいるコードがUNICODEではないとか。
どうすれば直るとか、どうやって確かめるかはわからないですが。
>>933 さっきそれを思い立ち、RH側で
createdb -E EUC-JP testdb
として、Webアプリから書き込んでみたんですが、そうすると
createdb -E UNICODE testdb
としたときと全く同じでした。Webアプリでは読めるし、PostgreSQLManagerでは
繧「繝ェ…といった全く同じ文字化け
-E オプションが効いていない?それとも別の何か…
余計わからなくなってしまいました。
クライアントがWin2000なのが問題では。 ためしにやってみたらXPだと化けず、2000だと化けた。 まあ、2000でも化けずにすむ方法はあるのかもしれんが オレではわからん
>>935 マジですか!それが原因なんですかね。
自分はWin2kしか持っていないので根本的な解決にはなりませんが、
>>922 の通り運用上の問題はとりあえず無いので
原因がわかっただけで充分助かりました。
いずれWindows機を買い直すときが来たら、そのときはXPになっているはずなので
改めて試してみたいと思います(いつになるかはわかりませんが)。
わざわざ試してくださった方々、ありがとうございます。
937 :
935 :04/12/30 16:54:43 ID:???
スマン。漏れの勘違いだった・・・ win2000でも表示されてますた・・・あとで吊ってきまつ・・・ さて、再度確認 ・postgres.confのclient_encodingはUNICODEになっているか(コメントになってないよね?) ・psql -lで該当のDBのencodingはUNICODEになっているか ・クライアント側でconvertまたはSET client_encode使ってSJIS変換して selectかけると文字は正しく表示されるか ・サーバ側のlogにWARNING: ignoring unconvertible UTF-8 characterとか出ていないか
>>937 すいません、間抜けでした。
・postgres.confのclient_encodingはUNICODEになっているか(コメントになってないよね?)
これです。どうやらいつのまにかデグっていて、古いファイルで上書きされていた模様です。
これ元に戻して再起動したところ無事表示されました。
本当にありがとうございました。
939 :
935 :04/12/30 18:24:01 ID:???
無事解決してよかった。 じゃ、そろそろ吊ってきます λ......
成仏しろよ
>>917 MySQLのAUTO_INCREMENTに相当するのはSERIAL
SQLが書かれたファイルを実行するのに psql -e -f file.sql [dbname] としますが、このときコマンドラインオプションか何かでfile.sqlのSQL文に変数を設定するようなことはできますか? イメージはmake CFLAGS='-O2' のような感じ。 file.sqlで環境変数が読めるだけでもいいのだが。
943 :
NAME IS NULL :05/01/04 00:48:25 ID:j9ki8lI7
PostgreSQLでラージオブジェクトとしてPDFファイルを登録しています。 そのラージオブジェクトを読み出す場合に、PDFファイルの表示が出来ない ウェブブラウザの場合には、ファイルを保存するためのダイアログが 表示されます。 その時の保存ファイル名が、PHPファイル名(get_pdf.php等)になってしまいますが、 news.pdf のように変更する事は出来ますか? 具体的には、リンク先に get_pdf.php というファイルを設定して、 このPHPファイルには次のように書いてあります。 // get_pdf.php の一部 $con=pg_connect("dbname=some_db user=www"); $sql="SELECT oid FROM some_db WHERE news_No=3"; $result=pg_query($con, $sql); $oid=pg_result($result,0,0); $fd=pg_lo_open($con, $oid, "r"); pg_lo_read_all($fd); pg_lo_close($fd); pg_close($con);
>>943 phpを使っているならphp側の仕事だな。
header()関数を使って
Content-Disposition:とContent-type:を吐き出しておく。
946 :
NAME IS NULL :05/01/04 18:21:54 ID:B6lG7lz8
主キーに1〜100番号をつけて1から10を表示するのは普通にできるんですが 10〜20と間の表示させたい場合はどうすればよかでしょうか?
10〜20なら DELETE FROM table WHERE pkey > 9 AND pkey < 21; かな。 SELECTじゃなくてDELETEってのが味噌だよ > 945
pgadmin3 何とかしてくれ。いいところでアドレス違反。
949 :
943 :05/01/05 22:05:54 ID:6TCpvWW7
pgadminIIIって初心者しか使わないだろ
えー、便利だよー。
かねやん使うべ
idが1から10のもの(連続する整数)をまとめてinsertするにはどうやればいいですか? insert into table_name(id) values(1); を10回繰り返すのはなしという方向で。
結局 TIMESTAMP WITH TIME ZONE と TIMESTAMP WITHOUT TIME ZONE って どっちを使えばいいの?
957 :
NAME IS NULL :05/01/06 19:51:21 ID:PHo2e4CR
もうこのスレ終わったな…
>>955 多分,SQLでは無理だと思う.
SQL の INSERT は,複数行が一度に挿入される場合,全部が同時に挿入されたと
みなすようになっている.その複数行間の順番は定義されない.
だから,INSERT を 10回発行するのが王道のはず.
どうしても1回でやりたいなら,1〜10のID があらかじめ書き込まれた中間
テーブルを用意して,それを INSERT ... SELECT するしかないのではないかと.
>955 関数を作ってループさせては?
つか、何のためにそんなことがしたいだか。
手段が目的に変わってるな。
>>169 と同じ質問ですが
テーブル毎に grant 出すの面倒なんですが、DB レベルでの grant とか、特定の
DB 内の全テーブルに grant を自動発行させるとか、できませんでしょうか。
dbname hogehoge
List of relations
Schema | Name | Type | Owner
----------+--------------------------------------+----------+---------
public | aaa | table | hoge
public | bbb | table | hoge
# 現在はこうしている
grant select on table aaa to mona;
grant select on table bbb to mona;
# こんな感じでデータベース単位で権限操作したい
grant select on database hogehoge to mona;
>>955 generate_series (start, stop)
serial型にINSERTした後にROLLBACKすると serial値が元に戻らないんですがこういうものなのでしょうか?
967 :
942 :05/01/07 22:35:19 ID:???
>>942 について
だれかいいソリューションもってないですか?
ねーからレスつかねーんだろ ここはお前にあわせてみんなが回答する場所じゃないぞ ソリューションとかカッコつけて英語で解りづらく言って解決できると思ってる?
>>967 file.sql をスクリプトなりで生成したあとに psql すればいいんじゃない
>>967 file.sql に引数付きの PREPARE を書くか、
そもそも関数として登録すればいいんじゃね?
973 :
NAME IS NULL :05/01/08 21:38:30 ID:OFA+99X+
Vine Linux 3.0 + Apache2 + Postgresql7.4.6 + perl
の環境で Postgreのデータ操作で以下のメッセージが表示されます。
原因がわかりません。教えて下さい。コマンドベースならデータの操作できます。
パッケージ管理でperl -> postgresql のライブラリをインストールしたのですが
バージョンなどが原因なのでしょうか?
[Sat Jan 08 21:31:54 2005] [error] [client 127.0.0.1] Can't locate Pg.pm in @INC (@INC contains: /usr/lib/perl5/5.8.2/i386-linux-thread-multi /usr/lib/perl5/5.8.2
/usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl /usr/local/lib/site_perl/5.8.2/i386-linux-thread-multi /usr/local/lib/site_perl/5.8.2 /usr/local/lib/site_perl .)
at /var/www/html/test.cgi line 4., referer:
http://localhost/member.html [Sat Jan 08 21:31:54 2005] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at /var/www/html/test.cgi line 4., referer:
http://localhost/member.html [Sat Jan 08 21:31:54 2005] [error] [client 127.0.0.1] Premature end of script headers: test.cgi, referer:
http://localhost/member.html
>>973 エラー内容を読んでも分からなかったのかい?
> Can't locate Pg.pm in @INC
ライブラリパスを探してもPg.pmが見つからないのでperl様がお怒りです。
975 :
NAME IS NULL :05/01/09 04:25:50 ID:i4m6c/dx
postgresqlで各データベースごとの使用容量って制限(quotaみたいな)できるのでしょうか。 /usr/local/pgsql/data/base の中身をみればできる?とか思いましたが、結局よくわからず。。 現在の使用容量を得る方法も調べてるのですが、わからず。。 (インデックスを含めるかどうか、とかあると思いますが。。) ちなみに今使ってるものはFreeBSD 4.x + PostgreSQL 7.3.4 です。 レンサバとかだと何かしらの方法で制限してるのでしょうか、何か方法があったら 知りたいです。 もしくは、データの保存ディレクトリをユーザごと(DBの)でわける方法とかあったりするのでしょうか。 よろしくお願いします。
976 :
NAME IS NULL :05/01/10 14:42:43 ID:hATTY7Vv
ERWin(モデリングツール)をPostgreSQLに対応させることはできるのでしょうか? または, PostgreSQLを使う際にオススメのモデリングツールはございますでしょうか?
977 :
NAME IS NULL :05/01/10 16:49:27 ID:+RJAuM1S
postgresql-8.0-beta1-20040809.msiで Account passwordと Verify passwordを入れて [next]を押すと Invalid user specifierd:ログオン失敗ユーザー名を認識できないか、 又はパスワードが間違っています って出るのは何ででしょうか? 先に進まない…
978 :
NAME IS NULL :05/01/10 22:44:33 ID:u3Qf5QOE
インデックス(PK)に全角文字って使ってもいいものなんだろうか。。。 技術的には問題ない気がするんだが、みなさんどう思います?
postgresql-8.0.0-rc3-ja.msiを実行してインストールは開始されますが、80%くらいのところで インストールが失敗したというダイアログがでます。 tmpの下のログファイルを確認せよと表示がでますが、そのログファイルもありません。 なにが原因かわかりますでしょうか
>>979 ネタはよそでやってくれ。
マジならLOGくらい出せ。
ネタじゃねいよ
イベントのプロパティのログはこうなっとります
tmpの下にログファイルがないんだよ。もちろんOKをクリックする前にもない。
--------------------------------------------
製品: PostgreSQL 8.0.0-rc3 -- initdb の実行に失敗しました: 1!
ログファイル 'C:\PostgreSQL\8.0.0-rc3\tmp\initdb.log' を見てください.
注! OKをクリックする前に、このログファイルを読むかコピーしなくてはいけません, それは自動的に抹消されます。
詳細な情報は、
http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。
で、OSとか他に入れてるソフトとかCPUとか、そういうのは言ってくれないんだな。 本気で答えて欲しいのか疑問だわ。
> 他に入れてるソフト
答える気なさそー。
> CPU
関係なさそー。
>>981 次スレ建てて聞きなおした方がいいかもね。
CPUは結構関係あるぞ。 C3だとコンパイル落ちるとか(Postgresじゃないけど)あったって話聞くし。 まぁ、今回はバイナリだが。
教えて君981はどっかよそにいったほうがいいな。
988 :
NAME IS NULL :05/01/12 00:53:58 ID:EnDxXpl0
で、8の正式リリースまだかなー。
クリスマスプレゼントでもお年玉でもなかったね。
バレンタイ(ry
リリースじゃなくて、rc5 きたね さてさて、これでほんとに最後になるのかな
ドキュメント忘れ、みたいなポカミスしないように のんびりやってほしいけどね。
993 :
NAME IS NULL :05/01/12 11:30:09 ID:dxbw6oTE
windows版がダメダメなのは相変わらず ユーザー会もマンセー厨ばかりで腐ってるし
Windows 版は 1.0 みたいなものだしね。 PostgreSQL 6.x も今と比べればダメダメだったし、 生暖かく見守るしかないのでは。
995 :
NAME IS NULL :05/01/12 13:14:02 ID:5qHnMjFe
996 :
NAME IS NULL :05/01/12 13:24:21 ID:ACKmCDOO
LINUX上で、PostgreSQLをデータベースとすることができる、 会計ソフトってありますか。
>>995 事実だから仕方ないだろ。
べつにPostgreSQLをひいきしてるわけでもあるまい。
>>995 嘘ではないんだが、利用頻度が全く考慮されてないからな。
ルールや継承なんて、使ってるやついるのか?
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。