PostgreSQL 2テーブル目
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい。
03/06/30 12:38ID:???関連アプリケーション特有の話題は、以下のスレッドへ。
pgsql-mlのヲチもここで。
前スレ
[PostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/989375812/
移転前のスレ
http://pc2.2ch.net/test/read.cgi/php/1047317680/
☆関連スレッド
[PHP + PostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/983128806/
[PerlでPostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/999249463/
[MySQL vs PostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/989341364/
0002名無しさん@お腹いっぱい。
03/06/30 12:40ID:???0003名無しさん@お腹いっぱい。
03/06/30 13:16ID:???0004名無しさん@お腹いっぱい。
03/06/30 16:47ID:Lf/h8tD9age
0005名無しさん@お腹いっぱい。
03/06/30 16:53ID:???乙
0006名無しさん@お腹いっぱい。
03/07/01 15:20ID:VDdZprIm0007名無しさん@お腹いっぱい。
03/07/08 11:22ID:???0008名無しさん@お腹いっぱい。
03/07/08 23:41ID:7Q6wUFCEどんなOSがお勧めでしょうか?
0009名無しさん@お腹いっぱい。
03/07/09 00:28ID:???Tru64
0010名無しさん@お腹いっぱい。
03/07/09 02:05ID:???MSX-BASIC
0011名無しさん@お腹いっぱい。
03/07/10 00:33ID:???S-OS
0012名無しさん@お腹いっぱい。
03/07/10 12:54ID:ccIJBBJP変数定義ってあったっけか。
auto-countみたいなのってPostgreSQLじゃfunctionかtrigger使わなきゃ
出来ないんだっけか。
0013名無しさん@お腹いっぱい。
03/07/10 13:14ID:PSgpDgQ5001412
03/07/10 13:30ID:ccIJBBJPアンガト^^/~
0015名無しさん@お腹いっぱい。
03/07/13 13:45ID:???serial というか、sequence
0016名無しさん@お腹いっぱい。
03/07/13 15:11ID:0aiQXehEzlibがないとか文句を言ってくるんだよね。
OpenSSLがないとかreadlineがないとか散々文句を付けられちゃってさ。
ハァ------・・・・・もうインストールに疲れちゃった。
0017あぼーん
NGNG0018名無しさん@お腹いっぱい。
03/07/13 15:56ID:???アフォくさ・・・
どのディストリに、なんのバージョンを入れようとしたんだか。
大体、OSインスコ腐ったやりかたしてたら、排卵わな(呆
0019名無しさん@お腹いっぱい。
03/07/13 16:04ID:???7.3.3を入れてみたよ。
TurboLinux8 Server。とりあえずPostgreSQLのRPMを消してみた。
readlineのRPMも消してmakeで入れてみた。
ところでmakeがgmakeかどうかを判断するにはどうすりゃいい?
0020名無しさん@お腹いっぱい。
03/07/13 16:08ID:???0021名無しさん@お腹いっぱい。
03/07/13 23:36ID:dgge6JpE0022あぼーん
NGNG0023あぼーん
NGNG0024あぼーん
NGNG0025あぼーん
NGNG0026あぼーん
NGNG0027あぼーん
NGNG0028あぼーん
NGNG0029あぼーん
NGNG0030あぼーん
NGNG0031あぼーん
NGNG0032あぼーん
NGNG0033山崎 渉
03/07/15 11:17ID:???__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0034名無しさん@お腹いっぱい。
03/07/16 21:38ID:???「make love」って打って、
> make: don't know how to make love. Stop
って出たらBSD make。
> make: *** No rule to make target `love'. Stop.
って出たらGNU make。
0035名無しさん@お腹いっぱい。
03/07/17 12:30ID:???make: *** ターゲット `love' を make するルールがありません. 中止。
0036名無しさん@お腹いっぱい。
03/07/18 00:40ID:uqrcCnPjreadline はインストールされてるが、pgsql では使えない事があった。
configure のオプションでlib のdirを指定したらいけた。
半年前なので、詳細(というか正しい知識)忘れてしまった。
0037名無しさん@お腹いっぱい。
03/07/19 13:37ID:VmaBZmB4移行したいのですが、なんかいい方法ありますか?
0038名無しさん@お腹いっぱい。
03/07/19 13:54ID:bDyX28yimake install
0039あぼーん
NGNG0040名無しさん@お腹いっぱい。
03/07/19 18:44ID:???0041名無しさん@お腹いっぱい。
03/07/19 19:04ID:???pgsql-jp?
0042名無しさん@お腹いっぱい。
03/07/20 11:07ID:???PostgreSQL+Perl?PostgreSQL+PHP?
Accessからブラウザベースのツールに移る場合、
それなりに設計しなおしの部分も出てくるだろうから、
1.現状のシステムの動作を解析。
2.新規要望がないか調査
3.DB(テーブル)並びにシステムの設計
4.システム構築
5.データ移行
と再構築をしっかりやりたい(僕なら)
0043名無しさん@お腹いっぱい。
03/07/22 12:15ID:???あるテーブルを、ユーザーが選択した行だけを表示するようにしたいのですが、
どのように行ったらいいでしょう?
テーブルにはユニークな番号が振ってあるので、ユーザー毎にIDを登録したテーブルを
作って、JOINすればいいかなと思ったんですが、そうするとユーザー毎にテーブルが
必要だし、同じDB内では管理が面倒になりそうなのですが、
DBを分けてしまうとJOINができなくなってしまうので、どうしたらいいものか悩んでいます。
何かいい方法ありますか?
0044名無しさん@お腹いっぱい。
03/07/22 12:32ID:MV56GWLiユーザー毎にフラグ設ける方法以外に考えられないと思われ。
一瞬で分かるだろ。
0045名無しさん@お腹いっぱい。
03/07/22 14:25ID:???> テーブルにはユニークな番号が振ってある
この一節読んだだけで嫌な予感がしまつ。
004643
03/07/22 14:42ID:???やっぱりユーザー毎にフラグ設けるしかないですか。
ありがとうございました。
>>45
テーブルに番号が振ってあるんじゃなくて、行ごとに振ってあるの間違いでした。
ど素人が作ったDBなので、ほかにもいっぱい問題はありそうですが..
0047[pgsql-jp: 30555]
03/07/23 13:45ID:???:: ます。なにせ、めったにアクセスされない掲示板のレコードにも頻繁にアク
:: セスが生じますし。まだ1万個のテーブルのほうがましだと思います。
実際にやると、1万個のテーブルのほうが激遅くなる罠。
0048名無しさん@お腹いっぱい。
03/07/23 14:52ID:???いいのではないかとは思うが、
> :: 1テーブルだと、INSERT SELECT共にとても重くなって現実的ではないと思い
> :: ます。なにせ、めったにアクセスされない掲示板のレコードにも頻繁にアク
> :: セスが生じますし。まだ1万個のテーブルのほうがましだと思います。
ってもしかしてインデックスも張らずにやるつもりなのかな?
それにレコード増えてもINSERTはそれなりに速いぞ。
追記型のストレージだからな。
0049名無しさん@お腹いっぱい。
03/07/23 16:05ID:???継承したテーブルではキーの重複ができるのですが仕様でしょうか?
もしかして、この場合インデックス自体有効でないのでしょうか?
PostgreSQLは7.2.3です。
0050自己レス
03/07/23 16:14ID:???マニュアルにあかんって書いてあった。だめすぎる。
ttp://www.postgresql.org/docs/7.3/static/ddl-inherit.html
0051名無しさん@お腹いっぱい。
03/07/25 15:28ID:YD/oGCu50052あぼーん
NGNG0053あぼーん
NGNG0054名無しさん@お腹いっぱい。
03/07/29 23:29ID:kKpllBVe1.検索の度にjoin使う。
2.ビューを作っておく。
3.関数を作っておく。
テーブル設計がいじれ無い状況で、どれが一般的に速いものなのでしょうか?
005554
03/07/29 23:30ID:kKpllBVe正:PostgreSQLでバラバラのテーブルを度々同じ条件で連結して…
0056あぼーん
NGNG0057名無しさん@Emacs
03/07/30 08:30ID:???どれもほとんど変わらんと思われ。
prepare使うと変わるかもしれんけどね。
005854
03/07/31 00:34ID:???7.3からprepare使えるみたいですね。
ちょっくら試してみます。
ありがとうございました。
0059ぼるじょあ ◆ySd1dMH5Gk
03/08/02 04:56ID:???ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
0060名無しさん@お腹いっぱい。
03/08/13 15:08ID:qSUYsHAO例えば、
SELECT
OBJECT(a)
FROM
myTable AS a
WHERE
SUBSTRING(a,userID, 1, 4) = ?1
みたいに EJB QL のSUBSTRING関数なんかを使っていると
java.sql.SQLException: ERROR: parser: parse error at or near "{"
at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:131)
という例外が発生します。
関数を使わなければ、問題なく抽出が成功するんですけど・・・
0061名無しさん@お腹いっぱい。
03/08/13 15:37ID:???006260
03/08/13 16:55ID:qSUYsHAO識別変数 ( 「myTable AS a」 の 「a」 ) はEJB-QLでは省略できない決まりだそうです。
0063あぼーん
NGNG0064あぼーん
NGNG0065山崎 渉
03/08/15 21:59ID:???│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0066山崎 渉
03/08/15 22:49ID:???│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0067名無しさん@お腹いっぱい。
03/08/16 16:02ID:nn9V5t8B……いえ、もちろん、「where between hoge_date 10日前の日付 and 今日」とやればいいのは
解っています(^^; postgreSQLにおいて、whereで使用できる日付計算関数というのがあれば
教えてください、ということです。
この辺、データベースによってバラッバラだし、selectで使えてもwhereぢゃ使えないなんて
腐った関数もあったし……(T_T)
ということで、よろしくお願いします。
0068名無しさん@お腹いっぱい。
03/08/16 17:30ID:???PostgresというよりもEJBコンテナの問題だと思われ。
0069名無しさん@Emacs
03/08/16 18:41ID:???0070名無しさん@お腹いっぱい。
03/08/16 19:47ID:asUvlQOhJDBCが対応していないようにも思えるが・・・
環境が書いてないんで、何とも胃炎。
0071あぼーん
NGNG0072あぼーん
NGNG0073名無しさん@お腹いっぱい。
03/08/17 00:07ID:UpSkezT2出来ないでしょうか?
クライアントがPerlなので、あまり日付は扱いたくありません。
いちいちエポック秒に変換するのはちょっと面倒です(^^;
ご経験のある方がいらっしゃいましたら、アドバイスをお願いします
0074名無しさん@お腹いっぱい。
03/08/17 00:32ID:wtT8T4OCPostgreSQLの標準JDBCはJDBC2までしか対応してないんじゃないか?
ただコンテナが吐くSQLがそれぞれに適したものを出力しないと意味ない
し、普通コンテナがPostgreSQLをサポートしているのかどうかを確認して
使うべきじゃないかと思ったんだよな。
0075あぼーん
NGNG0076名無しさん@お腹いっぱい。
03/08/17 02:28ID:???http://www.postgresql.jp/document/pg734doc/user/functions-datetime.html
表6-17を参考
007773
03/08/17 03:05ID:pbK6h/9cどもです。えっと、単純に
age(Xdate)
でOKなんでしょうか? でもこれ、戻り値はinterval型ですよね。
欲しいのは年月日ではなく、日数なんですよ。つまり、
2002/8/16を評価した場合、-366が(出来ればintで)帰ってきて欲しいんですね。
intervalを日数に変換する関数なんてのがあれば一発なのですが……
文字列比較するのも嬉しくないしなぁ(T_T)
0078名無しさん@お腹いっぱい。
03/08/17 08:44ID:???SELECT EXTRACT(EPOCH FROM age(timestamp '2002/8/16')) / EXTRACT(EPOCH FROM interval '1 day')
かっこわるー
0079あぼーん
NGNG008073
03/08/17 13:36ID:???た、確かに……(T_T)
了解しました。この方式を保険にして、まずはPerlでシコシコ書いてみましょう。
アドバイスありがとうございました。
008160
03/08/17 13:42ID:???環境は以下のとおりです。
OS : Windows2000 Pro SP4
APS : WebLogic Ver 7.0
DB : PostgreSQL Ver 7.2.1 for windows
JDBC: pg73jdbc2ee.jar, pg73jdbc3.jar
JDBCは上記以外のも使ってみましたが、うまくいきませんでした。
DDは、「ejb-jar.xml」「weblogic-cmp-rdbms-jar.xml」ともに以下のように指定しています。
<ejb-ql> (<weblogic-ql>)
SELECT OBJECT(a) FROM myTable AS a WHERE SUBSTRING(a.yyyymmdd, 1, 4) = ?1
</ejb-ql> (</weblogic-ql>)
関数を使わなければ、問題なく成功します。
他のアプリケーション・サーバーでも試してみようと思います。
0082名無しさん@お腹いっぱい。
03/08/17 18:51ID:SwfhiGBAhttp://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=Date%3A%3ACalc+perl&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0083名無しさん@お腹いっぱい。
03/08/18 21:31ID:???--続ける--
表示ってどうやれば消えるのでしょうか?
0084名無しさん@お腹いっぱい。
03/08/19 00:51ID:B12vYhllプロセス確認してみたら、TRUNCATE Waitingってのが
たくさんあるんだよ。
なんでだろう。7.1なんでもちろんTRUNCATEは実行できる
はずなのだが・・・
0085名無しさん@Emacs
03/08/19 14:35ID:???0086名無しさん@お腹いっぱい。
03/08/20 13:10ID:d3T9mVf40087名無しさん@お腹いっぱい。
03/08/25 15:15ID:???\pset pager off
0088名無しさん@お腹いっぱい。
03/08/26 16:52ID:EXAVYmiZwhere id between 100 and 1000 とではどっちが早いですか?
それとも等価ですか?
0089名無しさん@お腹いっぱい。
03/08/26 18:37ID:???http://www.postgresql.jp/document/pg734doc/user/functions-comparison.html
> 内部的に最初のの形式を 2 番目の形式に書き換えるのに必要となる CPU サイクル以外それぞれの形式には違いはありません。
等価といっていいね。
なので見やすい方を採用しましょう。
0091名無しさん@お腹いっぱい。
03/08/26 21:47ID:???0092名無しさん@お腹いっぱい。
03/08/27 18:21ID:w7hR2Qx2PostgreSQL ODBC Driver 07.01.0006 日本語版(2001/07/13版)
上記のODBCドライバを使っているんだけれど、
もしかしてこれだとvarchar(20)とかに入れた日本語20文字を取れない?
0093名無しさん@お腹いっぱい。
03/08/27 18:31ID:???0094名無しさん@お腹いっぱい。
03/08/27 18:37ID:w7hR2Qx2DBはEUCでやってます。
0095名無しさん@お腹いっぱい。
03/08/27 18:47ID:???varchar(10)で確認してたので混同した
うちのはodbc は 7.03.01.00 でvarchar(10) の10文字の漢字が取れました
けっこう最近まで7.01.xxxx 使ってたけど、varcharに日本語入れた事
無かったから気がつかんかったなあ・・・
0096名無しさん@お腹いっぱい。
03/08/27 19:12ID:w7hR2Qx2日本語版というのがあったので
日本語対応していないのかと思ったのですが本家の方も今のは対応しているのでしょうか?
0097名無しさん@お腹いっぱい。
03/08/27 19:51ID:???日本語というよりマルチランゲージ対応ですね
0098名無しさん@お腹いっぱい。
03/08/27 19:56ID:???http://lwn.net/Articles/46576/
うそぐれすの立場は。。。
0099あぼーん
NGNG0100名無しさん@お腹いっぱい。
03/08/28 10:44ID:???うそぐれすは本体が対応するまでのつなぎのごまかしだし
便利は便利だが、アクセス制限かけにくいので使いづらい、あれ
0101名無しさん@Emacs
03/08/28 11:48ID:???一概に比較できるもんでもないっそ。
0102名無しさん@お腹いっぱい。
03/08/28 12:01ID:???日本人がやってたな
0103名無しさん@お腹いっぱい。
03/08/29 15:19ID:aLAEBrweColumn | Type | Modifiers
--------+-----------------------------+-----------
date | timestamp without time zone |
dns | text |
ip | inet |
uid | text
データはこのように入れてるのですが
date dns ip uid
2003-08-28 18:55:42.656173 ftp12.sakura.moe 192.168.1.12 sakura
2003-08-28 19:37:26.93341 ftp12.sakura.moe 192.168.1.12 sakura
2003-08-28 19:37:38.796167 ftp12.sakura.moe 192.168.1.12 sakura
2003-08-28 19:37:46.947639 ftp15.sakura.moe 192.168.1.15 tomoyo
2003-08-28 19:52:56.752223 ftp12.sakura.moe 192.168.1.15 tomoyo
2003-08-28 21:06:48.766464 ftp1.sakura.moe 192.168.1.1 abone
これをuidがダブらないように日付が一番新しい情報だけをそれぞれ出したいんですが、select文一行じゃ無理ですか?
上のデータをselectして
2003-08-28 19:37:38.796167 ftp12.sakura.moe 192.168.1.12 sakura
2003-08-28 19:52:56.752223 ftp12.sakura.moe 192.168.1.15 tomoyo
2003-08-28 21:06:48.766464 ftp1.sakura.moe 192.168.1.1 abone
こうだしたいです。
0104名無しさん@お腹いっぱい。
03/08/29 15:31ID:aLAEBrweこれは
2003-08-28 19:52:56.752223 ftp15.sakura.moe 192.168.1.15 tomoyo
こですね。こぴぺして修正するとき書き間違えました。
遊びでやっているので、気長に待ってます。
お願いいたします。
0105名無しさん@お腹いっぱい。
03/08/29 15:45ID:???もしそうだったら
SELECT max(date) AS date,uid,dns,ip FROM test4 GROUP BY uid,dns,ip
でいけるけど
0106名無しさん@お腹いっぱい。
03/08/29 15:46ID:???0107名無しさん@お腹いっぱい。
03/08/29 16:01ID:aLAEBrwe>dns と ip と uid は常に同じ組み合わせなの?
常に同じじゃないです。
ftp18.sakura.moe 192.168.1.18 tomoyo
ftp19.sakura.moe 192.168.1.19 tomoyo
こうデータが入ってくる場合もあります。
0108名無しさん@お腹いっぱい。
03/08/29 16:26ID:???SELECT * FROM table WHERE date IN (SELECT max(date) FROM table GROUP BY uid)
オレもあんまし詳しくないんで、もっといいやり方あるかも
0109108
03/08/29 16:34ID:???0110108
03/08/29 16:36ID:???SELECT * FROM table WHERE (uid,date) IN (SELECT uid,max(date) FROM table GROUP BY uid)
0111名無しさん@お腹いっぱい。
03/08/29 16:52ID:???それはSQLの質問だろう?↓こっちへ書け
[SQL質疑応答スレ]
http://pc2.2ch.net/test/read.cgi/db/1056973582/
0112103
03/08/29 18:31ID:aLAEBrweどうもありがとうございます!!
うまくいきました
0113名無しさん@お腹いっぱい。
03/08/31 14:29ID:EBOLr2oFしていくっていうのは、テーブル作成時にどう指定したらいいんでしょう。。
要するにid1個のテーブルを作成して、そのテーブル内に
serialのid2があるような形のことをテーブル1つでやりたいんですけど。
これってSQLネタなんでしょうか。
なんかこないだまで事務やってたのにいきなりDBの管理やらされて
激しく困っています。。。
0114名無しさん@お腹いっぱい。
03/09/01 09:57ID:???0115113
03/09/01 11:11ID:lfyO0RSpすいません。。。
id1 | id2
1 | 1
2 | 1
2 | 2
2 | 3
このような状態でid1に1を指定して
insertした場合は自動的にid2に2が、
2を指定してinsertした場合は自動的にid2に4が
入るような感じにしたいのですが。。
id1に3を指定してinsertすると、
そのレコードのid2には1が入ると。
イメージを掴めていただけましたでしょうか。。
0116名無しさん@お腹いっぱい。
03/09/01 11:54ID:???INSERT INTO table (id1,id2) SELECT $id1,coalesce(max(id2),0)+1 FROM table WHERE id1 = $id1;
こんな感じ?
0117名無しさん@お腹いっぱい。
03/09/01 12:00ID:???0118113
03/09/01 12:48ID:???テストで小さいテーブル作ってやってみました。
できました。確かに本当はテーブル作成時に
id2のDEFAULTとして指定できるようにしたいと思ってたんですが、
これでも全然目的は達成できていますので、こうします!
というか、DEFAULTとして指定しないと、
まずselect文を発行してid1におけるid2のmax値を取得して、
その後またinset文を発行することになって、
二度手間になるのかと思ってました。。。
こうやって一緒にできるんですね。
(113に書いた理由で)不本意ながら、勉強します。。。。
ありがとうございました!
0119名無しさん@お腹いっぱい。
03/09/01 21:05ID:???0120名無しさん@お腹いっぱい。
03/09/02 12:58ID:aIhq+MaFレプリケーションってなんですか?
0121名無しさん@お腹いっぱい。
03/09/02 14:41ID:???置いてそれぞれのDBの整合性を取る機能って言えばいいのかな?
0122名無しさん@お腹いっぱい。
03/09/03 00:20ID:MROHIFn2で、複雑な検索をするのですが、その結果表示が遅いときに、
オペレータの人が「がしがし」ボタンをクリックします。
すると Postgres は律儀に検索しようとして、メモリを使いきり、
スワッピングし続け、HDD回りっぱなしで反応なし状態になります。
こういったことを回避するためのリミッタみたいなものは Postgres にあるでしょうか?
0123名無しさん@お腹いっぱい。
03/09/03 06:36ID:tTNmCqnh「がしがし」 ←ちょっとワロタ。
Java ScriptやCGIの方でキャンセルさせるべきじゃないかな。
ボタンを無効にしたりとか、「検索中」ページを表示させるとか、
hiddenに前回検索要素を入れて、同一の場合は無視とか。
外してたらスマソ。
0124名無しさん@お腹いっぱい。
03/09/03 10:25ID:POnnpi/Iマニュアルを見ると、
>READ COMMITTED … 一つの文はそれが開始される前に"コミット"された行のみ見ることができます。
この文のコミットってどういうことですか?
TRANSACTION処理内では、コミットしないんですよね?
なんでコミットされたっていう言い回しをつかってるんでしょうか?
0125名無しさん@お腹いっぱい。
03/09/03 10:46ID:???0126名無しさん@Emacs
03/09/03 10:47ID:???0127名無しさん@お腹いっぱい。
03/09/03 11:01ID:???1. db=# create table a (foo int);
2. db=# insert into a values(1);
3. db=# begin;
4. db=# update a set foo=10;
5. db=# select * from a;
a
---
10
(1 row)
となるのですが、自分のTRANSACTION内でもみかけじょう、
コミットはされているということでなんでいいんでしょうか?
0128名無しさん@お腹いっぱい。
03/09/03 11:06ID:???SELECT文はこの問い合わせが開始される直前までにコミットされた
データのみであり、コミットされていないデータや、
このトランザクションと同時に実行されてデータが
変更になったものなどは参照しません。
(しかし、コミットされていないものでも、
同じトランザクションで行われた更新の結果は参照します)
0129thanks!
03/09/03 11:42ID:???0130名無しさん@Emacs
03/09/03 11:54ID:???自分自身で更新したものは、当然最新のものが見えます。
でないとロングランなトランザクションなどで困りますし、
そもそもトランザクションてのはそういうものです。
0131名無しさん@お腹いっぱい。
03/09/03 12:43ID:???それ以外にもなにげにマニアックな話題を取り上げているぞ。
0132名無しさん@お腹いっぱい。
03/09/04 01:40ID:???シーラカンス本にのってんじゃあねえの。
0133名無しさん@お腹いっぱい。
03/09/06 18:39ID:Rw5afQs3とかすると思うんですけど、それだと全行検索するみたいで嫌なのですが、
なんとか安いコストで行数を調べる方法ないでしょうか。
0134名無しさん@Emacs
03/09/06 18:42ID:???0135名無しさん@お腹いっぱい。
03/09/06 19:25ID:XXV2gNzR主キーにindexを張っておく。
0136名無しさん@お腹いっぱい。
03/09/06 19:39ID:???0137名無しさん@お腹いっぱい。
03/09/06 19:55ID:/Sq1iYcq0138133
03/09/06 20:00ID:???0139名無しさん@お腹いっぱい。
03/09/06 20:05ID:???あたりでぐぐってみれば?
0140名無しさん@お腹いっぱい。
03/09/06 22:58ID:???そりゃアクセスプランを決定するための統計情報だからアテにならん。
その程度の精度で良いんだったら別だが。
0141名無しさん@お腹いっぱい。
03/09/06 23:39ID:???DBを実装するうえでテーブル上のデータの総数みたいなデータって
どこかに置いておく必要があるんだろうか?
トランザクションとか関わってくると
一意に決まらない情報でしょ
0142名無しさん@Emacs
03/09/07 04:56ID:???その後にinsert/deleteされると実際の値と合わなくなる。
0143名無しさん@お腹いっぱい。
03/09/08 17:36ID:aow70aHR5 * * * * /usr/bin/vacuumdb -a
6 * * * * /usr/bin/vacuumdb -a -z
とかやってるんですけど、もしかしたら ANALIZE の前って
VACUUM って実行されますか?
0144135
03/09/09 16:16ID:???>VACUUMを行ない、その後、ANALYZE を行ないます。
ttp://www.postgresql.jp/document/pg721doc/reference/sql-vacuum.html
>>136
実際に2000行くらいのゴミデータを作って
Explain select count(*) from aaaaa;
を見たらSeq.Scanだった。(恥)
インデックスには、行数の情報も含まれていると思い込んでいたので。。。
PostgreSQL内部に行数のデータを保持するなら、>>134 に一票。
掲示板とかに「OO件の書き込みがあります」と表示する用途なら、
アプリケーション層にキャッシュする、に一票。
頭から通し番号を付けられるのであれば、インデックスを張って
select max(serial_number) from table; をとる。
で、どうよ? >>133
0145名無しさん@お腹いっぱい。
03/09/10 00:58ID:???max()は結局テーブル全部なめるんじゃない。
count(*)もmax()もどちらも集約関数。
0146名無しさん@お腹いっぱい。
03/09/10 01:43ID:???serialの現在値を取ってくればいいんじゃない?
削除しないことが前提になるけど
0147名無しさん@お腹いっぱい。
03/09/10 07:45ID:???count(*)は全スキャンだろうが、max()ならindexを使って
くれるのが普通じゃないの?
Postgresはどうだか知らんが。
0148135
03/09/10 22:44ID:???>>133 が何を作りたいのか不明なのでweb掲示板を想定しているのだが、
途中のデータが削除されることが良くあることですな。
抜け無く、通しで主キーを振るというのは実際はなかなかできませぬ。
個人的にはレプリケーションのとき問題が出るといやなのでserialの代わりに
明示的なトランザクションの中でmax(id)+1をselectして
それを次のデータの主キーにしています。
>>147
その通り。maxがインデックスを使ってくれることを期待してる。
実際は、インデックス付きと無しとでexplainを比べてみねば。
またseq.scanとか出たら恥ずかしい。
135=> create table a( id serial primary key, log text);
NOTICE: CREATE TABLE will create implicit sequence 'a_id_seq' for SERIAL column
'a.id'
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'a_pkey' for table
'a'
(一度抜けてゴミデータを入れる。apacheのエラーログ2000件)
135=>explain select count(*) from a;
NOTICE: QUERY PLAN:
Aggregate (cost=22.50..22.50 rows=1 width=0)
-> Seq Scan on a (cost=0.00..20.00 rows=1000 width=0)
EXPLAIN
135=>explain select max(id) from a;
NOTICE: QUERY PLAN:
Aggregate (cost=22.50..22.50 rows=1 width=4)
-> Seq Scan on a (cost=0.00..20.00 rows=1000 width=4)
EXPLAIN
135=> vacuum analyze a;
VACUUM;
135=> explain select max(id) from a;
NOTICE: QUERY PLAN:
Aggregate (cost=81.44..81.44 rows=1 width=4)
-> Seq Scan on a (cost=0.00..76.15 rows=2115 width=4)
EXPLAIN
135=>
ありゃ?
0149133
03/09/11 01:37ID:???次の日思い出したら、実は select count(*) from foo; ではなく、
select count(*) from foo where bar = 'buz'; でした。。
これじゃあ全行検索しないといけないですね。。逝ってきます。。
0150名無しさん@お腹いっぱい。
03/09/11 02:04ID:???0151135
03/09/11 17:17ID:???where句である程度絞られる場合は、当然全行なめないはず。
よーし、意地でもindexを使ってやるぞ。
135=> create table foo( t timestamp default now(), bar char(3));
CREATE
135=> create index foo_idx on foo (bar);
CREATE
org021=> select count(*) from foo;
count
-------
62273
(1 row)
135=> select * from foo limit 10;
t | bar
------------------------+-----
2003-09-11 16:48:10+09 | baz
2003-09-11 16:58:46+09 | 515
2003-09-11 16:58:46+09 | 218
2003-09-11 16:58:46+09 | 247
2003-09-11 16:58:46+09 | 128
2003-09-11 16:58:46+09 | 0
2003-09-11 16:58:46+09 | 233
2003-09-11 16:58:46+09 | 233
2003-09-11 16:58:46+09 | 184
2003-09-11 16:58:46+09 | 292
(10 rows)
135=> select count(*) from foo where bar = '233';
count
-------
21
(1 row)
135=> EXPLAIN select count(*) from foo where bar = '233';
NOTICE: QUERY PLAN:
Aggregate (cost=1.01..1.01 rows=1 width=0)
-> Seq Scan on foo (cost=0.00..1.01 rows=1 width=0)
EXPLAIN
135=> vacuum analyze foo;
VACUUM
135=> EXPLAIN select count(*) from foo where bar = '233';
NOTICE: QUERY PLAN:
Aggregate (cost=808.71..808.71 rows=1 width=0)
-> Index Scan using foo_idx on foo (cost=0.00..804.36 rows=1740 width=0)
EXPLAIN
135=>
やった! Index Scan って出た。
しかし、max(bar)ではインデックスを使わないのだろうか。
バブルソートのループ1回分すればいいのなら
インデックスを使うかどうか迷うより速いのだろうか。
0152名無しさん@お腹いっぱい。
03/09/11 18:10ID:???0153名無しさん@お腹いっぱい。
03/09/11 19:15ID:SlxB2PoEinvalid command \N
と大量に表示されてインポートされません。
7.0.3->7.3.4なので不整合は覚悟していたのですが、何か方法はないでしょうか…
環境はRedhatLinux9+PostgreSQL7.3.4でつ.
0154名無しさん@お腹いっぱい。
03/09/11 19:58ID:???ダンプデータはテキストだから適当に編集すればいいよ。
それが難しければpg_dumpで-d(--inserts)オプションをつけるとか。
データ量多いと遅くて泣けるだろうけど。
0155名無しさん@お腹いっぱい。
03/09/11 21:16ID:???7.0.X から7.3、、問題が出るとは思えないんだが・・・
0156153
03/09/11 21:46ID:???とやっています。
移行元のDBは遠距離にあって他の人に頼んで出力してもらいました。
ダンプデータを開いて\Nを全部消してみましたが、それでもダメぽ…。
Redhat9の環境では7.3以前のPostgreSQLはコンパイルできないし (ノД`)
0157名無しさん@お腹いっぱい。
03/09/12 02:26ID:???0158名無しさん@お腹いっぱい。
03/09/12 06:56ID:Tv4bq9y4フィールド名が沢山ありすぎて、selectした時に表示が崩れるのですが、綺麗に表示する方法とかありますか?
0159名無しさん@お腹いっぱい。
03/09/12 09:10ID:???次から表示がきれいになるよ。
ALTER TABLE tablename DROP column1, column2,.... CASCADE;
0160153
03/09/12 11:36ID:???ありがとうございます。
エラーが多くて流れてしまったために気が付かなかったのですが
テーブル生成で失敗していたのが原因で copy from stdin がコケて
しまったようです。
カラムの型定義で
〜 timestamp with time zone DEFAULT 'now'::text
と書いてある「'now'::text」がダメなようで「::text」を外したら問題なかったです。
以前はコレがないとダメだったのでしょうか…
0161名無しさん@お腹いっぱい。
03/09/12 14:35ID:???デフォルトになっちゃう、とかじゃないかねw
0162名無しさん@お腹いっぱい。
03/09/12 16:20ID:???ありがとうございました
表示だけでなく、他のものもすっきりしたような気がします
0163名無しさん@お腹いっぱい。
03/09/12 16:39ID:???ビュー作れや。
0164名無しさん@お腹いっぱい。
03/09/12 20:59ID:???この場合>>158に言うべきでは
>>162とほとんど同じレスを書きたかったけど我慢してたら
ちゃんと書いてくれる人がいましたね
0165名無しさん@お腹いっぱい。
03/09/13 22:47ID:???この場合
プラズマテレビを買う
が正解
0166名無しさん@お腹いっぱい。
03/09/14 10:37ID:8U60Mzm0ところでPostgreSQLのjdbcって実装されてないメソッド多くない?
pg72jdbc2.jarとか逆コンパイルして見てみたら
Connection.prepareStatement(String sql, String [] columnNames)
とかないし…。
INSERTした行をどうやって返せというんだ…。
みんなは自前で実装とかしてるの?
0167名無しさん@お腹いっぱい。
03/09/14 16:47ID:???0168名無しさん@お腹いっぱい。
03/09/14 22:05ID:FTEx2UYbテーブルに keyword,value という属性があって、
keywordをキーとして登録している場合に、
INSERT で keyword と value をセットしていくのですが、
一度テーブルに入れた keyword が来たら、その keyword の
valueの値を更新(value=value+new_valueなど)したいのです。
この場合は、まず SELECT で keyword が存在するか探してから、
INSERT するか UPDATE するか判断するやり方を行ったのですが、
何分データの量が多いので、遅すぎて困っています。
そこで、 INSERTしてから、キーがかち合って失敗したら、
UPDATE を行い、かち合わなかったそのまま何もせず、次のデータを投入、
するやり方に変えましたが、たしかにかち合うデータが少ない場合は、
早いのですが、これではINSERTに失敗するとエラーとなり、
トランザクション処理中だと処理が停止してしまいます。
こういう場合は、どうやれば効率がいいのでしょうか?
教えてください。お願いします。
0169135
03/09/14 23:33ID:???value + new_value の+が、算術演算の加算なら、
keyが重複してもかまわずinsertして、
呼び出すときに毎回 select sum(value) from foo_table group by keyword;
>> 152
もしかして私のこと? 何の後VACUUM ANALYZE?
0170名無しさん@お腹いっぱい。
03/09/14 23:59ID:???まず、何件くらいのデータなのか明らかに。
で、データ挿入と検索の比率は?
検索が少ないのなら169の案でもいいと思うが、
普通は"そりゃないよ"と思う。
トランザクションが絡むのかどうか知らんが、
ストアドプロシジャでロジックを組むと多少速くなるかも。
とにかく質問の背景をはっきりさせないとアドバイスできない。
0171168
03/09/15 00:13ID:/fwmc9rMINSERT するデータは1回目は100〜300万件程度で、
キーが重なる確率はおよそ5%以下で、
2回目は50〜150万程度で、こちらはたぶん3分の2が重なりそうです。
ということは、
1回目はキーをドロップして、片っ端から INSERTした後に、キーをつけ直し、
2回目はSELECTして見つかったらUPDATEし、見つからなければINSERT
という方法がよいのでしょうか?
トランザクション内だと、少しでもエラーだすと停止しちゃうんですよね。
エラー出しても停止しなければ、楽なのですが。
0172169
03/09/15 01:09ID:???2回あわせて最大450万件をinsertした後は、
データは増えず、selectのみということですか。
>1回目はキーをドロップして、片っ端から INSERTした後に、キーをつけ直し
後からキーをどうやってつけるのだ。
0173名無しさん@お腹いっぱい。
03/09/15 02:13ID:???俺ならデータのままスクリプトプログラムかなんかで処理する。
csvかなんかだったらsortかまして
重複部分は事前に値を足した上で、
最後に一括してDBにINSERT文のバッチ処理。
もしくは、
やはり生データをsortして問題を小さく分割してDB処理を行う。
例えばKeywordの[A-D]*、[E-M]*、...、[q-z]*
とソート後のデータを分割して、それぞれDBで処理する。
詳しくは言えないが俺も500万件強のデータに対して
似たような処理をしたことがあるが、
こういう場合は分割統治法のバリエーションで対処するのは基本。
とにかく、日常的にデータ挿入とデータ検索を行うのか、
それともデータ投入時に一度(2度?)だけ行う処理なのかで、
まったく対処が違うのでそこのところは最初にかかないといけないね。
今回は後者の簡単なほうだったのでよかったが。
0174168
03/09/15 02:13ID:???ALTERコマンドでプライマリーキーをDROPして、
データを一括でインサートしたあと、
再びALTERコマンドでプライマリーキーをADDしようと思ったんですが。
0175168
03/09/15 02:24ID:???データ閲覧時はCGIなので、長くて2,3秒で行いたいのですが、
無理でしょうか?
また、keywordは実は複数もってまして、
INSERT時にも、UPDATE時にも、WHEREで複数の条件
で絞り込まないといけないんです。
0176あぼーん
NGNG0177名無しさん@お腹いっぱい。
03/09/15 08:59ID:???0178名無しさん@お腹いっぱい。
03/09/15 10:13ID:???か、173の言うようにテキスト処理させるのが楽かな?
キー重複のテキスト処理は良くやる。
これからInsertのキーで、あらかじめDeleteしてから、一括Insertとか。
Updateの切り分けロジックいらねし、まま早い。
今回のような加算ロジックはストアドというよりやっぱトリガっしょ?
0179名無しさん@お腹いっぱい。
03/09/15 10:21ID:???それと、投入するデータの例もいくつか。
0180168
03/09/15 12:55ID:???BEFORE INSERT とかすればいいんですね。
いったん別テーブルに丸ごとコピーして、
ALTERでキーを外して、一括インサートした後、ALTERで再びキーを付けて、
VACUUM ANALYZEして、それを元のテーブルにリネームしようとおもってたのですが。
ちなみにテーブルは、
CREATE TABLE(key1 int8,key2 int8,key3 int8,
data_total int8, data1 int8, ... , data100 int8,
PRIMARY KEY(key1,key2,key3));
こんな感じです。
途中で、データ投入プログラムに障害が発生したときのために、
トランザクションでやって、発生したらロールバッグする予定です。
0181168
03/09/15 13:11ID:???INSERTはこんな感じのが100〜300万件
INSERT INTO VALUES (2321,321551,232,576678678,100,23,233,232,..,232);
ちなみに、key1,key2,key3は実は文字列なのですが、新しいキーがでてくるごとに、
別テーブルで、文字列とユニークな数字(シリアル)を振って、
ハッシュみたいな感じにしています。
0182168
03/09/15 13:17ID:???トリガを使っても、結局 SELECTしてINSERTかUPDATEか選択する処理を、
DBに毎回やらせることになるので、ストアドでやるのと、
時間はあまりかわりそうにないですね。
やはりキーを外して、一括投入してから同じキーをGROUPBYして、集計して、
キーを付け直して、VACUUM ANALYZEすのがベストなんでしょうか。
0183名無しさん@お腹いっぱい。
03/09/15 13:29ID:???>途中で、データ投入プログラムに障害が発生したときのために、
>トランザクションでやって、発生したらロールバッグする予定です。
障害が発生したらそれ以前に投入したデータもすべてrollback
しなければならない性質のものなのか?これまで挙げられた
状況を見る限りそういうふうには見えないが。
障害が発生した時点で一旦止めて、残りのデータだけを再投入
するんでも良いような気がするが。だいたい、何百万件のバッチを
1トランザクションで投入するなんてあんまり聞かないし。
0184168
03/09/15 14:16ID:???やり直ししようと思って、後で途中からはできないんです。
データが、再度やろうとすると、中身が変わってますので。
やるなら、一旦データをファイルに落として保存して、
そのファイルをDBに投入しなければいけません。
0185名無しさん@お腹いっぱい。
03/09/15 16:51ID:???つまり途中でなにかひとつでもトラブルがあれば投入データ全体が
パーということか。しかも再実行は最初からやり直さなければならない
けれども、その内容が前回と違ってしまうのは許容できると。
数分で終わるjobならともかく、何時間もかかるものだったらオレなら
素直にファイルに落とすけどな。
0186名無しさん@お腹いっぱい。
03/09/15 23:24ID:???一票!(気持ち的には百票!)
0187名無しさん@お腹いっぱい。
03/09/16 09:51ID:???一時的にテンポラリのTABLEを作成し、そこにINSERTしたらどうでしょ
読むときはその一時的なテーブルを考慮しつつ読み出す仕組みを作ればいいし
あとでマージ処理を部分ごとに行うようにするとかもできるし
0188名無しさん@お腹いっぱい。
03/09/16 12:01ID:???そうゆうのはよくない。
0189名無しさん@お腹いっぱい。
03/09/16 12:38ID:???POSシステムで待ちキュー使ったやつが
そんな感じのシステムだが
0190名無しさん@お腹いっぱい。
03/09/16 14:42ID:4ovfBvbl通常は普通の検索を行う。
だから、検索時にテンポラリとかちょっとでも面倒なことは避ける。
検索は普通に行い、データ投入をうまくやることを第一に考える。
だろ。
0191名無しさん@お腹いっぱい。
03/09/18 02:06ID:F8qSF692select uid,sum(file_size) from file_data group by (uid);
このようにすることによって、各ユーザの、所有ファイルサイズが出るようになっているのですが、
だいたい表示まで7〜8秒かかります。
表示を2〜3秒に縮めることは可能でしょうか?
PostgreSQL 7.3.4を使用しています。
0192名無しさん@お腹いっぱい。
03/09/18 02:28ID:???そのままだとどうしても全行参照しないといけないから、
DB環境を向上させるしかないんじゃない?
それかユーザ対ファイルサイズの別テーブルをつくって、
元テーブルの更新のたびにトリガで増減させるか。
0194名無しさん@お腹いっぱい。
03/09/18 02:42ID:F8qSF692ありがとうございます。
遊びでやってたら、どっぷりはまってしまいました。
別テーブル作ってやってみようと思います。
0195名無しさん@お腹いっぱい。
03/09/18 09:43ID:s2w5UDM+0196名無しさん@お腹いっぱい。
03/09/18 10:37ID:???pg_dump: handler procedure for procedural language plpgsql not found
というエラーが出てしまいます。
先日までは正常に pg_dump できていたんだけど、50万件ぐらいの
インポートをした後からこんな風になってしまい。
読み書き自体はできているし、psqlで叩くことも出来ているんだけど・・・
どうか知恵を貸してください(_o_)
0197名無しさん@お腹いっぱい。
03/09/18 13:47ID:r7COYCkEODBDかますんなら
Provider=MSDASQL; DSN=PostgreSQL; UID=myid; PWD=myname
直接なら
Provider=PostgreSQL; UID=myid; PWD=myname
0198名無しさん@お腹いっぱい。
03/09/18 14:02ID:???名前「aaa」、所有者「aaa」というデータベースを作成し
pg_hba.confでのアクセス項目はcrypt、ユーザ「aaa」と「bbb」の権限はno,noとします。
この状態でユーザー「bbb」がデータベース「aaa」にテーブルを作れてしまうのですが
これを出来なくする事は可能でしょうか?。
関係ありそうなgrant等は調べたのですがダメポな雰囲気が漂ってます。これは仕様なのかな・・・
0199あぼーん
NGNG0200名無しさん@お腹いっぱい。
03/09/18 22:38ID:FHl51+TU画像を登録したいのですが、ラージオブジェクトを
使う方法でも、rootでなければならない、登録する画像がリモート
ホストにあるファイルしかだめなど、具体的にどのような
手順で行えばよいか分かりません。どなたか
方法をご教授ください。
0201名無しさん@お腹いっぱい。
03/09/18 23:00ID:F8qSF692PostgreSQL 7.3.4です。
0202名無しさん@お腹いっぱい。
03/09/19 02:02ID:V6D4fNTSLinux上にてpostmasterを自動起動させる方法が知りたいのです。
パーペキにFAQだとは思うのですが(^^;、うまく検索することが出来ません。
環境はRedhat7.2+postgreSQL7.2です。initdbまでは流せました。
0203名無しさん@お腹いっぱい。
03/09/19 14:10ID:???http://www.google.com/search?num=50&lr=lang_ja&q=Linux%20PostgreSQL%20自動起動
0204名無しさん@お腹いっぱい。
03/09/19 14:21ID:???中途半端にURLエスケープされてるなw
0205名無しさん@お腹いっぱい。
03/09/19 20:39ID:???PostgreSQLをRPMで入れたんならntsysvかchkconfigコマンド
ソースから自分で/usr/localとかに入れたんなら >>203
020673
03/09/19 23:01ID:???>>204
>>205
どもでした。chkconfigでイケました。スクリプトも既に用意されていたのでラクチンでした。
……とか思っていたら、7.1→7.2にしたら突然、odbc経由でAccessから覗けなくなりますた(;´∀`)
えと、起動スクリプトに「-i」オプションが付いているのかと思って「postmaster -i -S -D /var/lib/pgsql/data/」と
自分で起動して見ましたが×、pg_hba.confに「host all 192.168.0.100 255.255.255.0 trust」という一文があるのも
確認してあります。この二点のほかにチェックすべき点があればご指摘ください。
0207名無しさん@お腹いっぱい。
03/09/19 23:19ID:???ODBCドライバ最新にする
最新のやつは日本語対応してるので日本語パッチいらないよ
020873
03/09/20 10:44ID:???http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/
にある最新のモノを使っているのですが……ここのは古い?
0209名無しさん@お腹いっぱい。
03/09/20 22:00ID:/xl5rns3例えば、C言語で作ったアプリから、あるDBをオープンするとします。仮にhogeとします。
そして、 PHPからも hogeをオープンして、
Rubyからもオープンしたとします。
同じDBを3つ同時にオープンしに行っても問題ないのでしょうか?
PostgreSQL 7.3.4つかってます。
0210名無しさん@お腹いっぱい。
03/09/20 22:05ID:???ただし、使う側に問題がある。
セッションとかトランザクションとか勉強してから使ったほうがよい。
0211名無しさん@お腹いっぱい。
03/09/21 03:30ID:???まずは日本語から勉強しなければならないわけだが。
0212名無しさん@お腹いっぱい。
03/09/21 14:56ID:???今の最新は7.03.xxxx
私もそれ使ってたが本体バージョンアップしたら使えなくなって最新にした
0213208
03/09/21 16:21ID:???どもでつ……でも、これでもダメでした(T_T)
リンクを一旦切って最初からやり直そうとしても、ODBCドライバ選んだ時点でエラーが出て張りなおせません(T_T)
0214名無しさん@お腹いっぱい。
03/09/21 18:22ID:???サーバ側では何も出てないの?
0215208
03/09/21 19:35ID:???ODBC-呼び出しが失敗しました。
Could not connect to the server.
Could not connect to remote socket(#101)
0216名無しさん@お腹いっぱい。
03/09/21 19:51ID:???>>206で新しくしたと言っていたが、pg_hba.confがデフォに書き換わったなんて言わないよな?
0217名無しさん@お腹いっぱい。
03/09/21 19:52ID:???書き換わったんじゃなくて参照元な。デフォ以外のディレクトリインストールしていると
良くはまるから。
0219208
03/09/21 19:56ID:???……え?(;´∀`)
pg_hba.conf以外の名前でですか?
とりあえず「find / -name pg_hba.conf」で引っかかるのは一つだけです。
0220名無しさん@お腹いっぱい。
03/09/21 20:15ID:???0222名無しさん@お腹いっぱい。
03/09/21 22:02ID:???7.xからある、postmaster へのオプション定義等の設定ファイル
pg_ctl で起動できるようになったための処置、、なのかなあ
実行時に設定できるパラメタのデフォルト値を設定するファイルでもある
psql で SET RESET SHOW コマンドを調べてみるといいかも
(confファイルはRESETで設定される値でもある)
0223208
03/09/21 23:38ID:???なるほど。ご丁寧にありがとうございました(拝)
もしかしたら、7.1.xではデフォルトがTrueになっていたんでしょうか?=>問題の箇所
0224名無しさん@お腹いっぱい。
03/09/22 00:29ID:???rpmとかならありうるかも
あと考えられるのは、、、起動オプションが設定を上書きしてたのかもね
0225名無しさん@お腹いっぱい。
03/09/22 01:22ID:???最初っからonなのは見たことないや。
0226名無しさん@お腹いっぱい。
03/09/22 17:42ID:Ex67H8Sv検索する時に、1ページに指定した件数表示というようにするには、
SELECT に LIMIT と OFFSET を指定すればとりあえずできるのですが、
さらに全部で何件あるかとか、
各検索結果ページへのリンクとかも表示したいとなると、
やはり、LIMIT, OFFSET なしで SELECT してから
必要な所だけ表示するしかないのでしょうか。
それだと SELECT に時間、メモリをたくさん使うので
もっとスマート方法ありませんでしょうか。
0227名無しさん@お腹いっぱい。
03/09/22 17:55ID:???LIMIT,OFFSET でページ数調整しながら表示する、というのは
よくやるけど。count(*)もまあ、LIMIT無しといえばそうか
0229名無しさん@お腹いっぱい。
03/09/23 19:10ID:???ポスグレはどうなのさ?
0230名無しさん@お腹いっぱい。
03/09/23 19:25ID:???全件SELECTするよりゃまし
0231226
03/09/23 19:52ID:???全部 select するよりましなぐらいですね。
0232229
03/09/23 19:59ID:???countする方がずっと早いっしょってこと。
それでも遅いようなら、行数を格納するためだけのテーブル一枚
用意することだってある。
(正規化に反するし、不整合が起きないよう気をつけなければならないけど)
count(*)はまず使わない。
0233名無しさん@お腹いっぱい。
03/09/23 20:43ID:???count(*)使ってるし、不便無いですね
状況によるってこと。行数を格納するテーブルにトリガ使って
書くほうがパフォーマンスに影響することもあるし
0235名無しさん@お腹いっぱい。
03/09/23 23:21ID:???検索条件ごとに変わる数を考えられるパターンすべて保存しておくの?
そりゃすごいね
0236名無しさん@お腹いっぱい。
03/09/23 23:42ID:???count(*)は慣用句だから変にcount(1)とかするより速いんですよね?
0237名無しさん@お腹いっぱい。
03/09/24 00:14ID:???どういう実装するとそうなるんだろう。
いまいち理屈がわからん。
0238名無しさん@お腹いっぱい。
03/09/24 00:25ID:???大規模なDBで、かつ全件数だけはさっさと出したいという用途で
1行1列(設計者の好みで1行2列のことも)のテーブル設けるんだよ。
で、トリガ使って値を増減させるっちゅー話だろ。
countでは時間が掛かりすぎる場合、たまにそういう設計にする。
もちろん検索条件なんか付けないぞ。普通。
>>236
Oracleなんかでは、count(*)は使うな、極力count(列名)にしろといわれる。
まあ速度差が体感できるほどの件数がなけりゃ同じことだとは思うが・・・
PostgreSQLでどんくらい差が出るのか知りたいところ。
0239238
03/09/24 00:32ID:???少なくとも、count(*)は避けるようにしている。
0240名無しさん@お腹いっぱい。
03/09/24 06:27ID:???気がするんですが、どうやるんでしょう。
create table images (imagname text, img bytea);
このimg列に /tmp/hoge.jpg を挿入したいです。
0241名無しさん@お腹いっぱい。
03/09/24 07:04ID:???http://www.postgresql.jp/document/pg734doc/user/datatype-binary.html#DATATYPE-BINARY-TABLE
実際のところ、0と'と\さえエスケープすればあとはそのままでもいいみたい
コマンドでなにか便利なものがあるかは知らない。phpはあるようだが・・・
0242名無しさん@お腹いっぱい。
03/09/24 07:11ID:???そこ読んでもサパーリだったんでつ。。
INSERT INTO img VALUES ('myimage','/tmp/hoge.jpg');
みたいにすんなりはいかないんでしょうか。。?
ちとPHPの関数あたってみます。
0243名無しさん@お腹いっぱい。
03/09/24 22:02ID:CYynVP14数字で教えてホスィ。
テーブル構成やらチューニングやらによるとか
使い方による、という結論になるんでしょうが
どっかにレポートとかないもんでしょうか。
普通にDB設計して仮に会員情報テーブルに100万レコード入れたとして
さほど問題ないパフォーマンス?
それとも10万くらいでOK?2万くらいでキツい?
あーこーゆーこと考えるとOracle・MySQL・DB2とかもどれくらいが許容範囲なのか
気になる。
エロい人教えてくらはい。
0244243
03/09/24 22:33ID:CYynVP14渡部 広志 氏(株式会社 NTT データ)
現在約500万人、将来的には1000万人規模となることが想定される
大規模会員システムの DBMS に PostgreSQL を採用させて頂きました。」
http://www.postgresql.jp/misc/seminar/2003-05-17/
http://www.postgresql.jp/misc/seminar/2003-05-17/A2_watabe.pdf
という記事があるので頑張れば1000万人規模でもイケると。
0245243
03/09/24 22:38ID:???検索ルーチンを工夫してやってる。
主婦のビックリ倹約アイデアみたいな。
んでも単体DBでの運用実績10万というデータを拾えたんでラッキーか。
0246名無しさん@お腹いっぱい。
03/09/24 23:01ID:???そういうのは第一に要件、そして設計やマシン自体の能力に依存
する部分が大きいからねぇ。10万レコード超えても全然問題ない
という事例があったとしても、>>243の事例で10万レコード大丈夫か
というのは誰にもわからない。
ちなみにうちでは1テーブル3億レコード超えているけど。
>>244の事例はアプリケーション側で力技のパーティショニングを
実装したということか。なかなか興味深いね。
0247名無しさん@お腹いっぱい。
03/09/25 01:04ID:???CygwinでPostgresつかってるんですが、最近バージョン上げたら
pg_ctl stopがちゃんと動かなくなった。(killのusageが出る。)
どうもCygwinのkill(/bin/kill, kill(cygwin)1.14)がまずくなったっぽい。
pg_ctlが動かしてる方はこっち。
bash組み込みコマンドのほうのkillならちゃんと殺してくれるっぽいので
pg_ctl頭の#!以下をいじってbash上で動かすようにして応急処置してみた。
これでいいんかな、という疑問は残ったけど。
0248名無しさん@お腹いっぱい。
03/09/25 14:40ID:???ダンプがありますがダンプ中のセキュリティとかは
どうなんでしょうか?絶対とはいえなくても安全
なのでしょうか?
他にもいい方法などあればあわせてお願いします
0249243
03/09/25 15:51ID:???3億レコードってすごい。
パフォーマンス的には問題なく運用できてるんですよね?
PostgreSQLでの運用実績では賞賛に値する
んではないでしょうか。
よろしければ設計・運用で気配りした点など教えていただけないでしょうか。
0250名無しさん@お腹いっぱい。
03/09/25 23:06ID:???セキュリティとはなんぞや?
そもそも、何がどうなることを心配しているの?
0251246
03/09/26 00:43ID:???そこはそれ、要件しだいということで。うちの場合は最終結果が
それなりの量がある場合は検索に1分くらいかかっても許容範囲
だったりするし、同時アクセスもそんなに多くないから。
あとはごく普通に、メモリはめいっぱい割り当てる、きちんと
インデクスが使われるよう確認する、アナライズは定期的に行う、
などさえ注意しておけば。
0253名無しさん@お腹いっぱい。
03/09/26 18:53ID:???SCPとか使えよ(;´Д`)
0254243
03/09/26 21:47ID:???なるほど。情報提供感謝です。
251さんDBの場合は
検索式が大量にHITする場合はしょうがないとして、
3億レコードから適当な検索SQL文で10件ぐらいを
HITさせる、という場合でも一分ほどかかりますか?
0255名無しさん@お腹いっぱい。
03/09/26 22:39ID:???うんまあでもそういうのってポスグレならではっつーもんでもなかろ。
pg_dumpはDBの中身が平文で標準出力に出るわけだから、
標準入出力が盗聴可能ならごっそり持っていかれるわな。
ファイルにリダイレクトする場合は、パーミッションを気にしなきゃならん
というあまりに当然な話もある。
ダンプしたファイルをネットワーク越しにやりとりするなら
sshトンネリングしたFTPかscpを使うだろうし。
結局、UNIXオペレーション一般で気を使うべきところに
気を使うしかないんじゃないの?
ポート5432経由でDB叩いてるときは・・・何が流れているんだろうねぇ。
誰かキャプチャしてみたことない?
0256名無しさん@Emacs
03/09/26 22:49ID:???ここらへん。
http://www.postgresql.jp/document/pg732doc/developer/protocol.html
http://www.postgresql.jp/document/pg732doc/developer/protocol-message-formats.html
0257248
03/09/27 14:33ID:???やはりそうなんですか…
telnetとかssh使えない鯖だと困りますね…
他にはアイデア何か無いですかねー?
鯖変えた方がいいのかな…
0258名無しさん@お腹いっぱい。
03/09/27 16:52ID:???rootはしょうがないが
0259名無しさん@お腹いっぱい。
03/09/27 23:00ID:YVKPHFfz0260名無しさん@お腹いっぱい。
03/09/27 23:06ID:???シェルがつかえないようなのでネットワーク上暗号化するなら…
a. PerlのCGIかなんかでpg_dumpの出力を暗号化してファイルに保存するかメール送信。暗号化モジュールはCPANにいくつかある。
b. 同じくCGIかPHPなどでpg_dumpの出力をhttpsで転送する。もちろん転送先にWebサーバが必要。
0262名無しさん@お腹いっぱい。
03/09/30 21:06ID:1ZGrk1y4CREATE TABLE foo (a int4, b int 4, primary key(a));
で作ったテーブルを、
ALTER TABLE foo RENAME TO bar;
ALTER TABLE foo_pkey RENAME TO bar_pkey;
で 名前を変えました。
db=# \d bar
:
Indexes: bar_pkey primary key btree (a)
その後、ダンプして、次のように DB を作り直してリストアを行いました。
% pg_dump > backup
% dropdb db ; createdb db
% cat backup | psql -f - db
db=# \d bar
:
Indexes: foo_pkey primary key btree (a)
なぜか、indexが変更前の名前のままでした。
pg_dump の時点で古い名前が出力されています。
これは何故でしょうか?バグなんでしょうか?
それとも、indexの名前変更に特別の手段が必要なのでしょうか?
教えてください。
0263あぼーん
NGNG0264名無しさん@お腹いっぱい。
03/09/30 22:15ID:???primary key の名が、TABLE名_pkey と決まってるわけじゃない
作成時にそういう名前で作って定義してるだけ
この場合、primary key は消して再定義して作ったほうがよさげ
消すのも新たにkeyを設定するのもALTER TABLEでできる
0265名無しさん@お腹いっぱい。
03/09/30 22:26ID:???先ほど色々調べていたんですが、
PostgreSQL 7.2.x から primary key を後から付けることが
できるようになってたんですね。
一旦、ALTER TABLE で DROP して、再度 ADD するんですね。
となると、名前を変えるだけなのに、
再び VACUUM ANALYZE もしないといけないんでしょうか。
indexの名前を RENAME TO しても、ダンプしなければ、
ふつうに名前が変わっているようにみえるのですが…。
もちろん、普通に新しい名前でアクセスできますし。
0266名無しさん@お腹いっぱい。
03/10/01 11:13ID:???「postgresql.confのパラメータの意味を全て洗い出しといて」
といわれましたが、ググってみましたが、見つかりませんでした。
postgresql.confの内容の説明が載っているサイトがあれば、教えていただけませんでしょうか?
よろしくお願いいたします。
0267名無しさん@お腹いっぱい。
03/10/01 16:39ID:???マニュアルみればいいじゃん。
上司もばか。
0268名無しさん@お腹いっぱい。
03/10/01 20:31ID:???放っておけばいいのに。
優しい奴め(w
0269名無しさん@お腹いっぱい。
03/10/01 23:50ID:???0270名無しさん@お腹いっぱい。
03/10/03 01:58ID:cPpR/REgで待ちたくないのですが、何か方法はありますか?
0271名無しさん@お腹いっぱい。
03/10/03 09:35ID:wUcJkeJofor update nowait にして、即例外を投げてもらうようにしたら?
0272名無しさん@お腹いっぱい。
03/10/03 11:04ID:???ポスグレでnowaitできたっけ?
0273名無しさん@お腹いっぱい。
03/10/03 15:37ID:???手元の7.3.2にはなさそうです < nowait
0274271
03/10/03 17:25ID:???0275名無しさん@お腹いっぱい。
03/10/03 17:58ID:??? ̄ ̄ ̄ ̄-----________ \ | / -- ̄
--------------------------------- 。←>>271
_______----------- ̄ ̄ ̄ ̄ ̄
∧ ∧ / / | \ イ
( ) / ./ | \ /
_ / )/ / | /|
ぅ/ / // / | / |
ノ ,/ /' / |│ /|
_____ ,./ // | / .─┼─ |
(_____二二二二) ノ ( (. | / ┼┐─┼─
^^^' ヽ, | | / .││ .│
0276名無しさん@お腹いっぱい。
03/10/03 23:14ID:???0277名無しさん@お腹いっぱい。
03/10/05 02:50ID:???キャンセルすることはできたと思う。
開発者マニュアル読みあさってみれば?
>>271
nowaitはできないよ。
0278名無しさん@お腹いっぱい。
03/10/05 15:32ID:WMw5Qpzoレスおせーよ
0279あぼーん
NGNG0280名無しさん@お腹いっぱい。
03/10/06 22:30ID:???リストアするとprimary keyとかindexが復元されないのですが、これって仕様ですか?
0281名無しさん@お腹いっぱい。
03/10/07 00:21ID:???インデックスは-iでリストアする。
0282名無しさん@お腹いっぱい。
03/10/09 14:14ID:???nowaitの実装は、WebDBの最新号に、かいてあったけど、
ソース変更しないとだめ。
自分は発行したsql文をある時間でキャンセルすることで対応した。
0283TREK 5500
03/10/12 05:48ID:fX3MaFhgALTER TABLE で、項目を追加したりすると、
マイクロソフトACCESS(2000)からODBC経由でテーブルを参照できなくなってしまいます。
そういうものなのでしょうか?
0284名無しさん@お腹いっぱい。
03/10/12 09:48ID:???そういうものではないです。
テーブルのリンクをやりなおしてみてください。
0285TREK 5500
03/10/12 14:08ID:fX3MaFhg0286NAME IS NULL
03/10/13 23:38ID:J6F486gIどなたかご教授お願いできませんでしょうか?
環境はPostgreSQL 7.3.3です。
下記のようなテーブルがあり、
CREATE TABLE user_master(
regist_time timestamp(0) without time zone NOT NULL,
id CHAR(8) ,
name VARCHAR(25) ,
mail VARCHAR(50) ,
sex CHAR(1)
);
-------------------------------------------------------------
regist_time | id | name | mail | sex |
2003-10-12 03:57:00 | 111 | tanaka | tanaka@***.jp | m |
-------------------------------------------------------------
※ 性別(sex)は、男:m、女,wとなっております。
上記のテーブルを元に
-----------------------------
regist_time | 男 | 女 |
2003-10-12 | 20 | 10 |
2003-10-11 | 18 | 8 |
-----------------------------
日付別で男女別ユーザーの数をだしたいのですが、
どうSQLを書いていいものかわからず質問させていただきました。
0287名無しさん@Emacs
03/10/14 00:29ID:???case when nullvalue(men) then 0 else men end,
case when nullvalue(women) then 0 else women end
FROM
( SELECT regist_time::date,count(sex) as men
FROM user_master
WHERE sex='m'
AND regist_time::date IN (SELECT regist_time::date FROM user_master GROUP by regist_time::date)
GROUP BY regist_time::date
) AS men_count
right join
( SELECT regist_time::date,count(sex) as women
FROM user_master
WHERE sex='w'
AND regist_time::date IN (SELECT regist_time::date FROM user_master GROUP by regist_time::date)
GROUP BY regist_time::date
) AS women_count
on men_count.regist_time::date = women_count.regist_time::date;
0288名無しさん@Emacs
03/10/14 00:30ID:???regist_time | id | name | mail | sex
---------------------+----------+------+------+-----
2003-10-13 23:59:06 | 00000001 | 1 | | m
2003-10-13 23:59:14 | 00000002 | 2 | | w
2003-10-13 23:59:18 | 00000003 | 3 | | w
2003-10-13 00:00:00 | 00000004 | 4 | | w
2003-10-13 00:00:00 | 00000005 | 5 | | m
2003-10-13 00:00:00 | 00000005 | 6 | | m
2003-10-14 00:00:00 | 00000007 | 7 | | w
2003-10-14 00:00:00 | 00000008 | 8 | | w
2003-10-14 00:00:00 | 00000009 | 9 | | w
2003-10-14 00:00:00 | 00000010 | 10 | | m
2003-10-15 00:00:00 | 00000011 | 11 | | w
(11 rows)
SQL実行すると、
regist_time | men | women
-------------+-----+-------
2003-10-13 | 3 | 3
2003-10-14 | 1 | 3
2003-10-15 | 0 | 1
(3 rows)
left outer joinとright outer joinを同時に実行する方法ってないの?
0289
03/10/14 00:58ID:c61+ht2Nfull join?
0290NAME IS NULL
03/10/14 02:17ID:???0291名無しさん@Emacs
03/10/14 02:18ID:???いや、outer join使ったの初めてだったので。。
>288のright joinをfull joinに変えればできました。
パフォーマンスは知らんけど。
0292名無しさん@Emacs
03/10/14 02:19ID:???unionってどう使うのー? おせーてー。
その単語、今回チラッと知ったんだけど、使い方まで分からんかった。。
0293NAME IS NULL
03/10/14 03:02ID:???from
(select regist_time::date as date,count(*) as men,0 as women
from user_master where sex='m' GROUP by regist_time::date
union
select regist_time::date,0,count(*)
from user_master where sex='w' GROUP by regist_time::date) as cnt
group by date;
暇つぶしに作ってみたっす。
要件に合ってるかも不明だし、>>287のSQLも良く見てないです(w
パフォーマンスが変わんないなら、短い方がよいからね。
0294名無しさん@Emacs
03/10/14 03:37ID:???0295NAME IS NULL
03/10/14 04:57ID:???よそでやってくれって言おうと思ったら、
SQL専門のまともなスレって無いのね..
0296NAME IS NULL
03/10/14 11:11ID:???今、テーブル作成を行っているのですが、
CREATE TABLE CUSTOMER_LOGS(
CUSTOMER_ID VARCHAR(32) NOT NULL,
DESCRIPTION VARCHAR(255),
ACTION_USER VARCHAR(32),
ACTION_DATE TIMSTAMP(8) NOT NULL
);
で実行したところ、
ERROR: parser: parse error at or near "("
ERROR: parser: parse error at or near "("
と2行エラーメッセージが帰ってきます。
何が原因なのでしょうか?
0297NAME IS NULL
03/10/14 11:17ID:???「おれたちTIM」
0298NAME IS NULL
03/10/14 12:52ID:???が!
構文ミスでしたか・・・
アリガトウございました・
0299NAME IS NULL
03/10/14 13:29ID:???0300NAME IS NULL
03/10/14 14:40ID:???気になったのだが、IDをVARCHAR型にするの?
INTなりの数字型にしてindexをつけないと重くなるような気がするけど。
0301
03/10/14 17:31ID:CXFd3VN7そのユーザが UID=0 つまり root だったら無条件で接続拒否します?
0302NAME IS NULL
03/10/14 18:27ID:???UID=0とか、関係ない。
0303
03/10/16 09:31ID:VFGmw4+Vsyslog 経由にする利点って何?
0304NAME IS NULL
03/10/16 16:31ID:???どこかに VARCHAR とのベンチ比較とか無いですかねぇ
0305NAME IS NULL
03/10/16 18:52ID:???他になんかある?
0306NAME IS NULL
03/10/16 20:30ID:???0307
03/10/16 21:05ID:VFGmw4+Vが無いんですが、どうやってデータベースの名前を変更するのでしょうか?
0308
03/10/16 21:17ID:VFGmw4+VALTER DATABASE name RENAME TO newname
があるそうです。
0309
03/10/16 21:41ID:VFGmw4+Vcreatedb efgh
pg_dump abcd > abcd.dump
psql -e efgh < abcd.dump
も
createdb efgh
pg_dump abcd | psql -e efgh
もうまくいきました。
0310一時的にリードオンリーに
03/10/16 21:59ID:VFGmw4+Vリードオンリーに制限するにはどうすればいいのでしょうか?
やはり GRANT で全ユーザ、全テーブルの権限を
書き換えなくてはならないのでしょうか?
0311psql コマンドで自分が誰かを表示
03/10/16 22:16ID:VFGmw4+V自分がなんと言うユーザとして接続しているかわからなくなることがあるのですが、
who am i のようなコマンドはあるのでしょうか?
0312psql コマンドで自分が誰かを表示
03/10/16 22:23ID:VFGmw4+V現在接続しているユーザの名前は見れませんでした。
0313NAME IS NULL
03/10/16 22:35ID:???0314psql コマンドで自分が誰かを表示
03/10/16 22:41ID:VFGmw4+VSELECT CURRENT_USER; でもなにやら表示されるっぽいですが、
これって何かしら内部的に使われているテーブルから SELECT しているんでしょうか?
FROM が省略されているのでしょうか?
0315Omitted FROM Caluses
03/10/16 22:53ID:VFGmw4+VPostgreSQL allows one to omit the FROM clause. It has a straightforward use to compute the results of simple expressions:
SELECT 2+2;
?column?
----------
4
つーことは、CURRENT_USER ってのはタダの内部変数で、
つまりタダの「式」 ってこと?
0316NAME IS NULL
03/10/16 22:57ID:???\set PROMPT1 '%n@%/%R%# '
とかどうよ?
気にいったら.psqlrcに書いておくと良い。
というかこれで現在のsearch path(schema)も表示させたいんだけどなー。
今は無理みたい。commandとして入れればいいのかなぁ。
とついでに質問してみたり。
0317NAME IS NULL
03/10/16 23:16ID:???getpgusername()がCURRENT_USERを返してると思われ。
0318Omitted FROM Caluses
03/10/16 23:22ID:VFGmw4+V(単にマニュアルを読みこんでないだけという話もありますが)
>>317 そのあたりの関数などの一覧も、まだちゃんとチェックしていないので、
これから勉強したいと思います。ありがとうございました。
あと、>>310 ですが、pg_hba.conf で禁止することにしました。
0319NAME IS NULL
03/10/16 23:23ID:VFGmw4+V安心してデータベースのメンテナンスをしたかったから、ということなんですが、
僕みたいに個人の Web サイトのバックエンドにしている人ならまだしも
仕事で使っていて PostgreSQL をむやみに停止できない人は困るんでしょうね…
0320NAME IS NULL
03/10/20 13:56ID:???PostgreSQLって画像を格納することができるんでしょうか?
ご存知の方教えてください。。。
0321
03/10/20 15:12ID:0xhXC68G私だったら、ラージオブジェクト使うか、
base64 でテキスト化して扱う。
0322NAME IS NULL
03/10/20 16:06ID:???0323NAME IS NULL
03/10/20 16:17ID:???メタデータだけ入れておけばいいんじゃない?
0324NAME IS NULL
03/10/20 17:23ID:???0325
03/10/20 18:06ID:0xhXC68Gという議論がいろんなところでされてたなあ。
あとはケースバイケースでしょ。
0326NAME IS NULL
03/10/20 19:35ID:???なんで>>322-323みたいに言い切れるのかが謎。
0327NAME IS NULL
03/10/20 19:54ID:???余計な話は結構です。。。
0328NAME IS NULL
03/10/20 20:01ID:cUZE6nZ9できるんだろうか…もしできなければ MS SQL Server にしなきゃならん…
0329NAME IS NULL
03/10/20 20:02ID:cUZE6nZ90330320
03/10/20 20:03ID:???アドバイスありがとうございました。
私の方ではファイル名だけをDBに入れるつもりでいたのが
「画像も入れよ」との上司命令を賜って迷っていたんですが、
やっぱり画像を入れるのはやめにします。。
0331NAME IS NULL
03/10/20 20:07ID:cUZE6nZ9MD5 ハッシュも一緒に持っておくといいと思います。
0332NAME IS NULL
03/10/20 20:52ID:???画像みたいに大きくなりやすいデータではやんないだろうけど。
>>328
少なくとも、そんな型はない。
BLOBで突っ込むだけだね。
ttp://ml.postgresql.jp/pgsql-jp-old/pgsql-jp/2000Nov/msg00038.html
ただしこんな話もある。
3年前だし今はどうなっているか?はわかりませぬ。
手元にAccessないもんで。
0333NAME IS NULL
03/10/20 21:21ID:???そだね。後ファイルサイズとかmime typeとか持ってると、楽なことが多い。
メリットは運用で手抜きできるってことかな。
それ以上のことはないと思うけど、運用で手抜きできるのは、
運用にあまり人を割けない組織ではかなりありがたい。
0335NAME IS NULL
03/10/20 21:37ID:cUZE6nZ9いままで PostgreSQL でバイナリデータを扱ったことが無かったんですが、
SQL 文を発行する際にはバイナリデータは何らかの方法でエンコードされるんでしょうか?
0336NAME IS NULL
03/10/20 21:43ID:cUZE6nZ9http://www.postgresql.jp/document/pg721doc/user/datatype-binary.html
Table 3-9. SQL99 バイナリ文字列と PostgreSQL BYTEA データ型の比較
http://www.postgresql.jp/document/pg721doc/user/datatype-binary.html#DATATYPE-BINARY-COMPAT-COMP
0337NAME IS NULL
03/10/20 21:45ID:cUZE6nZ9http://www.techscore.com/tech/Java/JDBC/4.html
0338NAME IS NULL
03/10/21 00:13ID:???FROM t_sample1
WHERE t_sample2.code = t_sample1.code;
t_sample2テーブルのcode っていうフィールドを、t_sample1 のcode
テーブルの内容に更新するという処理だけど、これ実行したら 3,794,550行
の更新に7.6時間かかった。
実行環境は Pen3-800MHz ,1024MB ,
Debian 3.0 ,PostgreSQL 7.2.1 ,GCC 2.95.4
0339NAME IS NULL
03/10/21 01:01ID:???独り言ですか、それとも何か?
0340NAME IS NULL
03/10/21 04:41ID:???知らんけど。あと日本語とSQL文も少しずつ違う気がする。
秒あたり140件が速いか遅いのかはわからない。
トランザクション切ってるかどうかにもよるし。
案外、updateワンセットよりも、insertツーセット(うち1回は
テーブル作成と同時)の方が早く終わるかもよ。
CREATE TEMP TABLE t_temp
AS SELECT t_sample1.部門cd, t_sample2の残りのフィールド
FROM t_sample1, t_sample2
WHERE t_sample1.code = 1_sample2.code;
TRUNCATE TABLE t_sample2;
INSERT INTO t_sample2 SELECT * FROM t_temp;
実行してないから内容は保証しません。
もちろん、実行中はどのテーブルも他所からはuntouchableです。
0341NAME IS NULL
03/10/21 12:13ID:/vGrIqy+儲からないなら、無償で公開した方がスマートって自己中心な願望に過ぎないYO!
単にオープンソースで無償にしか目が行かずにポスグレで稼ごうと企んで、全銀協から金払って買えないようなヘボヘボビジネスやってる貧乏企業なんだろうけど(w
0342NAME IS NULL
03/10/21 12:34ID:Dy5xJv2phttp://ml.postgresql.jp/pipermail/pgsql-jp/2003-October/006379.html
これのこと?
0343338
03/10/21 21:47ID:???すまそ、主題を忘れてた。
ようは、こんな環境でこんな処理を実行したら、こんなに時間が
かかったってダケです(^^;;
>340
こんどそれやってみます〜
0344NAME IS NULL
03/10/22 11:22ID:zOSB2GExメインのデータがサーバに入ってて、
外回りの人のノートパソコンの Access のテーブルと時々同期させたいんです。
0345NAME IS NULL
03/10/22 11:26ID:zOSB2GExhttp://ml.postgresql.jp/pgsql-jp-old/pgsql-jp/2000Oct/msg00459.html
ここに同じようなことをしたい人が居ました。
0346NAME IS NULL
03/10/24 11:54ID:ESRhBeXaHTTP プロトコルでダウンロードできるところ知りませんか?
日本語版じゃなくて本家のやつ。MSI のパッケージ。
0347NAME IS NULL
03/10/24 11:58ID:???なんでDLLじゃだめ?
0348NAME IS NULL
03/10/24 11:58ID:???0349NAME IS NULL
03/10/24 12:02ID:ESRhBeXaインストーラつきじゃないとインストールしてもらえそうにないから。
0350みつけた
03/10/24 12:08ID:ESRhBeXa0351みつけた
03/10/24 12:21ID:ESRhBeXa> ODBDかますんなら
> Provider=MSDASQL; DSN=PostgreSQL; UID=myid; PWD=myname
> 直接なら
> Provider=PostgreSQL; UID=myid; PWD=myname
後者の方では、サーバはどこで指定するんでしょうか?
0352NAME IS NULL
03/10/25 07:32ID:???こういうメールも久しぶりにみるな。
0353NAME IS NULL
03/10/26 16:01ID:QzGBD7qqhttp://ml.postgresql.jp/pgsql-jp-old/index.html
このアーカイブは1995年から2002年2月まで運用された
旧 pgsql-jp MLのアーカイブです。
0354NAME IS NULL
03/10/26 16:02ID:QzGBD7qqhttp://ml.postgresql.jp/pipermail/pgsql-jp/index.html
0355NAME IS NULL
03/10/26 16:03ID:QzGBD7qqこのメーリングリストから脱退したいのですが、方法を教えてください。
0356NAME IS NULL
03/10/27 15:10ID:ppzoizRmグラフィカルに、なすがままに、GUIで、テーブルを作りまくるにはどうすればいいのでしょうか?
ADP で何とかなるんでしょうか?
その際、やっぱり ODBC 経由ですか?
それとも PostgreSQL 専用の OLE DB データプロバイダがあるのでしょうか?
0357NAME IS NULL
03/10/27 15:13ID:ppzoizRmMS SQL Server だけのようなので、断念しました…
0358NAME IS NULL
03/10/27 15:19ID:ppzoizRmOLE DB データプロバイダとして PostgreSQL を指定するといいみたい。
自分で試したわけではないけど。
string connectionString =
"Provider=PostgreSQL;" +
"Addr=127.0.0.1;" +
"Database=test;" +
"User ID=postgres;" +
"Password=fun2db";
http://www.go-mono.com/oledb.html
0359NAME IS NULL
03/10/27 15:26ID:ppzoizRmhttp://archives.postgresql.org/pgsql-odbc/2002-06/msg00056.php
PostgreSQL 用の OLE DB データプロバイダって、まだ開発途上なのかな?
現状では OLE DB -> ODBC -> PostgreSQL で開くしかない?
0360NAME IS NULL
03/10/27 15:28ID:ppzoizRmhttp://gborg.postgresql.org/project/npgsql/projdisplay.php
Npgsql is a .Net Data Provider for PostgreSQL.
A .Net Data Provider is the functional equivalent in the .Net Framework
to a jdbc driver in the Java Framework.
0361NAME IS NULL
03/10/27 15:29ID:ppzoizRmOLE DB 用のネイティブなドライバはないのかも。
0362NAME IS NULL
03/10/27 15:35ID:ppzoizRmhttp://archives.postgresql.org/pgsql-odbc/2003-10/msg00019.php
Date: Mon, 29 Sep 2003 17:55:04 -0700
このスレッドが ODBC, OLE DB, .NET あたりの話題としては最新かな。
0363NAME IS NULL
03/10/28 12:05ID:aMgZya+1もはや外部の PostgreSQL を利用するには
その鯖で Apache でも立てて CGI で Web インターフェイスをつけるくらいしかないのでしょうか?
0364NAME IS NULL
03/10/28 12:33ID:???ただし、何のためのfirewallが存在してるのか考えてからな。
0365NAME IS NULL
03/10/28 13:34ID:???これか…激しく危なそうなソフトだ…
0366NAME IS NULL
03/10/28 13:36ID:???psql なんかも対応してないしなぁ…
SSH が使えるように頼むほうがセキュリティ的には安心だなぁ。
0367NAME IS NULL
03/10/29 16:49ID:???のでしょうか?
いつも書式変換してINSERT文に入れてますが、どうもこの処理が無駄に思えます。
0368NAME IS NULL
03/10/29 17:40ID:???突然ですがlibpqの使い方を勉強してます。
で、下のコードをGCCでコンパイルすると
PQ〜のリファレンスがわかんな〜いって返ってきます・・・
どうしてですか??
わかる人おせーてください。
0369NAME IS NULL
03/10/29 17:42ID:???* testlibpq.c
*
* PostgreSQL のフロントエンドライブラリである libpq の
* C 版のテスト
*/
#include <stdio.h>
#include <libpq-fe.h>
void
exit_nicely(PGconn *conn)
{
PQfinish(conn);
exit(1);
}
main()
{
char *pghost,
*pgport,
*pgoptions,
*pgtty;
char *dbName;
int nFields;
int i,
j;
/* FILE *debug; */
PGconn *conn;
PGresult *res;
0370NAME IS NULL
03/10/29 17:42ID:???* バックエンドとの接続に必要なパラメータをセットしてプログラムを開始します。
* パラメータが NULL であれば、環境変数を探して妥当と思われる値を
* 使おうとしますが、見つからない場合は、システムデフォルトの定数を使います。
*/
pghost = NULL; /* バックエンドサーバのホスト名 */
pgport = NULL; /* バックエンドサーバのポート番号 */
pgoptions = NULL; /* バックエンドサーバの起動オプション */
pgtty = NULL; /* バックエンドのデバッグ用 tty */
dbName = "template1";
/* データベースに接続します */
conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);
/*
* バックエンドとの接続が成功したことを確認
*/
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}
/* debug = fopen("/tmp/trace.out","w"); */
/* PQtrace(conn, debug); */
/* トランザクションブロックの開始 */
res = PQexec(conn, "BEGIN");
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "BEGIN command failed\n");
PQclear(res);
exit_nicely(conn);
}
0371NAME IS NULL
03/10/29 17:43ID:???* メモリリークを防ぐため、必要がなくなったら、すぐに
* PQclear(PGresult) しましょう
*/
PQclear(res);
/*
* データベースのシステムカタログ、pg_database からインスタンスを
* 取り出す
*/
res = PQexec(conn, "DECLARE mycursor CURSOR FOR SELECT * FROM pg_database");
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "DECLARE CURSOR command failed\n");
PQclear(res);
exit_nicely(conn);
}
PQclear(res);
res = PQexec(conn, "FETCH ALL in mycursor");
if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
{
fprintf(stderr, "FETCH ALL command didn't return tuples properly\n");
PQclear(res);
exit_nicely(conn);
}
/* まず属性名を表示 */
nFields = PQnfields(res);
for (i = 0; i < nFields; i++)
printf("%-15s", PQfname(res, i));
printf("\n\n");
/* 次にインスタンスを表示 */
for (i = 0; i < PQntuples(res); i++)
{
for (j = 0; j < nFields; j++)
printf("%-15s", PQgetvalue(res, i, j));
printf("\n");
}
PQclear(res);
/* カーソルを閉じる */
res = PQexec(conn, "CLOSE mycursor");
PQclear(res);
/* トランザクションをコミット */
res = PQexec(conn, "COMMIT");
PQclear(res);
/* データベースとの接続を閉じ、後始末 */
PQfinish(conn);
/* fclose(debug); */
return 0;
}
0372NAME IS NULL
03/10/29 19:32ID:QnJL2XQc漏れの OS (Debian GNU/Linux) では
#include <postgresql/libpq-fe.h> だけど。
0373NAME IS NULL
03/10/29 19:40ID:QnJL2XQc実行してないけどね。
0374あぼーん
NGNG0375NAME IS NULL
03/10/30 22:10ID:sTbt+zO/0376NAME IS NULL
03/10/31 06:12ID:???インストーラー付きのネ
0377NAME IS NULL
03/10/31 10:50ID:???個人で使うのには抵抗あるしね…
0378NAME IS NULL
03/10/31 11:23ID:s8J5VFuX漏れは psql コマンドは cygwin の奴をつかってるよ。
サーバは別のところの Linux だけど。
0379NAME IS NULL
03/10/31 12:03ID:???0380NAME IS NULL
03/10/31 13:30ID:s8J5VFuX0381NAME IS NULL
03/10/31 13:41ID:n6ZftDmf繋いでいたシステムが最近エラーで繋がらなくなってしまいました。
Unexpected protocol character during authentication;
Error while reading from the socket.
ネットワーク管理者もDBサーバ管理者も設定を変えてないと
言っており、また端末側も設定は変えていません。
端末側のODBCドライバにログを出させると、下のような流れで
SOCKET通信レベルでエラーが起こっているようなのですが....
[xxxx]connecting to the server socket...
[xxxx]connection to the server socket succeeded.
[xxxx]sizeof startup packet = 292
[xxxx]sent the authentication block.
[xxxx]sent the authentication block successfully.
[xxxx]gonna do authentication
[xxxx]read -1, global_socket_buffersize=4096
[xxxx]auth got '\0'
[xxxx]CONN ERROR: func=PGAPI_DriverConnect,
desc='Error from CC_Connect', errnum=210,
errmsg='Unexpected protocol character during authentication'
似た事例、発生原因をご存知の方、おられませんか?
0382NAME IS NULL
03/10/31 14:41ID:s8J5VFuXWinsock 周りの話ではないと思います。
認証に失敗しているのではないですか?
おそらくパスワードのハッシュ方法の違い (DES と MD5) ではないかとおもうのですが。
0383NAME IS NULL
03/10/31 14:43ID:s8J5VFuXでも DB の管理者は変更していないといっているんですよね??
0384NAME IS NULL
03/10/31 14:47ID:s8J5VFuXpg_hba.conf の method の指定が適切でないと思います。
0385NAME IS NULL
03/10/31 16:58ID:???DB管理者にもう一度確認してみます。
0386367
03/11/01 12:34ID:???0387NAME IS NULL
03/11/02 03:11ID:???>>76
0388NAME IS NULL
03/11/03 17:07ID:0aIYxvktノースウインド.mdb
を勉強の為にPostgresで使いたいのだけど一発でインポートする事なんてできますか?
0389NAME IS NULL
03/11/03 17:33ID:???0390NAME IS NULL
03/11/04 00:01ID:HVSpp1ONinsert した時にその insert した行の番号を知りたいです。
どうすればいいのでしょうか?
0391NAME IS NULL
03/11/04 00:23ID:???0392NAME IS NULL
03/11/04 00:32ID:???nextval をとって、その値で insert すればよかったです。。
# 最近自己レスが多いなあ。。
0393NAME IS NULL
03/11/04 09:41ID:???同時書き込みがあったときに保証できるの?
素直にpg_lastoidとって、select
0394NAME IS NULL
03/11/04 10:06ID:???0395393
03/11/04 12:25ID:???読み込みようのロックを使うとかの話?
そもそもserialのnextvalを自力でとってinsertしてもインクリメントされんような気がするのだが。
0396NAME IS NULL
03/11/04 13:04ID:???おいおい大丈夫かー。
0398NAME IS NULL
03/11/04 14:56ID:???http://www.postgresql.jp/document/pg721doc/reference/sql-createsequence.html
0399393
03/11/04 15:21ID:???トランザクションの理解がどこで必要になるのかはわからなかったけど。
どっちにしろ、serialフィールドならpg_lastoid使うほうがいいと思うが。
0400393
03/11/04 15:40ID:???0401NAME IS NULL
03/11/04 16:22ID:???この辺も参考にな
0402NAME IS NULL
03/11/04 16:29ID:???0403NAME IS NULL
03/11/04 19:48ID:RtJ+FOnVALTER TABLE test DROP PRIMARY KEY;
としたのですが、
ERROR: parser: parse error at or near "primary" at character 23
と言われてしまいました。間違っているのでしょうか…。
0404NAME IS NULL
03/11/04 20:34ID:???incrementalなserial値とlastoidは全然別の話だと思うが。。。
なぜ誰も突っ込まない?
0405NAME IS NULL
03/11/04 22:52ID:ytHQNcHv[test1]
name | divno | postno |
------+-------+--------+-
x | | 1 |
y | 1 | |
z | 2 | 2 |
[test2]
divno | divname |
-------+-----------+-
1 | marketing |
2 | sales |
[test3]
postno | postname |
--------+----------+-
1 | syacho |
2 | kacho |
上の様な3つの表があります。
外部結合で以下のようなSQL文をpsqlで発行しました。
select t1.name , t2.divname , t3.postname
from (test1 t1 left join test2 t2 on t1.divno = t2.divno)
left join test3 t3 on t1.postno = t3.postno ;
すると以下のようなメッセージが返されました。
sisdb->
ABORT BEGIN COMMENT ……
ALTER CLOSE COMMIT ……
ANALYZE CLUSTER COPY ……
sisdb-> left join post p on e.postno = p.postno
結果はちゃんと返されるのですが…
これは警告なのでしょうか?
SQL文に何か問題があるのでしょうか?
バージョンはpostgreSQL7.3.4で
redhat9です。
よろひくお願いします。
0406NAME IS NULL
03/11/04 23:19ID:???lastoidつかってINSERTした列をSELECTするってことじゃ?
0407406
03/11/04 23:20ID:???0408NAME IS NULL
03/11/05 11:02ID:???あーそーゆーことか。
いや、serial値なら同一トランザクション内でmax取りゃいいじゃん、と思ってた。
0409NAME IS NULL
03/11/06 12:34ID:C3LKLBj/"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user id to prevent
a possible system security compromise. See the documentation for
more information on how to properly start the server.
といわれて何もしません.
postmaster の権限を調べてみても,
root に実行権限があります.
どうすればいいのかわからなくて途方にくれています.
0410NAME IS NULL
03/11/06 12:49ID:???書いてある通りだけど、
危険だからrootで実行できないようになってるんでしょ。
ユーザーを作ってそいつに実行させれば解決。
0411NAME IS NULL
03/11/06 13:30ID:C3LKLBj/postgres ユーザで実行したら無事動きました.
ありがとうございます.
ついでに質問です.
(1) Unix の起動ファイルに,postgres のサーヴィスが
動くようにするのが普通ですが,これは root が実行する
ものではないのでしょうか?
(2) 今の私のシステムでは root 権限で,
su - postgres
として,PostgreSQL の管理ユーザになれますが,
一般ユーザから su しても,パスワードを求められ,
postgres ユーザになれません.
一般ユーザから postgres ユーザになるには,
どうすればいいのでしょうか?
0412NAME IS NULL
03/11/06 13:49ID:???それが危険だから、PostgreSQL専用ユーザを作って起動させているのでは?
(2)
ユーザpostgresのパスワードを設定すれば?
やり方は自分で調べてね。
0413NAME IS NULL
03/11/06 14:39ID:???つい先ほどですね、本見て適当にトリガーっつうの入れてたんです
なんか動いてるような気がしなかったから、なんつーかそのー
ばんばん打ち込んだんですね、そしたらですね
先ほどからメインサーバーがですね、落ちたんですね
はい!ですけど、まだ自分が疑われてないので
今から急いで情報調べるんですね。はい
0414NAME IS NULL
03/11/06 15:18ID:???スレ違い
データベース破壊録カイジ
http://pc2.2ch.net/test/read.cgi/db/1057198362/l50
0415NAME IS NULL
03/11/06 16:51ID:???>一般ユーザから postgres ユーザになるには,
>どうすればいいのでしょうか?
あまりその必要はないと思うのだが・・・
0416NAME IS NULL
03/11/06 17:34ID:???「起動時 特定ユーザー プロセス 起動」でぐぐれば?
0417NAME IS NULL
03/11/06 17:35ID:???0418NAME IS NULL
03/11/06 19:28ID:???0419NAME IS NULL
03/11/07 00:18ID:???(1)
rootが実行するが、rootが他の人の権限で動かすという格好だ。
su -l postgres -c コマンド名 とでもしているんじゃないだろうかね。
これは「非常に」よく使う方法。
サービスが何でもかんでもroot権限で走るっつーのはあんまり
好ましいことじゃない。
(2)
一般ユーザからpostgresユーザにsuできる可能性はできるだけ摘み取るべき。
ちなみにこれはPostgreSQLの話じゃなくてUNIXのアカウント管理の話に
なるのだけれど、「パスワードが設定されていない」状態には2種類あってね。
「rootからしかsuできない」「誰でもパスワード抜きでsuできる」だ。
通常useraddされたばかりのアカウントはパスワードが
設定されておらず、この状態は前者に相当する。
後者にしたければ/etc/paswdファイルを手でいじるか、passwd -dするか。
まあそんな穴をわざわざ用意する必要はないぞ。
0420NAME IS NULL
03/11/07 05:04ID:???0421NAME IS NULL
03/11/07 05:18ID:???0422NAME IS NULL
03/11/07 09:16ID:???0423NAME IS NULL
03/11/07 12:42ID:???なんですが、レンタル無料Xrea サーバ内では復元できますが、
その****.dumpをダウンロードしまして、自宅サーバーで
(RHL7.3 PgSQLは同梱包のRPM)で
以下のようにすると
$ pg_restore -d **** ****.dump
pg_restore: [archiver] input file does not appear to be a valid archive
で、復元できません。つまり互換性がなかった。まあ中身はいろいろパスが通っている
-d このオプションも色々かえたり、直接 ****.dump の中を
書き換えたりしても、
pg_restore: [archiver] input file does not appear to be a valid archive
でした。
何かいい方法見つけた方いらしゃいますか?
Xrea サーバでのダンプするときはいろいろパスが通っているようなので
ノーマルのpg_dump -d **** > ****.dump
に戻す何か方法ありませんでしょうか。
0424NAME IS NULL
03/11/07 13:13ID:???psql **** < ****.dump
少なくともパスは関係ない。
0425NAME IS NULL
03/11/07 14:03ID:A52L86Yg0426NAME IS NULL
03/11/07 14:29ID:???ありがとうございます。なるほど、ヒントになりました。
Table全部消してから
psql **** < ****.dump
You are now connected as new user ****.
CREATE
CREATE
CREATE
ERROR: parser: parse error at or near "("
invalid command \.
ERROR: parser: parse error at or near "1"
invalid command \.
ERROR: parser: parse error at or near "2"
invalid command \.
ERROR: parser: parse error at or near "001"
エラーがでましたが
****.dump のエラーを直接書き直してやってみます。
0427NAME IS NULL
03/11/07 16:34ID:???ダウンロードか編集したときに文字化けしてねーか?
0428NAME IS NULL
03/11/07 18:24ID:1AJ04JchpgAdminiIIでの操作ができたので今度は同じようなものを自分でつくって
見ようかとVS.NETを起動させましてサーバーエクスプローラーというところで
は接続できるようになりました。
手元にあるテキストではOleDbDataAdaputerを使えと書いてあったのでその
ようにODBCからPostgreSQLの日本語ドライバを指定したのですが
作成した接続は現在のアダプタでは使えません
といわれてしまいます。
なにか根本的にやり方を間違えてますか?
0429NAME IS NULL
03/11/07 20:17ID:eFEFRmnppg_dump --blobs --format=c $1 | pg_restore --format=c --dbname=$2
こんな感じでやってる。
0430NAME IS NULL
03/11/07 23:27ID:???いえ、vi で開いていますが、化けてなく
日本語もきれいです。
0431NAME IS NULL
03/11/12 16:25ID:aQ88b7gtどうすればいいですか?
0432NAME IS NULL
03/11/12 16:52ID:???マニュアル嫁 > 431
0433ナミ
03/11/12 17:15ID:aQ88b7gtdatabasename というデータベースの
tablename というテーブルを
tablename1 という名前で
丸ごとコピーするには?
0434NAME IS NULL
03/11/12 18:00ID:???0435NAME IS NULL
03/11/12 21:15ID:???バージョンによっては使えない。
0436NAME IS NULL
03/11/13 07:28ID:HSJGrKBsウェブブラウザからpostgresをいじれるツールってないでしょうか?
0437NAME IS NULL
03/11/13 07:31ID:???phppgadmin。
0438NAME IS NULL
03/11/13 08:30ID:???(テーブルのリンクで)レンタル(共有)サーバ上ののpostgresにアクセスしようとすると、
ODBC--呼び出しが失敗しました。
Unknown authentication type (#211)
と怒られてしまいます。
ps -auxしたら、
postmaster -i -S -D /usr/local/pgsql/data (postgres)
とちゃんと「-i」オプションがついてて、
pg_hba.confは、
host all 0.0.0.0 0.0.0.0 trust
と書いてあり、
postgresql.confは、
tcpip_socket = true
にしています。
いったい、何が原因なのでしょうか?
0439NAME IS NULL
03/11/13 08:41ID:???おまえ
0440438
03/11/13 10:12ID:???0441ナミ
03/11/13 11:20ID:bLb02GzTどうすればいいんですか?
0442NAME IS NULL
03/11/13 12:26ID:???ver7.3、それともそれ以下?
調査しますので
IPアドレスかホスト名、ユーザ名、パスワード、
データベース名を教えてください (w
0443NAME IS NULL
03/11/13 13:30ID:???問題の切り分けのため、
ODBCじゃなくlibpgsql使うフロントエンドで接続したらどうなん?
0444NAME IS NULL
03/11/14 23:04ID:???0445NAME IS NULL
03/11/15 02:04ID:???想像だけど
Unknown authentication type (#211)
なので接続はしているのではないかと。
で、認証でコケているように見える。
0446NAME IS NULL
03/11/15 03:01ID:???パスワードからにしてる?
0447NAME IS NULL
03/11/15 03:16ID:TwEtqxvXCREATE TABLE message (
id int,
type smallint,
message VARCHAR(300),
post_time timestamp without time zone);
CREATE INDEX message_idx1 ON message (post_time);
で作ったテーブル(Rows: 57万件)で
EXPLAIN SELECT id FROM message
WHERE type = 1 and post_time >= now() - interval '48 hours';
とやってもINDEX message_idx1を使ってくれなくてSEQSCANで結果が出るのに
時間がかかってしまいます。
SET ENABLE_SEQSCAN=off;
も
SET EFFECTIVE_CACHE_SIZE=80000;
も
ALTER TABLE message ALTER COLUMN post_time SET STATISTICS 100;
ANALYZE message;
もやったのですが結果が変わりません。
timestamp型だからindexを使ってくれないんでしょうか?
ちなみにバージョンは7.2.1です。
0448NAME IS NULL
03/11/15 08:11ID:???0450NAME IS NULL
03/11/15 17:34ID:???>>448のケースだと、どうせインデクス使ってくれない前提で
(id, message)を別テーブルにして
(id, type, post_time) のみのテーブルにした方が
検索パフォーマンス高かったりする?
(ところで id は、PRIMARY KEY にしてもいいよね?)
このスレでも他スレでもさんざん指摘されてたことだけど、
単なるCOUNT(*)で、明らかにインデクス数えた方がいいだろうと
思われるケースでもsequential scanに逝っちゃうからなぁ。
という漏れは無料Sybaseに転びますた。
0451NAME IS NULL
03/11/15 23:47ID:???あったのは事実だな。7.3になってけっこうまともになったような記憶が
あるが。
>>447の例は単純すぎるから原因は別だと思うが、特に7.2はできが
悪かった。
>このスレでも他スレでもさんざん指摘されてたことだけど、
>単なるCOUNT(*)で、明らかにインデクス数えた方がいいだろうと
>思われるケースでもsequential scanに逝っちゃうからなぁ。
Postgresでなくても、count(*)を index scan で済ませる実装はあまり
見たことがないが。
0452NAME IS NULL
03/11/16 00:05ID:???COUNT(PK列)ならわからんでもないけど
0453NAME IS NULL
03/11/16 00:07ID:???7.3使ってるけど、PostgreSQLのオプティマイザは
たまにどうしようもなく遅い選択をすると思う。
他のDBMS(OracleやSQL Server)では問題なく
実行速度が出るようなSQL文でも、
PostgreSQLでやると途方もなく時間がかかったり。
ま、SQL文はシンプルに書けということですな。
0454NAME IS NULL
03/11/16 02:04ID:???経験的に、適当にセッティングしたDB上で、
いいかげんに書いたSQLが一番早く走るのは、
SQL Server , PostgreSQL , Oracle の順だな。
しっかりとチューニングした場合はOracleがだんとつに早くて、
SQL ServerとPostgreSQLは同じくらい。
Oracleはちょっとしたことですぐ御機嫌が悪くなるイメージがある。
PostgreSQLは素直に無難に動く感じ。
いい加減な環境で動かすならSQL Serverが一番だと思う。
インストールも楽だし、運用も楽。
いい加減にやる場合にはね。さすがMS。
0455NAME IS NULL
03/11/16 02:38ID:???0456447
03/11/16 03:21ID:???一応バージョンアップも考えていたのでテスト環境で7.3入れて試してみます。
今インスト中。あと、7.4RC2もあったのでこいつも試してみます。
0457NAME IS NULL
03/11/16 11:20ID:???SQL文に限らず、Oracleはしょーもないところでつっかえやすいねぇ。
悩んで悩んで、知ってる人に聞くと「えっ?そんなことだったの?」とか。
あんま細かいこと気にせずに、ぱっぱとやるならSQL Serverか。
プラットフォームが限定されるのをどう捉えるか、だね。
PostgreSQLはちょっとのバージョン違いで挙動がコロコロ変わるのが・・・
進化中なのは構わないけどそろそろ落ち着いてほしい。
0458NAME IS NULL
03/11/16 13:21ID:evY8/QEJ物凄く抽象的過ぎてイメージが湧かない。
具体例をそれぞれあげてくれるとありがたい。
0459NAME IS NULL
03/11/17 11:21ID:cPuto3eSチェックするようなシェルスクリプトを書きたいんだけど,
どうすればいいの?
0460NAME IS NULL
03/11/17 13:04ID:???Perlで書いた方がよいと思われ
どうしてもというならばシェルスクリプトで書くの止めはせんが
で、マジレスなのだが、
pg_*** を片っ端から眺めれば自ずと答えは見えてくるよ。
長い間Postgresの運用から外れてるのでsage
0461NAME IS NULL
03/11/17 15:20ID:???J-PHONEのメアド(@jp-x.ne.jp)が
Vodafone(x.vodafone.ne.jp)に変わりましたが、
DBに格納されてるアドの
ホスト名部分だけを一括変換って出来ないでしょうか?
正規表現の前方参照さえ使えれば出来そうですが、無理でしょうか?
0462NAME IS NULL
03/11/17 17:16ID:???`psql (option) -c "select hogehoge"`とやってやれば、むしろ日常ツールとしてぱっと作るのなら、
コネクションとかの作成をしないですむかららくな気が。
まあ、これはPERLでもできるけど。
んで、テーブルはpg_classに入っていて、relkind がrのもの。
テーブル名はrelname.
データタイプはpg_typeにある。
詳しくはドキュメントの開発者ガイドをどうぞ。
0463NAME IS NULL
03/11/17 17:37ID:???むりして調べるより、
ぱっとあなたが使える前方参照の正規表現がある言語でアクセスして
アップデートかけてやった方が早いような気もするけどねぇ。
一回しかやらないのでしょ?
#いや、おれもしらないけど。
perlにて
$mail = 'psql -t -c "select mail_address from hogehoge where mail_address like '%@jp-x.ne.jp'";
@mails = split(/\n/,$mail);
for $oldmail (@mails){
$newmail = $oldmail;
$newmail =~s/jp-x\.ne\.jp/x\.vodafone\.ne\.jp/;
`psql -c "update hogehoge set mail_address = $newmail where mail_address = $oldmail`;
}
みたいに
0464NAME IS NULL
03/11/17 17:38ID:???0465NAME IS NULL
03/11/17 17:39ID:???もうちょっと忘れてた。後、テキスト型だろうから、こうか。
0466NAME IS NULL
03/11/17 17:42ID:???これも間違ってた。スマソ。
0467NAME IS NULL
03/11/17 18:01ID:???なるほど。
結構件数が多いんでUPDATE一発で出来たら幸せだったんだけど、
無理っぽいですね。PL/pgSQLを組むんだったら負荷的に変わらないし
でもありがとう。そのコード使わせてもらいます。
0468NAME IS NULL
03/11/18 00:02ID:???~ で正規表現使って選び出し、substrで切り出してくっつけてUPDATEって
できなくもないが、、失敗するとショックでかいのでスクリプト書いたほうがいいね
0469NAME IS NULL
03/11/18 10:02ID:iZZGOnRshttp://www.postgresql.org/news/160.html
0470NAME IS NULL
03/11/18 10:45ID:??? ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧
( ´Д⊂ヽ
⊂ ノ
人 Y
し (_)
http://www.postgresql.org/presskit/jp/presskit74.html
0471NAME IS NULL
03/11/18 13:02ID:/fCQ8oFr0472NAME IS NULL
03/11/18 14:05ID:???DROPして作ればもとにもどってくれるかな?
0473NAME IS NULL
03/11/18 16:57ID:u72w5U2hhoge int4,
fuga int4
);
としてテーブルを作ったとき,
hoge 列と fuga 列がダブることのみ禁止する
# どっちかが異なれば許す
ような制約の設定方法は?
0474NAME IS NULL
03/11/18 17:46ID:???source/v7.4は全てのdownload用ftpサイトにミラーされていますが
binary/v7.4はまだミラーされてないサイトが多いですね。
日本のftpサイト(ftp.jp.postgresql.org)もbinary/v7.4はまだです。
なおbinaryは今のところbinary/v7.4/suse(SUSE Linux用)しかありません。
Windows用binaryを楽しみにしていますが本当にv7.4から対応するんでしょうか?
0475NAME IS NULL
03/11/18 22:28ID:???0476NAME IS NULL
03/11/18 22:42ID:JKZi6+sT0477NAME IS NULL
03/11/19 00:50ID:???pg_dumpall > file
・
・
psql template1 <file
0478NAME IS NULL
03/11/19 18:39ID:???= で抽出することがあるので CREATE INDEX しようとしたら
デフォルトの btree は 2733byte までと怒られたので USING HASH にしました。
今のところ INDEX なしと比べて 1/300 の速度で検索できて快適なのですが、マニュアルの
「完全に動的」や「静的 hash」の意味が分からず不安です。
http://www.postgresql.jp/document/pg734doc/user/indexes-types.html
定期的に vacuum full analyze かけているのですが、あるタイミングで
hash が btree になったりすることがあるということでしょうか?
もしくは急にパフォーマンスが悪くなるとか?
ご存知の方、何かアドバイスをいただければと思います。
0479NAME IS NULL
03/11/19 21:42ID:???格納するSQL文を教えて下さい。
テーブル hoge に、bytea型で定義されたphotoという列があります。
ここに /home/mona/photo/mona.jpg を格納したいんです。よろしく
お願いします。
0480NAME IS NULL
03/11/20 00:38ID:???8進数わかる?
基本的にバイナリもそのまま入れられるが、
一部をエスケープしなければならない(\\に3桁の8進の数字ををつけたもの)
全部エスケープしてもいいので、スクリプトで全部変換してしまうのも手だね
0481NAME IS NULL
03/11/20 02:13ID:7oqjaIhkttp://www.postgresql.org/news/160.html
副問い合わせなどの性能向上、IPv6サポートなどがされた
ようです。
喜んでアップグレードしてみたところ
FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 7.3, which is not compatible with this version 7.4.
なんてメッセージが(´・ω・`)ショボーン
0482
03/11/20 09:07ID:T0Vee6QXふつーダンプしてリストアして移行する。
そもそもそんな簡単にバックエンドDBを移行しないよ。
検証してからやるべし。
0483NAME IS NULL
03/11/20 14:14ID:???7.3.x -> 7.4 かな?
0484NAME IS NULL
03/11/21 00:48ID:???その説明聞いてもピンと来ないです。
出直してきますね。。
0485NAME IS NULL
03/11/21 03:14ID:DWtGky6Z/home/postgres/postgresql-7.4/src/interfaces/jdbc/build.xml:114: Old driver was detected on classpath or in jre/lib/ext, please re
move and try again.
このようなエラーが出てうまくいきません。
7.3.4の時の、jdbcドライバはclasspathから切り離してみたのですが、結果は同じでした。
どのようにしたら、いいでしょうか?
java 1.4.2
Apache Ant version 1.6beta2
kernel 2.4.22
RedHat 9 を使用しています。
0486NAME IS NULL
03/11/21 04:19ID:mYYJI5kxjre/lib/extには無いのか?
0487NAME IS NULL
03/11/21 11:20ID:???INSERT INTO table VALUES ('\\001\002\003・・・\\255')
こんな感じ
printf("\\\\%03o", data); を繰り返せば\\xxx の羅列はできる
0488487
03/11/21 11:22ID:???0489NAME IS NULL
03/11/21 12:53ID:uP23HR97開発環境1 : VB6(SP5) , ADO2.7SP1Refresh
開発環境2 : VB6(SP5) , ADO2.7SP1Refresh
この環境で FOR UPDATE のついたSELECT文を
実行すると開発環境1では正常に実行できるのですが
開発環境2では次のようなエラーが出てしまいます。
「ODBCドライバは要求されたプロパティをサポートしていません」
ADOのRecordsetをOpenするときにの設定は次の通りです。
RecObj.CursorType = adOpenStatic
RecObj.LockType = adLockReadOnly
開発環境1と2で何が違うか調査しているのですが
なかなか違いがわかりません。
どこが一番怪しいかわかりますか?
よろしくお願いします。
0490489
03/11/21 13:23ID:uP23HR97読み返してみたら文章変でした。
開発環境1と2はインストールしているソフトは同じにしているつもりなのですが
何かのバージョンや設定が違う可能性があります。
この設定の違いを確認しろ!!というような項目はあるでしょうか?
0491NAME IS NULL
03/11/21 19:17ID:9uyKcBIr/usr/local/j2sdk1.4.2/jre/lib/ext
のなかなんですが、postgresql.jar は、引っかからないように、__postgresql.jar__ という名前にリネームしてるんですけど
やっぱり、同じエラーが出てきてしまいます。
0492NAME IS NULL
03/11/22 10:47ID:OD6R5Gpt.jar じゃないからじゃないの?
0493NAME IS NULL
03/11/22 13:23ID:g+cwdB3dpostgresql.7.4/src/interface/jdbc のREADMEから抜粋
Once you have ANT, run the configure script in the top-level directory with
the --with-java option. Then proceed with 'make' and 'make install' as
usual. This will compile the correct driver for your JVM, and build a .jar
file (Java ARchive) called postgresql.jar. The file will be installed in
the directory PREFIX/share/java.
That jar file will contain the driver for _your_ version of the JDK.
トップディレクトリで configure --with-java オプションを使用すれば,貴方の環境でantは実行されます。
通常は、make,そして make installを実行してください。
これは、あなたのJVMのための正確なドライバをコンパイルし、postgresql.jarと呼ばれる.jarファイル(ARchiveなJava)を構築するでしょう。
ファイルは、ディレクトリーPREFIX/share/javaにインストールされるでしょう。 < これは、/usr/local/pgsql/share/java になる postgresql.jar だとおもっています。
そのjarファイルは、貴方のバージョンのためのドライバが入っています。
と・・書いてあったので(英語もあんましよくわかってないがこんな感じなんだと思うんですが)、postgresql.jarが、jdbcドライバだと思うんですが、どうなんでしょうか?
もちろん、/share上にある、postgresql.jar も消してためしています。
0494NAME IS NULL
03/11/22 23:57ID:???超遅レスですが、下記のSQL 文はどうでしょう?
もはや手遅れだと思いますが、アンケートの結果集計等で結構使えます。
SELECT TO_CHAR(A.REGIST_TIME,'YYYY/MM/DD') AS REGIST_DATE -- 日付
,SUM(CASE WHEN A.SEX = 'M' THEN 1 ELSE 0 END) AS MALE -- 男
,SUM(CASE WHEN A.SEX = 'M' THEN 0 ELSE 1 END) AS FEMALE -- 女
FROM USER_MASTER A -- ユーザーマスタ
GROUP BY TO_CHAR(A.REGIST_TIME,'YYYY/MM/DD')
また入荷予定表なんかも作れます、下記の様なSQL かな。
'2003/11/23'の日付の文字列をプログラム側で設定したりすればよい。
また横軸を日単位から1時間単位に集約を製品、日時にすると何月何日何時に入荷す
るかがわかるクエリーになるかな。
CREATE TABLE PRODUCT_UKEIRE_INFO( -- 製品受入情報
PRODUCT_NO INTEGER -- 製品番号
,UKEIRE_DATE TIMESTAMP -- 受入日時
,UKEIRE_COUNT INTEGER -- 数量
);
SELECT A.PRODUCT_NO -- 製品番号
,SUM(CASE WHEN TO_CHAR(A.UKEIRE_DATE,'YYYY/MM/DD') = '2003/11/23' THEN A.UKEIRE_COUNT ELSE 0 END) AS DAY1 -- 日
,SUM(CASE WHEN TO_CHAR(A.UKEIRE_DATE,'YYYY/MM/DD') = '2003/11/24' THEN A.UKEIRE_COUNT ELSE 0 END) AS DAY2 -- 月
,SUM(CASE WHEN TO_CHAR(A.UKEIRE_DATE,'YYYY/MM/DD') = '2003/11/25' THEN A.UKEIRE_COUNT ELSE 0 END) AS DAY3 -- 火
,SUM(CASE WHEN TO_CHAR(A.UKEIRE_DATE,'YYYY/MM/DD') = '2003/11/26' THEN A.UKEIRE_COUNT ELSE 0 END) AS DAY4 -- 水
,SUM(CASE WHEN TO_CHAR(A.UKEIRE_DATE,'YYYY/MM/DD') = '2003/11/27' THEN A.UKEIRE_COUNT ELSE 0 END) AS DAY5 -- 木
,SUM(CASE WHEN TO_CHAR(A.UKEIRE_DATE,'YYYY/MM/DD') = '2003/11/28' THEN A.UKEIRE_COUNT ELSE 0 END) AS DAY6 -- 金
,SUM(CASE WHEN TO_CHAR(A.UKEIRE_DATE,'YYYY/MM/DD') = '2003/11/29' THEN A.UKEIRE_COUNT ELSE 0 END) AS DAY6 -- 土
FROM PRODUCT_UKEIRE_INFO A -- 製品受入情報
GROUP BY A.PRODUCT_NO
では血尿も出てきてるので、今日は帰って寝ます。
0495NAME IS NULL
03/11/24 15:54ID:W7Ky1Nr4どっちが早いの?
0496NAME IS NULL
03/11/24 17:48ID:???0497NAME IS NULL
03/11/24 19:42ID:???0498NAME IS NULL
03/11/24 23:10ID:???begin; rollback;ではさむとかね。
0499NAME IS NULL
03/11/25 13:58ID:l5fvlImGRedHat9+Postgres7.3.2 で構築中なんですが、サーバを量産しなきゃ
ならんのでできる限りデフォルトで入っている環境をそのままで使いたい
ですよ。ところがデフォルトのデータフォルダがどこかさっぱりで。。。
FreeBSD+Tar玉 とはエラく構成が違うようで悩んでます。
そのあたりをごっそり書いてあるようなサイトってありますか?
0500NAME IS NULL
03/11/25 14:14ID:db7RU1wF機器構成が同じなら、バイナリコピーでいいんじゃない?
0501499
03/11/25 14:25ID:???bash-2.05b$ pwd
/var/lib/pgsql/data
>>500様
先立つ不孝をお許しください。
0502NAME IS NULL
03/11/25 14:36ID:db7RU1wF罰としてpgsql-jp-MLに入会して、[pgsql-jp: 31584]に対して
「メールマガジン専用さんは書きました」
という引用から返答をかくべし
0503NAME IS NULL
03/11/25 15:12ID:???initdb でできたpg_hba.conf が使えないんですけど・・・
結局、255.255.255.255がおかしいってエラーだったんで
アドレス、マスク指定を 127.0.0.1 255.255.255.255 -> 127.0.0.1/32 に
したら使えるようにはなったんだけど、
1台にいくつも違うバージョンいれてるせいでこんがらがったのかなぁ・・・
0504499
03/11/25 15:32ID:???ユーザー会のMLで同じ質問が出ているなら答えてやろうと思って
入会した「後で」件の発言見たら、全然違う内容ぢゃないですかぁw
先にアーカイブ見てから入会するんだったw
0505NAME IS NULL
03/11/25 17:26ID:db7RU1wFそれは悪いことをした。
0506NAME IS NULL
03/11/26 21:03ID:K19juM7H7.3から7.4はそんなにかわってない。サブクエリー使わなかったら同じかな。
0507NAME IS NULL
03/11/27 00:52ID:???0508NAME IS NULL
03/11/27 01:06ID:???0509NAME IS NULL
03/11/27 07:51ID:poQ5XUV+どうも、日本語をvalueに入れると文字化けしているようです。
これに対する対処法はないでしょうか?
また、他にも、ウェブからpostgresをいじれるツールがあれば、
教えていただければ幸いです。
0510NAME IS NULL
03/11/27 08:01ID:???アクセスからODBC経由でテーブルのリンクを作成しようとしても、
また、CSEから(非ODBC経由で)アクセスしても、
fe_sendauth: authentication type 5 not supported
というエラーが発生してしまいます。
いったいなぜなのでしょうか?
ぐぐってみても、実際にそのエラーがでちゃってるページしか見つからず。。。
教えていただければ幸いです。
0511510
03/11/27 08:20ID:???ちょっと勉強しなおしてきます。
0512510
03/11/27 08:35ID:???DBのユーザ名入れるところにSSHのログイン名を入れたかと思っていましたが、
ちゃんとDBのユーザ名が入ってました。
0513NAME IS NULL
03/11/27 19:14ID:???PostgreSQL で使うにはどうやったらいいですか?
(てか可能ですか?)
0514NAME IS NULL
03/11/28 06:58ID:???SQL文に展開して読み直せば大抵のことはできるだろ。
つーか普通別プラットフォームに移すときゃそうする。
あとはテーブル定義部の非互換に気をつけれ。
0515NAME IS NULL
03/11/28 19:27ID:xhqz25qzその中に、log_cnt というカラムがあると思います。
このカラムの値が、不規則に変化するのですが、どういう意味があるのかわかる方は
いらっしゃいませんでしょうか?
よろしくお願いします。
0516NAME IS NULL
03/12/01 23:48ID:???0517NAME IS NULL
03/12/03 08:17ID:p9askHyNhudousan(id serial, area_id char(4), type_id char(4), menseki int)
area(area_id char(4), area varchar(32), area_yomi varchar(64))
type(type_id char(4), type varchar(32), type_yomi varchar(64))
としています。area,typeには漢字, area_yomi,type_yomiにはカタカナが入ってます。
select hudousan.id, area.area, type.type from
((hudousan inner joint area on hudousan.area_id=area.area_id)
inner join type on hudousan.type_id = type.type_id)
としたいのですが、漢字が表示されません。
このクエリはおかしいでしょうか?
どなたか解決のヒントをいただけないでしょうか?
ちなみに漢字でなくカタカナなら、たとえば
select hudousan.id, area.area_yomi, type.type_yomi~
とすると正常に表示されます。
また、3つの結合ではなく2つなら、たとえば
select * from hudousan.id, area.area from hudousan inner join
hudousan.area_id=area.area_id
とすると正常に漢字は表示されます。
0518NAME IS NULL
03/12/03 16:51ID:???psql なのか?文字コードは何にしてる?
0519517
03/12/03 17:54ID:Q2KFNKSmpsqlです。
select hudousan.id, area.area, type.type from
(hudousan inner joint area on hudousan.area_id=area.area_id)
inner join type on hudousan.type_id = type.type_id)
として
id | area | type
--------------------------------
1 | 何処 | 一戸建
のように表示したいのですが
id | area | type
--------------------------------
| |
のように何も表示されないのです。
areaをarea_yomi、tyypeをtype_yomiにすると
id | area_yomi | type_yomi
--------------------------------
1 | ドコカ | コダテ
のように表示できるのですが・・
同じテーブルのあるカラムは表示できて別のカラムは表示できないので
文字コードの問題ではなくテーブルの型やSQLの問題のような気がする
のですがよくわかりません。
0520NAME IS NULL
03/12/03 18:53ID:???0521517
03/12/03 19:24ID:y3FHYBXxpsql -l で調べるとEUC-JP になってます。
ちなみに postgresql-7.2.3 on vine2.6 です。
0522NAME IS NULL
03/12/03 20:17ID:???on hudousan.area_id=area.area_id) inner join type on hudousan.type_id = type.type_id) ;
id | area | type
----+------+--------
1 | 何処 | 一戸建
(1 row)
普通に出るけどな・・・
PostgreSQL 7.2.1 on i386-pc-solaris2.8 で
0523NAME IS NULL
03/12/03 21:24ID:???infoというテーブル
Column | Type | Modifiers
--------+-----------------------------+-----------
id | character varying(128) | not null
があり、これをdeleteしたときにinfo_deletedという以下のような
テーブルにいつ消されたかバックアップをとりたいと考えています。
Column | Type | Modifiers
------------+-----------------------------+-----------
id | character varying(128) | not null
deleted_at | timestamp without time zone | not null
そこで以下のようなinfo_del_backupというルールを作成しました。
create rule info_del_backup as on delete to info do insert into info_deleted (id,deleted_at) SELECT id,'now' from info wehre id = old.id;
たしかにinfoからレコードを消したらinfo_deletedにバックアップしてくれるのですが、
deleted_atに消した日時が入ってほしいのになぜかルールを作成した日時が入ってしまいます。
ルールを作成したときに'now'が展開されてしまっているのかなと思いましたが、これを
動的な'now'にするにはどのようにすればよいでしょうか。
postgres7.4を使っております。
初めての書き込みですので厨房な質問でしたら申し訳ありません。
0524523
03/12/03 21:27ID:???'now'じゃなくてnow()をつかえばいいと書いてありました。
1分で自己解決してしまった。
スレ汚しすいませんでした。
0525NAME IS NULL
03/12/03 22:03ID:???EUC-JPなDBにSJISを突っ込んでいるとか?
でも、INSERTするときにエラーが出るはずか?
0526NAME IS NULL
03/12/04 01:51ID:???昔は DEFAULT 'now'::text
にしてたんだが、今はそうしない方がいいの?
0527NAME IS NULL
03/12/04 04:43ID:6qT9TARo昔から、ルールとかファンクションとかビューには'now'使えないと思うのだが。
0528あぼーん
NGNG0529NAME IS NULL
03/12/05 10:22ID:???のは、最近のやつは必要なくなってる、みたい
しかし、pg_dumpから持ってくると展開されてるし
常に注意が必要だな
0530NAME IS NULL
03/12/05 12:30ID:cBAsm9bRXML ベースのフレームワークを用いて行いたいと考えています。
たとえば SQL 文を XML 文書で表現する場合の XML スキーマなどは
どこかで標準化されているのでしょうか?
0531NAME IS NULL
03/12/05 12:47ID:cBAsm9bRhttp://archives.postgresql.org/pgsql-hackers/2003-03/msg01151.php
将来的にはXML-RPCベースでもいいかもね、という結論のようですね。
0532NAME IS NULL
03/12/06 18:22ID:A0+Y6CuwODBC(7.03.200)+ADOをVBから接続しているのですが、
レコードセットでchar,varchar型の列から全角文字を読み出すと、
列定義長の半分しか読み出せません。
例えばchar(8)と定義した列には全角文字が8文字まで格納でき、
psql上では読み出しもOKです。しかしODBC+ADOのレコードセット
で読み出すと、先頭4文字しか読み出せません。同様の現象は
windows上のpgAdminIIでも発生してます。
ところがAccessのテーブルリンクでは正常に読み出せます。
なにか設定がおかしいのでしょうか?
データベースはEUC_JPです。
0533NAME IS NULL
03/12/06 20:10ID:???0534NAME IS NULL
03/12/06 20:12ID:???PostgreSQLのバージョンによってはあわんかもしれんが
7.3.xぽいしなあ
0535NAME IS NULL
03/12/06 21:46ID:???ODBCログを見てるとデータ自体は届いてるようで、
Accessテーブルリンクは97/2000ともに読み出せてます。
ADO経由だとだめのようなのです。
0536NAME IS NULL
03/12/07 06:14ID:???ID(varchar),日付(date),数量(int) のテーブルで日付順にソートしながら、
その日までの累計も出力したいのですが、どのように書けばいいのでしょうか?
ID | 日 付 |数量|累計
A1| 2003-12- 1 | 5 | 5
A1| 2003-12- 2 | 3 | 8
A1| 2003-12- 3 | 2 | 10
A1| 2003-12- 4 | 7 | 17
よろしくです。
0537○
03/12/07 18:05ID:kXPpNlp0ちょっと質問です。
あるテーブルに対して、UPDATE等をしたときに、
古い情報も残しておきたいので、
その方法として、RULEを作って
UPDATEしたときに、前(old)のテーブルをまるまる テーブルv1 としてコピーして、
テーブルを更新しようと考えています。
そのときに、テーブルそのものに”テーブルのバージョン”を
つけたいのですが、どうすればいいか誰かご存知の方いらっしゃいましたら
教えてください。
もし、テーブルそのものにバージョンがつけれたら、
RULE でテーブルをコピーする際に、 テーブル_v[バージョン] というような
ことをしたいと考えてます。
ところで、通常、SQLでは、UPDATE等した時のバージョン管理は
どうなっているのでしょうか?
CVSなら、差分とってるので、いざ前バージョンのものを使いたいときでも
簡単なのですが・・・。
0538NAME IS NULL
03/12/07 20:07ID:???0539NAME IS NULL
03/12/08 01:27ID:???CVSに慣れてくると、
なんでファイルシステムとかDBに履歴とかブランチが
つけれないんだよーとか思うようになるのでつ。
Rajeev Nager本を読んだからといって、NT向けのファイルシステムドライバが
そうそう簡単に書けるわけでもないし…
閑話休題。Postgresの設計だったら、任意の時点に
チェックポイント打ち込んでその時点の状態を参照できるように
する改造は不可能ではない予感(簡単じゃねーと思うが)
VACUUMは、最古チェックポイントより手前のみで行うという
運用にすれば…
0540NAME IS NULL
03/12/08 01:57ID:IhBabMF7> CVSに慣れてくると、
> なんでファイルシステムとかDBに履歴とかブランチが
> つけれないんだよーとか思うようになるのでつ。
なんか、ナントカを覚えたサルみたい。
0541NAME IS NULL
03/12/08 02:59ID:???そんな話なら、タプルヘッダが持ってるデータと同じような情報を
テーブルに自分で追加すればいいだけだと思うがな。
>540
postgresは追記型だから云々とかゆーことを知ったばかりなんだろうね。
オプソだからソースいじれるんだぜ!とか思っちゃったんだろうね。
0542NAME IS NULL
03/12/08 04:35ID:???RDBはRDBとして歴史が長いので、
その枠組みの中で解決した方がいいと思うよ。
素人が独自なことを考えてもろくなことにならない。
0543NAME IS NULL
03/12/08 07:44ID:???その機能昔のバージョンにあったよ。今は消えたけど。
0544NAME IS NULL
03/12/08 10:32ID:???スレ違いだけどZODBとかどうです?
0545NAME IS NULL
03/12/08 11:05ID:???0546NAME IS NULL
03/12/08 11:16ID:???追加ですが、
VBからDAO3.6でアクセスしてみると大丈夫でした。
逆にAccessVBAからADOでアクセスすると先の不具合は再現します。
(ADO2.1〜2.8で検証)
また、SQL文の時点で当該項目にTRIMをかけておいてやると
問題なく読み出せるようになります。なんとなくプロバイダとのスキーマ
情報のやりとりでミスってるような気が。。。
改めて質問ですが、ODBC+ADOで使用されている方はこのような
現象に遭遇していないでしょうか?
ウチの環境の問題だけであってほしいのですが。。。
0547NAME IS NULL
03/12/08 12:00ID:kFaI7gRURDBだから、というのが一番君が押さえておくポイントだと思うよ。
まぁ有っても良い機能だが、RDBという考え方の再考が求められる
ような機能だな。
0548NAME IS NULL
03/12/08 12:08ID:kFaI7gRUを書いて思った。
RDBは、静的な分析を対象にしているなぁと。
確かにこれはデータ-ベースという枠組みとして欠点かも知れないね。
これに対する全く違った解答で、OODB(オブジェクト指向データベース)
と言うものが過去(今も現役だけど)注目された事が有った、
君が求めているように、オブジェクトの成長や改変に合わせて対応するような
仕組みも有った。
しかし、基本的にRDBMSに比べてオーバヘッドが大きく、OODBとして使うのが
精一杯(それでRDBより遅い)で、あまり普及していない。
0549539
03/12/08 12:40ID:???考え直してみると、保守のためにそのような機能をつけたところで
みんなその機能を運用のために使うようになってしまい、
パフォーマンス・安定性の新たな火種になってしまうことを
想像すべきだった。昔は実装されてたというのは、7.0の頃からの
ユーザだったのでしらんかった。
サル呼ばわりも含め勉強になった。thx
0550NAME IS NULL
03/12/08 13:59ID:???如何に「一瞬を取り出すか(そしてACID制約のもとで更新するか)」という
問題だと思う。
PostgreSQLの場合は、それを「Snapshot」と呼んでいるわけだが。
0551NAME IS NULLNULL
03/12/09 03:57ID:OBdz5fACにある、例
CREATE FUNCTION use_two_tables(tablename) RETURNS TEXT AS '
DECLARE
in_t ALIAS FOR $1;
use_t table2name%ROWTYPE;
BEGIN
SELECT * INTO use_t FROM table2name WHERE ... ;
RETURN in_t.f1 || use_t.f3 || in_t.f5 || use_t.f7;
END;
' LANGUAGE 'plpgsql';
を参考に、tablenameを引数にとるような FUNCTION をつくりたいのですが、
ERROR: Type "tablename" does not exist
hoge=#
と怒られてしまいます。
環境は、FreeBSD 4.8 release上で、
psql (PostgreSQL) 7.3.2
を使っています。
FUNCTIONでテーブル名を引数にとる場合、引数の型はどうのようにしたらいいのでしょうか?
0552536
03/12/09 09:36ID:???0553NAME IS NULL
03/12/09 10:15ID:???EXECUTE を使えばいけるかも
0555NAME IS NULL
03/12/09 10:17ID:???Group by でまとめたやつと範囲指定で集計したやつをくっつければ
できるかもしれんが、そもそも考え方がおかしい
0556NAME IS NULL
03/12/09 10:29ID:???まあ、無難なのは一時表作ることだろうねぇ。
気合いを入れてSQL書いてもメンテナンス性が悪くなるだけで、
ろくなことにならないと思う。速度もたいして変わらないし。
0558NAME IS NULL
03/12/09 13:16ID:???character(n), char(n) (4+n) バイト SQL互換性あり 固定長文字列(空白可)
character varying(n), varchar(n) (4+n) バイト SQL互換性あり 制限付の可変長文字列
text (4+n) バイト もっとも柔軟性がある 制限無しの可変長文字列
text はもっとも柔軟性がある、と書かれているのですが、もっとも
柔軟性があるのに、char や varcha をあえて使う理由はあるのでしょうか?
text にした場合のメリット、デメリットは何でしょうか?
0559NAME IS NULL
03/12/09 15:07ID:???たまたまPostgresの実装が、
CHARおよびVARCHARの実装=制約付きTEXTの実装
となってるということだと思われ。
他システムに移植するとき、TEXTは制限がキツいことが多い。
たとえば、SybaseおよびMS SQLだと TEXT は BLOB で実装されているので、
・記憶容量が1ページ(数KBほど)以上取られてしまう
・インデクスをつけられない、もちろん主キーに設定できない
・その他もろもろ
逆にPostgres以外のRDBMSだと、
CHAR最強だったりVARCHAR最強だったり、いろいろあったりする。
というわけで、
メリット 柔軟性が高まる
デメリット 他システムに移植するときに困るかも
みたいな感じだろう。
0560558
03/12/09 15:12ID:???詳細な解説ありがとうございます。
という事は、Postgres でのみの稼働の場合(移植を考慮する必要全くなし)
は、文字列のフィールドにはあらゆる text を使っておけばよい
という事ですかね。
ありがとうございました。
0561NAME IS NULL
03/12/09 20:05ID:???使った感じはどうでつか?いい感じでつか?
0562NAME IS NULL
03/12/09 23:44ID:???0563NAME IS NULL
03/12/10 09:42ID:???0564NAME IS NULL
03/12/10 19:28ID:YxYB+J4x例えば,$SQL というシェル変数に,
ある sql 文の文字列をもっているとします.
この sql を(シェルスクリプトの中で)
psql を使って,database という名前のデータベースに
かましてやるにはどうしたらいいのでしょうか?
0565NAME IS NULL
03/12/10 21:21ID:???pgbash?
0566NAME IS NULL
03/12/10 21:23ID:???売れた日順に item を並べたいのですが
select distinct item from T1 order by dt desc;
と書くと
ERROR: For SELECT DISTINCT, ORDER BY expressions must appear in target list
と言われるのですが、こういう場合はどう書くのでしょうか。
0567NAME IS NULL
03/12/11 11:33ID:???distinct やめて group by item でいいんじゃね?
便乗質問なんだけど、>>566の例でいうと、売れたitemが何種類あるか、
って一発でわかる方法ってある?group by して count(item) ってやっても
item | count
-----+-----
A | 3
B | 2
C | 5
(3 rows)
みたいになっちゃうと思うんだけど、この場合はA、B、Cの三種類ということで
3という値が欲しいんです。今は仕方なく pg_numrows() でやってる。
0568NAME IS NULL
03/12/11 11:40ID:???select count(*) from (select count(item) from t1 group by item);
0569NAME IS NULL
03/12/11 12:39ID:???そうでした。お騒がせしました。
0570566
03/12/11 12:55ID:???ありがとうございます。group by はこれでいいですよね?
select item,max(dt) from T1 group by item order by max(dt) desc;
0571NAME IS NULL
03/12/11 15:54ID:???レコードが20件も無いテーブルで単純に
select * from mytable;
としただけで15秒近く検索に時間がかかってしまい困ってます。
他の数万件もレコードのあるテーブルは一瞬なのに
そのテーブルだけ何故か時間がかかります。
そのテーブルは22個の項目から出来ていて、以下のような感じです。
integer 5個
timestamp 1個
text 2個 (最大500文字くらいの日本語です)
smallint[] 12個(配列は最大10個くらいのデータを格納)
boolean 2個
select count(*)でも同じ時間がかかります。
VACUUMや、共有メモリを増やしてもどうにもなりませんでした。
配列やtextの型が駄目なのかと思い、CHARに変えたりしても駄目でした。
どなたかこの問題の原因がお分かりになる方いらっしゃいますか?
FreeBSD4.8 Release
postgresql 7.3.3
Xeon 2.0GHz
mem 512MB( sharebuffer = 8192 , sortmem = 1024 )
0572NAME IS NULL
03/12/11 16:00ID:???explain select * from mytable;
0573NAME IS NULL
03/12/11 17:24ID:???操作履歴テーブルを用意して担当者の操作の履歴を書き込むのに
トリガやルールを使うのはどうかなと思ったのですが、
実行時にパラメータを渡すようなことってできますでしょうか?
0574NAME IS NULL
03/12/11 17:28ID:???ご返答ありがとうございました。
explainというのは知りませんでしたが、便利ですね。
教えていただいた文を試しましたところ、
Seq scan on mytable ( cost=0.00..47934.17 rows=47 width=565 )
という結果が出ました。いかがでしょうか?
0575NAME IS NULL
03/12/11 17:57ID:???0576NAME IS NULL
03/12/12 04:19ID:???「順スキャンをやっています」「ものすごく時間がかかります」
ということがわかる。
それにしても、基準値変えてないとしたらその程度のクエリで
コスト見積もり48000てのは異常だなぁ・・・
INDEX使うとかなんとかならんの?
0577NAME IS NULL
03/12/12 05:53ID:???システムカタログぶっ壊れとか、ファイルシステムそのものが逝っちゃっているとか。
ちょと異常杉。
0578NAME IS NULL
03/12/12 22:02ID:???0579554
03/12/12 22:49ID:???>>559さん
レスありがとうございます。
INDEXを検索に使う項目につけてみましたが速度は相変わらずでした。
他の10000件以上レコードのあるテーブルに同じ事をやると0.00..197.24という数字なので
リソース不足ではないと思うんですが、謎です・・・
>>560
助言ありがとうございます。
やはり異常でしょうか((( ;゚Д゚)))ガクガクブルブル
前に同じ事があった時はテーブルをtruncateして早くなりましたが、
数十件をINSERTすると、すぐ今の遅さに戻ってしまいます。
また、性質上何度もtruncate出来ないテーブルなので、これによる解決は出来ません。
もしかしたらなんですが、このテーブル名がinfoであることは何か関係ないでしょうか?
>>561
つっこみありがとうございます。
サーバーマシンと、Windowsマシン(2chはこっち)を切り替えて使ってるというだけです。
0580NAME IS NULL
03/12/12 22:57ID:???0581NAME IS NULL
03/12/12 23:06ID:???0582554
03/12/12 23:20ID:???>>563さん
即レスありがとうございます。
実を申しますと配列の前はCHARで実現していたテーブルなんですが、それが同じように遅くなってしまい、
藁にもすがる思いで配列ならと思って配列に変えてみたんです。
しかし結果はごらんの通り変わらず、嘆いています。
性質上それほど参照するテーブルでもないので我慢すれば済むんですけど、
もし同じ経験をされた方がいれば、知恵をお貸し出来ればと思った次第です。
>>564さん
提案ありがとうございます。
VACUUM ANALYZEは行いましたが、FULLオプションは付けませんでした。
物理的に今は出来ないので、次会社に行った時にやってみます。
ところで、説明を読んだんですが、これは完全にDBを止めてしまうんですよね?
これが、ちょっと怖かったんですが、
単純にpg_dump > mydbとした時のmydbサイズが1MBだとした場合に
VACUUM FULL ANALYZE;はどの程度時間がかかるものなんでしょうか?
0583NAME IS NULL
03/12/13 01:27ID:???数秒。これで数分かかったらディスク異常かな。
規模とマシン性能からみて数十秒でも長いと思う。
0584571
03/12/13 02:05ID:???上の名前554は>>571の質問した人です。見づらくってすみませぬ。。。
>>582
日本語変でした。
知恵をお貸し=>知恵をお借り
貸すほど知恵余ってませんw
>>583さん
なるほど、ありがとうございます。
おかげさまで安心しました。
こっそり試してみまつ。
そういえば、HDD性能書き忘れてましたが、
内臓SCSIのU320のRPM10000、RAID無しでした。
容量は幸か不幸か全てのパーティションでかなり余ってますので、
一見問題なさそうに動いてますがディスク異常は仰る通り疑ってみたいです。
0585NAME IS NULL
03/12/13 02:42ID:???0586583
03/12/13 03:08ID:???数秒はどうだろう?でも分単位はかからない、はず。
0587NAME IS NULL
03/12/13 06:13ID:???1行当たり精々3KBぐらいなので、17行で51KB程度のテーブルなのに、
見積もりコスト48000x8KB=375MBってのがそもそも異常。
1ページ=1Byteで計算しているような値だ。
pgsql本体が壊れている感じもしないわけでもないが、他のテーブルで
問題ないというのも摩訶不思議
なお、vacuumはDBそのものを止めるのではなくて、vacuum中のテーブルだけ
ロックするので、
vacuum full analyze 問題のテーブル;
とすればよろし。
#なんか、create tableがうまく出来なくなっている感じがしないわけでもない。
#他のテーブル=過去に作成したテーブルのときは問題なくて、ある時点を
#境に、まともなtableを作れなくなってしまっているとか。
#ま、外している可能性大なので、独り言モードw
0588571
03/12/15 15:38ID:???教えて頂いた通り
VACUUM FULL ANALYZE info;
を実行したら、驚くほど早くなりました。
前と全く同じSQLをexplainで計測すると
cost=0.00..2.23
という数字でした。素人の私でも相当早くなった事が分かります。
FULLつけたくらいで、と半信半疑でしたが反省してます。
すごすぎます。偉すぎます。FULL
1分くらいかかり、その間アクセス不可でしたが、
これから遅くなったらまずFULLを試してみます。
皆さんありがとうございました。
長々と居座ってしまいすみませんでした。
何故このような状態になったかだけが引っかかりますが、
結果よしということで、満足しています。聞いてみてよかったです。
0589NAME IS NULL
03/12/15 16:54ID:???FULL 付けないと UPDATE/DELETE のゴミが残ります。
頻繁に更新があるなら毎時間 VACUUM; して、
アクセスの少ない時間に VACUUM FULL; するといいかも。
0590NAME IS NULL
03/12/16 05:13ID:???>長々と居座ってしまいすみませんでした。
このスレの存在意義があったってことだな(w
0591NAME IS NULL
03/12/16 15:40ID:yb6Py4Lpレプリケーションをしたいと思っているのですが、
eRserverのREADMEを読んでもレプリケーションの
方法がわかりません。
また、eRserverがJAVAベースで動くって事は、
JDK 1.2.2orJDK 1.3.1が要りますよね。
FreeBSD4.4にJDKインストールしたときに
JDKが落ちまくってた経験があるので、
二の足を踏んでいます。
どなたかアドバイスをお願いいたします。
0592NAME IS NULL
03/12/16 19:51ID:???自分が考えてるのが、一度CSVファイルに落としてからoracleにインポートする
という方法なのですが、もっと手軽にデータを移行できる方法ってないでしょうか?
0593NAME IS NULL
03/12/17 01:06ID:???Access挟んで全件SELECT→INSERT
0594NAME IS NULL
03/12/17 02:11ID:p/6HMCOuあるんじゃない?
0595592
03/12/17 03:49ID:???>>594
お返事ありがとうございます。
マイグレーションツール探してみましたが、どれも製品化されているものばかりでした。
oracle絡んでるので当然といえば当然でしょうが、できればコストをかけずに移行したいです。
あと説明不足で申し訳なかったのですが、テーブル単位ではなくDB単位で移行する方法はないでしょうか?
pg_dumpで落としたファイルをperlなどでデータのみ抽出したりできますか?
0596NAME IS NULL
03/12/17 09:49ID:???perl で oracle 用に置換する
のを 592 が公開する。
0597NAME IS NULL
03/12/17 20:31ID:???pg_dump -a(or --data-only) でデータだけ落とせると思うけど。
pg_dumpだけでも、結構いろんなことできるよ。
0598NAME IS NULL
03/12/17 21:43ID:???0599NAME IS NULL
03/12/18 11:58ID:???--------------------------------
1 | りんご | 100
2 | みかん | 200
こういったテーブルで、id,sinamono,suuryouを取得する方法はありませんか?
id,sinamono,suuryouの値(「1」「りんご」「100」)じゃありません。
「id」「sinamono」「suuryou」といった項目名がほしいのです。
0600NAME IS NULL
03/12/18 12:45ID:???phpならpg_num_fieldsで取れますけど。
0601NAME IS NULL
03/12/18 13:06ID:???多分 pg_field_name() と言いたかったんだろうね
0602NAME IS NULL
03/12/18 13:28ID:???ちょっと長いけどこんなのは?
select
attname
from
pg_attribute
where
attnum > 0 and
attrelid = (select relfilenode from pg_class where relname = 'hoge_table')
order by attnum
;
0603599
03/12/18 14:16ID:???すいません。環境書いてませんでした。
Perlだったのですが近いうちにPHPも使おうと思っているので記憶しておきますね。
>>602
ありがとうございます!
ためしたところ、ちゃんと取得できるようになりました。
自分でもいろいろやってみたのですが、cmaxやらxmaxやらも出てきて
これじゃないのかなぁ・・・とか思ってみたり・・・
attnumを使えばよかったのですね。
使わせてもらいます。
0604NAME IS NULL
03/12/18 21:48ID:QiHxPYDL0605NAME IS NULL
03/12/18 22:06ID:???できない。
けど、Client_EncodingでSJISと指定すれば、
バックエンド側でSJIS<->EUC-JP変換してくれる。
(のだったと思う)
0606NAME IS NULL
03/12/18 22:49ID:???そうですか。その場合DoCoMoの絵文字が入った文字列を格納したら
取り出した時には文字化けしてでてくるんでしょうか?
ちょっと手元にないので分からないのですが。
0607NAME IS NULL
03/12/18 23:17ID:???それはネタだよね。
マジレスすれば、データベース作成のときに-eで指定すればいい。
0608NAME IS NULL
03/12/18 23:21ID:???い?
SJIS指定できたっけ?
だとしたらゴメソ。>>604
0609NAME IS NULL
03/12/18 23:26ID:???スマソ
SJISの指定ができるのは7.0のバグだったらしい。
0610NAME IS NULL
03/12/18 23:33ID:???それじゃぁ、気をとりなおしてw
>>606
EUC-JPオンリーな環境しか使ってないので、試したことない。
実際、SJISのまま突っ込んだことがないので、あれなんだが、
「EUC-JPの範疇じゃねぇよ」って怒られた記憶があるので、
SJISのまま強引に突っ込むことは出来ないものと思っている。
で、機種依存文字がEUC-JP(の範疇)に変換されるのかどうかも
しらんし。glibcのiconv()なんて、○数字も変換できなかったと思うが
pgsqlがどのようにコード変換しているかもシラネ。
つうことで、がんばって検証してくれ。
もしくはもっとエロい人が答えてくれるかな。
検証したら報告よろしく。
0611NAME IS NULL
03/12/19 00:56ID:???0612訂正
03/12/19 00:57ID:???〇スレ
0613NAME IS NULL
03/12/19 01:22ID:???0614NAME IS NULL
03/12/19 23:59ID:???0615NAME IS NULL
03/12/20 04:12ID:???Oracleでもその他でもSJIS入れられるよね。
PostgreSQLは対応の予定はないのかな?
よくMLとかでEUC_JPで入れてClient_Encodingで変換するのが「常套」って
いう回答がつくけど、客の要件によっちゃそれが許されないことも有るよね。
それだけでpgsqlが却下になるのが寂しい。
責めてるわけじゃないです。もっと使い勝手とか良くなるといいなと思ってるだけ。
延び延びになってるWin版だとSJISになるんだろうか。
0616NAME IS NULL
03/12/20 13:19ID:???PowerGresはどうなってんだろうか。
ま、下手にSJISつかって5C問題あたりに悩むより、
EUC-JPのみの方が手間減るのでイイ派なんだけど。
0617NAME IS NULL
03/12/20 14:52ID:???> 客の要件によっちゃそれが許されないことも有るよね
たとえばどんな用件?
2ちゃんねる過去ログ保管 DB とか?
0619NAME IS NULL
03/12/20 17:29ID:???0620NAME IS NULL
03/12/20 18:09ID:???漏れはデータベース内部コードにUTF-8は禁忌だと思う。
サイズが大きくなっちゃうから?
0622NAME IS NULL
03/12/20 18:45ID:???近畿ってどんなふうに?
MULE内部コードがどう優れているのか知識はないが、少なくとも
SJISやEUCはUTF8より劣ると思うがね。
>>621
MULE内部コードとUTF8じゃあたいしてサイズは変わらんと思うが。
0623NAME IS NULL
03/12/20 19:37ID:???EUC-JPやUTF-8だとマッピングが不十分だし。
0624NAME IS NULL
03/12/21 00:39ID:FmsnEdAt他人だけど、簡単に思いつくのが、
ちんけなDBアクセスソフトを使って、エクセルであんな事したり、
こんな事したい時なんじゃないかな?
エンドユーザにも分析データ提供したいけど、エンドユーザに
コード変換のわずらわしさを説明するのが大変な時。
0625NAME IS NULL
03/12/21 00:50ID:???0626NAME IS NULL
03/12/21 00:58ID:???MULE内部コードとSJIS/EUC-JPは数式的な変換で逝ける。
UTF-8を使うとテーブルマッピングになる。この変換表が
各社各様バラバラで「混ぜるな危険」なのですよ。
多少の文字化けを全く気にしないなら好きにしていいと思う。
0627NAME IS NULL
03/12/21 01:58ID:???UTF8を内部コードに用いるのに何か致命的な欠点でもあるのかと
思ったが、その程度の話だったのかな?
要は混ぜなきゃ良いわけだし。というか、Postgresの内部⇔外部
コードのマッピングの話なワケだから、そこに「各社各様バラバラ」な
変換表という話が関係してくる理由がよくわからない。
0628NAME IS NULL
03/12/21 11:29ID:???UTF-8のまま外に引っ張り出すclientがいたらそれが風穴になってしまう。
0629NAME IS NULL
03/12/21 12:36ID:???0630NAME IS NULL
03/12/21 12:52ID:???それは、SJIS->UTF-8だと解決できるのか?
0631NAME IS NULL
03/12/24 20:29ID:NdhqK1Dkmakeとすると、下記エラーが出て、インストールできません。
PCの環境は下記です。
OS:RedHatLinux7.3
コンパイラ:jdk1.3.1_07
JDBC:ant-1.5.1
DB:PostgreSQL7.2.3
Web:Apache1.3.29
Tomcat 3.2.4
※ApacheとTomcatは連携の設定をしています。
/home/postgres/.bashrcには、下記の値が入力されています。
#PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin
export JAVA_HOME=/usr/java/jdk1.3.1_07
export ANT_HOME=/usr/local/jakarta-ant-1.5.1
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
export POSTGRES_HOME=/usr/local/pgsql
export PATH="$PATH":/usr/local/pgsql/bin
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
export
CLASSPATH=/usr/local/pgsql/share/java/postgresql.jar:/usr/local/pgsql/share/java/postgresql-examples.jar
/etc/profileには、下記の値が入力されています。
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
export JAVA_HOME=/usr/java/jdk1.3.1_07
export TOMCAT_HOME=/usr/local/jakarta-tomcat-3.2.4
export PATH=$PATH:$JAVA_HOME/bin:$TOMCAT_HOME/bin
#export PATH=$PATH:$JAVA_HOME/bin:
#export TOMCAT_HOME=/usr/local/tomcat
export
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/usr/local/jakarta-tomcat-3.2.4/lib/servlet.jar:/usr/local/pgsql/share/java/postgresql.jar
for i in /etc/profile.d/*.sh ; do
以上がPCの設定です。
エラー内容は次に続きます。
0632631
03/12/24 20:32ID:NdhqK1Dk[javac] Compiling 50 source files to /usr/local/pgsql/postgresql-7.3.5/src/interfaces/jdbc/build
[javac] /usr/local/pgsql/postgresql-7.3.5/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2
ResultSet.java:244: シンボルを解釈処理できません。
[javac] シンボル: コンストラクタ Array (org.postgresql.PGConnection,int,org.postgresql.Field,java.sql.ResultSet)
[javac] 位置 : org.postgresql.jdbc2.Array の クラス
[javac] return (java.sql.Array) new org.postgresql.jdbc2.Array( connection, i, fields[i - 1],
(java.sql.ResultSet) this );
[javac] ^
[javac] /usr/local/pgsql/postgresql-7.3.5/src/interfaces/jdbc/org/postgresql/jdbc2/
AbstractJdbc2ResultSet.java:424: 互換性のない型
[javac] 出現: java.sql.Statement
[javac] 要求: org.postgresql.jdbc2.Statement
[javac] return statement;
[javac] 注: 一部の入力ファイルは推奨されない API を使用またはオーバーライドしています。
[javac] 注: 詳細については、-deprecation オプションを指定して再コンパイルしてください。
[javac] エラー 11 個
BUILD FAILED
file:/usr/local/pgsql/postgresql-7.3.5/src/interfaces/jdbc/build.xml:104: Compile
failed; see the compiler error output for details.
Total time: 5 seconds
make[3]: *** [all] エラー 1
make[3]: 出ます ディレクトリ `/usr/local/pgsql/postgresql-7.3.5/src/interfaces/jdbc'
make[2]: *** [all] エラー 2
make[2]: 出ます ディレクトリ `/usr/local/pgsql/postgresql-7.3.5/src/interfaces'
make[1]: *** [all] エラー 2
make[1]: 出ます ディレクトリ `/usr/local/pgsql/postgresql-7.3.5/src'
make: *** [all] エラー 2
というエラーになってしまいました。
別PCで、
antやjdkのバージョンを同じ環境でテストしてみたのですが正常に
インストールできるのてしまいました。なぜ今回はできなかったのでしょうか?
アドバイスお願いできませんでしょうか?長くてすいませんでした。。。
0633NAME IS NULL
03/12/24 22:23ID:???PostgreSQL 7.3.4 を使って DBを構築してます。
全てのテーブルに update_time カラムを設けて、
そのレコードに UPDATE のSQLクエリが来た時は、
常に update_time カラムに更新された日時(CURRENT_TIMESTAMP)を入れたいです。
CREATE TABLE 時にこういったオプションはあるのでしょうか?
ON UPDATE というのがあるんですが、これは外部キーだけのようなので…。
0634NAME IS NULL
03/12/24 23:22ID:???SELECT random() LIMIT 10;
ではもちろんダメですた…
0635NAME IS NULL
03/12/25 00:15ID:???select random() from n行以上あるテーブル limit n;
こんなんじゃダメか?
0636NAME IS NULL
03/12/25 00:19ID:???updateするときにupdate_timeもnow()で更新すればいいじゃないの。
0637NAME IS NULL
03/12/25 00:51ID:???やっぱそれしかないっすかねぇ…
>>633
MySQLにするとか…
0638NAME IS NULL
03/12/25 00:56ID:???つーか、一度に複数の乱数が要る(用意する)必要性がわからない。
0639633
03/12/25 02:27ID:???UPDATE 時に update_time も CURRENT_TIMESTAMP でアップデートすればいいんですけど、
それを CREATE TABLE 時に設定して自動でいかないかなーと思ってました。
むりぽですかね…
>>637
MySQL ではそんなことできるんですか…!?
ってスレ違いですね。逝ってきます。。
0640NAME IS NULL
03/12/25 09:50ID:???実際にはそのまま INSERT したいんでつ。
INSERT INTO table (column) SELECT 複数行;
みたいな感じで。
そういう意味ではいきなりランダムでなく、一旦 INSERT してから UPDATE でも
いいんでつが、そもそもダミーで複数行を SELECT する方法がわかりません。
諸般の事情のため、ファイルから COPY するというのは却下でお願いします。
最悪それしかないかとも思っていますが…
0641NAME IS NULL
03/12/25 09:52ID:???MySQL の TIMESTAMP は常に現在時間
ポスグレでやるならトリガかな。
0642NAME IS NULL
03/12/25 10:03ID:???まだ、なにがしたいかさっぱりわからん。
乱数のcolumnのみを持つテーブルが必要行いるってことかな?
なんか根本(設計)的に間違っているような気がする。
0643NAME IS NULL
03/12/25 10:16ID:???つか君はわかったつもりで何にもわかってないタイプだな。
0644NAME IS NULL
03/12/25 10:24ID:???ちょっと具体的には書けないんです、すいません。
フィールドはもちろん乱数だけではありません。
設計自体は普通だと思うのですが、運用が多分普通じゃないんだと思います。
要は管理者がブラウザでボタンをクリックすると、自動的に複数行の
レコードを作成する(しかもレコード数は任意)、みたいな仕組みを
作りたいのですが、やはり一旦外部ファイルを作成するか、
>>635みたいにダミーのテーブルを用意するしかないですかねぇ…
0645NAME IS NULL
03/12/25 10:44ID:???0646NAME IS NULL
03/12/25 10:53ID:???えらい!そうです、そうでした… なんで気づかなかったんだろ、胃って期末
0647NAME IS NULL
03/12/25 11:09ID:???そうかもしれん。いまだにさっぱりわからんw
乱数以外のcolumnに挿入すべき値が用意されているのなら、
乱数のcolumnはdefault randum()でいいような...
0648NAME IS NULL
03/12/25 12:28ID:???ブラウザ使うなら、
>要は管理者がブラウザでボタンをクリックすると、自動的に複数行の
>レコードを作成する(しかもレコード数は任意)、みたいな仕組みを
ここまではブラウザ用のHTML作成するときにソフト(perl,PHP,servlet,etc...)で
乱数振ってテーブルに複数行INSERTしちまうってのもありでは?
0649NAME IS NULL
03/12/25 14:00ID:???複数行というのが…
>>648
それでもいいんですけどね、時間かかるじゃないですか。
できれば SQL の中で完結したいんですよ。
ちなみに PL/pgSQL だと複数レコード返せなかったですね。
開発コスト考えると、ダミーテーブル用意するのが手っ取り早い気が
してきますた。
0650NAME IS NULL
03/12/25 15:35ID:???その時間がもったいないほどパフォーマンスに影響するのかと小一時間。
0651NAME IS NULL
03/12/25 16:09ID:???返せますけど。
0652NAME IS NULL
03/12/25 17:05ID:???時間がもったいないとは、CGIプログラムを作るのにスキル的に時間が
かかるってことかもしれない。
0653NAME IS NULL
03/12/25 18:26ID:???0654NAME IS NULL
03/12/26 00:04ID:???しかし実際にSQLでやろうとして時間を無駄にしてるし。
0656NAME IS NULL
03/12/26 02:01ID:???'now'
0657NAME IS NULL
03/12/26 18:21ID:???GRANT ALL PRIVILEGES ON *.* TO `db_name`;
のように *.* や * では
ERROR: parser: parse error at or near "*" at character25
のようにエラーになります。
一括で権限を与えるにはどのように記述すればよいのでしょうか?
0658NAME IS NULL
03/12/26 22:14ID:???0659NAME IS NULL
03/12/27 14:26ID:???MySQL で以下は問題なく動きます。
------------
<?php
header("Content-Type: text/xml");
?>
<?xml version="1.0" encoding="EUC-JP" standalone="yes" ?>
<?xml-stylesheet type="text/xsl" href="table.xsl" ?>
<result>
<?php
mysql_connect("localhost","root","root");
$rs=mysql_db_query("sample","SELECT * FROM master");
while($aryCol=mysql_fetch_assoc($rs)){
$aryKey=array_keys($aryCol);
print("<data>\n");
foreach($aryKey as $key){
print("<".$key.">".$aryCol[$key]."</".$key.">\n");
}
print("</data>\n");
}
?>
</result>
-----------
以上をpostgresSQLに接続させ表示させるには
-----------
<?php
header("Content-Type: text/xml");
?>
<?xml version="1.0" encoding="EUC-JP" standalone="yes" ?>
<?xml-stylesheet type="text/xsl" href="table.xsl" ?>
<result>
<?php
pg_connect("dbname=k user=k");
$rs=pg_query("select * from categ");
while($aryCol=pg_fetch_assoc($rs)){
$aryKey=array_keys($aryCol);
print("<data>\n");
foreach($aryKey as $key){
print("<".$key.">".$aryCol[$key]."</".$key.">\n");
}
print("</data>\n");
}
?>
</result>
--------------------
以上動かないので、間違っている点を誰か教えてください
0660NAME IS NULL
03/12/27 14:27ID:???0661NAME IS NULL
03/12/27 18:36ID:???0662NAME IS NULL
03/12/29 00:59ID:7uvR8b1+こんなテーブルに
timestamp
-----------------------
2003-12-27 17:09:59+09
2003-12-27 18:15:12+09
2003-12-27 18:19:14+09
2003-12-27 23:40:40+09
なレコードが入ってるんですが、
これを時刻単位で集計して、
time | count
--------------+-------
2003-12-27 00 | 0
2003-12-27 01 | 0
2003-12-27 02 | 0
2003-12-27 03 | 0
2003-12-27 04 | 0
2003-12-27 05 | 0
2003-12-27 06 | 0
2003-12-27 07 | 0
2003-12-27 08 | 0
2003-12-27 09 | 0
2003-12-27 10 | 0
2003-12-27 11 | 0
2003-12-27 12 | 0
2003-12-27 13 | 0
2003-12-27 14 | 0
2003-12-27 15 | 0
2003-12-27 16 | 0
2003-12-27 17 | 1
2003-12-27 18 | 2
2003-12-27 19 | 0
2003-12-27 20 | 0
2003-12-27 21 | 0
2003-12-27 22 | 0
2003-12-27 23 | 1
みたいな感じで、時間単位で集計し、0件のところも表示したいの
ですが、どうすればよいでしょうか。
現在、下記のようにしてますが、0件の表示がもちろんできません。
SELECT to_char(timestamp, 'YYYY-MM-DD HH24') as time , count(*) from event group by time;
0663NAME IS NULL
03/12/29 16:15ID:SUbPADvC1列24行のテーブルを作っておいてJOINするとか。
0664NAME IS NULL
03/12/29 16:33ID:???0665きこあん
03/12/29 20:44ID:???試してないけど。
group by substring(time,from 1 for 8)
みたいな感じで。やってないのでうまくいくかはわからんが
0666NAME IS NULL
03/12/30 00:57ID:???>>665 ちゃんと嫁
>>664 それもありだな。
あんまPostgreSQL使いはストアドとかいわないけど。
ドキュメントにもストアドなんて言葉出てこないし。
ちなみにちょっと前にplpgsqlで複数行返せないといってた
香具師がいたがあれはウソです。
ttp://ml.postgresql.jp/pipermail/pgsql-jp/2002-November/003257.html
0667NAME IS NULL
03/12/30 01:03ID:???その香具師です。すんません。シーラカンス本第一版読んでました。失礼しました。
0668NAME IS NULL
03/12/30 01:12ID:???ま、複数行返せるようになったのは7.3以後ね。
0669NAME IS NULL
03/12/30 03:49ID:???0670NAME IS NULL
03/12/30 11:27ID:???テーブル名と、そこに含まれるカラムとそのデータを得る方法はありませんか?
0671NAME IS NULL
03/12/30 13:03ID:???もう第3版が出て2年以上たつけど
0672NAME IS NULL
03/12/30 13:50ID:???0673NAME IS NULL
04/01/01 12:58ID:yO6vqSyjロールフォワードって対応されているのですか?
0674NAME IS NULL
04/01/01 14:39ID:???ない
0675NAME IS NULL
04/01/01 20:28ID:???ロールフォワードは実装されていない。
0676NAME IS NULL
04/01/01 21:48ID:???WALがあるからにはredo実装しないと意味ないし。
undoは必要ないから実装されてないが。
チェックポイント以前のWALに関しては捨てられる(再利用に回される)から、
PITRには使われてない(PITRが実現されてない)。
0677NAME IS NULL
04/01/01 21:52ID:???0678NAME IS NULL
04/01/01 22:36ID:k6svQpA+WALってなんでしょうか??
Write Ahead Log
つーか、ぐぐれ。
0680NAME IS NULL
04/01/01 22:48ID:oVaNdYRg障害のリカバリではないんだよな。
それも広義のロールフォワードかもしれないけど、ふつうロールフォワードと
いったら、メディア障害に対してバックアップ/アーカイブログからのリカバリ
処理のことを言うと思うが。
ポイントインタイムリカバリというのは、さらに特定のポイントインタイムまでの
ロールフォワードを行うということだから、ちょっと意味合いが違う。
0681NAME IS NULL
04/01/01 23:09ID:???チェックポイント以降の更新レコードを
WALを使ってredo処理することだと思うだと思ってますた。
だから、
「リスタート時の自動リカバリ」、
「バックアップ時点から最新状態までの反映(アーカイブログ)」
「それの寸止め(PITR)」
の、どれもロールフォワードだと思ってますた。
0682NAME IS NULL
04/01/02 00:31ID:mdzOBQVK(健康体) (喘息)
1.(神が喘息であるかないかを決める)
2.K 喘息でない人 A 喘息の人は
は体力がある 体力がなくなる
3.K A 行動力、
五感(嗅覚)が鈍り感性が変化する
4.K&A 神は異常な感性の人間は本来人に迷惑をかけ
るから外に出てはいけないと思っている。
5.K 変化なし A アトピーになる
6.K 正常な感性 A 外に出なくなりさらに異常な感性になる
7.K 正常な人間 A 異常な人間(レッテル)
0683NAME IS NULL
04/01/02 00:31ID:mdzOBQVK9.K&A 来世
10.K&A 神は異常な人間は人に迷惑をかけるので行動
を抑制する必要があると思っている。
11.K&A 神が喘息であるかないかを決める
12.K 喘息でない A 喘息である
13.K&A 1.に戻る
これは事実。広めようぜ
解決法:寝て起きて、やな気分でも、続けるけること。
体力をつけると感覚が正常に戻り、
アトピーも快癒に向かう。
目安としてグランドを10週くらい。
あとはウォーキング
2.3時間を目安にウインドーショッピングや本屋めぐり
0684NAME IS NULL
04/01/02 00:33ID:mdzOBQVK1.(神が喘息であるかないかを決める)
2.K 喘息でない人 A 喘息の人は
は体力がある 体力がなくなる
3.K A 行動力、
五感(嗅覚)が鈍り感性が変化する
4.K&A 神は異常な感性の人間は本来人に迷惑をかけ
るから外に出てはいけないと思っている。
5.K 変化なし A アトピーになる
6.K 正常な感性 A 外に出なくなりさらに異常な感性になる
7.K 正常な人間 A 異常な人間(レッテル)
0685NAME IS NULL
04/01/02 13:22ID:/PhbzFDe企業でPostgreSQLを使っているとこって結構あるんですか?
0686NAME IS NULL
04/01/02 14:13ID:???0687NAME IS NULL
04/01/02 14:22ID:???0688NAME IS NULL
04/01/02 17:21ID:8W+JCqZ9SQL Serverは今時なんだぁ。へぇ〜
0689NAME IS NULL
04/01/02 17:31ID:???SQLServerは別に悪くないと思うけどなぁ。
MS製品でもSQLServerとExcelは悪くないと思う。
あとOEもデフォルトの設定を除けば悪くない。
(ああいう系のメールソフトで、あれ以上のものを見たことない)
ま、いいけど。
で、>>685
基本的にSQLServer並に使える。
0690NAME IS NULL
04/01/03 09:01ID:W6xNd8e6rootでSSHに入って、
>psql -l
psql: FATAL: user "root" does not exist
と怒られてしまいます。
rootユーザなんて削除してないのに、、、。
ひょっとして、根本的なところで勘違いしてるのでしょうか・・・
どなたか教えていただければ幸いです。
0691NAME IS NULL
04/01/03 09:40ID:???システムのユーザーと、PostgreSQLのユーザーは違います。
createuserコマンドあたりを見るように。
0692NAME IS NULL
04/01/03 10:41ID:???プ ロ ジ ェ ク ト
0693NAME IS NULL
04/01/03 12:58ID:R8QdxRgChttp://www.ichigobbs.net/cgi/readres.cgi?bo=sonin&vi=0069&rm=30
http://www.ichigobbs.net/cgi/readres.cgi?bo=sonin&vi=0070&rm=30
http://www.ichigobbs.net/cgi/readres.cgi?bo=sonin&vi=0063
0694NAME IS NULL
04/01/03 13:28ID:???5W1H が必要なわけよ。
雑誌なり Web を見てご覧。
もりもり PostgreSQL 使われているから。
とりあえず公式サイトを見てみな。まずはそれから。
0695NAME IS NULL
04/01/03 14:04ID:???どもです。やっとわかってきますた
0696
04/01/04 20:20ID:XHsDwE5w(健康体) (喘息)
1.(天国・霊界が喘息であるかないかを決める)
2.K 喘息でない人 A 喘息の人は
は体力がある 体力がなくなる
3.K A 行動力、五感(嗅覚)が鈍り感性が変化する。
4.K&A 天国・霊界は異常な感性の人間は本来人に迷惑をかけ
るから外に出てはいけないと思っている。
5.K 変化なし A アトピーになる
6.K 正常な感性 A 外に出なくなりさらに異常な感性になる。
7.K 正常な人間 A 異常な人間(レッテル)
8.K&A 死 9.K&A 来世
10.K&A 天国・霊界は異常な人間は人に迷惑をかけるので行動
を抑制する必要があると思っている。
11.K&A 天国・霊界が喘息であるかないかを決める 12.K 喘息でない A 喘息である
13.K&A 1.に戻る
これは事実。広めようぜ
解決法:寝て起きて、やな気分でも、続けるけること。
体力をつけると感覚が正常に戻り、
アトピーも快癒に向かう。 目安としてグランドを10週くらい。
あとはウォーキング 2.3時間を目安にウインドーショッピングや本屋めぐり
鼻に変な違和感があったり、気分の悪い時は、
お腹の中の空気を出さなくてはならない。
口をしっかり閉じたまま、口の中に空間を作り、
口の中にできた空気を吐き出す。
これを100回から200回。
0697NAME IS NULL
04/01/07 20:56ID:???なんにしろ、rootはpgsqlとは一切関わりないようにしといたほうがいいと思うが
0698NAME IS NULL
04/01/08 00:59ID:???ttp://www.amazon.co.jp/exec/obidos/ASIN/4822223434/
この本にコニカのオンラインラボの事例とかが載ってる
0699NAME IS NULL
04/01/08 07:36ID:chRu+yOv同じ接続文字列を ADOX の ActiveConnection プロパティに
代入したとたんにエラーになります。
エラーコード -2147352566
理由 Out of present range.
このエラーに関する情報ってなかなか見つからないんですよね。
ADOX で使えたらテーブルの作成とかも簡単にできるのになぁ。
0700NAME IS NULL
04/01/08 19:22ID:???しばらくvacuumdb をさぼっていたせいか、1Gbyte くらいのデータファイルが
いくつか出来上がってしまいました。サイズを縮めたいのですが、
max_fsm_pages に1000000000/8192*10 の数値を指定して
vacuumdb -f -a するだけで良いのでしょうか?
マニュアルを読むと、REINDEX じゃないと削ってくれない領域がある
ようにも取れるのですが・・・。
0701NAME IS NULL
04/01/09 09:44ID:???reindex して壊れるわけでもなし、試して結果を公開してよ。
0702NAME IS NULL
04/01/09 15:32ID:???0703NAME IS NULL
04/01/09 20:18ID:???0704NAME IS NULL
04/01/10 11:18ID:p5AcCRjd出来ないんでしょうか?
0705NAME IS NULL
04/01/10 13:57ID:???ネット検索は、断念・・・
Amazon.co.jpで、シーラカンス本を購入・・・
PostgreSQLにもSQLServerのようなGUIマネージャがホスィよ
かといって、Oracleみたいなごちゃごちゃしててわかりずらく、糞重いのは勘弁・・・
0706NAME IS NULL
04/01/10 14:39ID:???0707NAME IS NULL
04/01/10 15:43ID:???http://www.pgadmin.org/pgadmin3/index.php
0708NAME IS NULL
04/01/11 03:25ID:???http://itpro.nikkeibp.co.jp/members/SI/oss/20031017/1/
0709NAME IS NULL
04/01/11 04:56ID:M1e9HI0kとりあえずwebminからでも操作しろ。
俺はかなり楽になった。
相変わらずテーブルの作成でコケてるが(わかってない)
0710NAME IS NULL
04/01/11 23:29ID:???もうダウンロードできなくなったの?
つーか有料版オンリー?
0711
04/01/12 00:16ID:Qdx2iOKd0712NAME IS NULL
04/01/12 00:30ID:???じゃofficeくれ
0713NAME IS NULL
04/01/12 00:39ID:???バカかおまえは。
無料で公開されて居るんだから拾ってきなさい。
0714NAME IS NULL
04/01/12 00:41ID:???それ答えになってないじゃん。
>>710
有料版しかないから、素直にcygwin入れれ
0715NAME IS NULL
04/01/12 01:36ID:???710じゃないけど710の書き込みをみて、ring鯖からcygwin版バイナリが見当たらなかった。
某ネイティブ版はあったけど。
0716NAME IS NULL
04/01/12 01:44ID:???ソースからじゃまずいのか?
ソースは落とせるだろ
0717NAME IS NULL
04/01/12 12:18ID:go8WkgCeSQLサーバDeveloperEditionなら5000円で買えるよ
0718NAME IS NULL
04/01/12 12:23ID:???実運用は?
DEでも5000円もかかるし。10台にインストールしたら50000円か。
0719NAME IS NULL
04/01/13 21:25ID:OWM2TxrV具体的には勉強用にNorthwindを使いたいのです。
アドバイスよろしくお願いします。
0720NAME IS NULL
04/01/13 22:29ID:iZxk1LtnADO通すとか、
いろいろあると思う
0721NAME IS NULL
04/01/13 23:49ID:YQxfit1LJavaで上記のようなSQLを発行した場合、何件Updateされたかを
知る方法はありますか?
DBのバージョンは7.3.xです。
0722NAME IS NULL
04/01/14 01:50ID:???cygwin使ってso-netからpostgresのバイナリ落とせたぞ。
0723NAME IS NULL
04/01/14 01:51ID:???おまえJavaの勉強し直し。むしろ板違い。
0724NAME IS NULL
04/01/14 02:23ID:???0725715
04/01/14 08:35ID:???so-netのring鯖みたけど、sygwinのバイナリ見当たらないYO。
いや、まぁ俺はそんなものどうでもいいんだ。
715の時は、>>710がどのバイナリを指しているかわからない。Win版バイナリといっても、
cygwin用バイナリ。
PowerGres
WinNative版
の3種類あるからな。
Cygwin + PostgreSQL
Cygwin 1.5.5-1 の PostgreSQL 7.4-1の初期設定を行います。
http://discypus.jp/pc/cygwin/postgresql.shtml
0727NAME IS NULL
04/01/14 21:00ID:???ring.so-netからpostgresql 7.4.1-2 バイナリ落とせたよ。
0728NAME IS NULL
04/01/15 09:16ID:???0729NAME IS NULL
04/01/15 13:21ID:???マニュアルを読むとREINDEX も必要っぽいけど、どうなの??とカキコした者です。
実際にREINDEX を実行してみましたが、ファイルサイズに大きな差は
見られませんでした。しかしながら、vacuumdb -a -f した直後でも
わずかに容量が減りましたので、VACUUM FULL 以外にREINDEX は
必要っぽいです。ほんとにわずかですが。。。
相変わらず1ギガ超のファイルはそのまま残ってました。
こんなに使ってたのか・・・。
0730NAME IS NULL
04/01/15 13:51ID:???あとはDB内のデータの持ち方だよね。
zipというカラムに「〒123-4567」とあったり、
sexに「男」「女」とあるDBがあった。
zipは「123-4567」、sexは0,1とかすれば小さくなるし。
0731NAME IS NULL
04/01/15 14:16ID:???>zipというカラムに「〒123-4567」
問題外です
と言いたいが、実際そういうの多いよな
0732NAME IS NULL
04/01/15 17:21ID:???正規化しないということはあるよね。
〒123-4567は問題外。
0733730
04/01/15 17:21ID:???そこは数万件たまった Access を PostgreSQL に移行する仕事。
都道府県で集計取りたいというのに zip と address しかカラムがなくて address は
札幌市...
北海道札幌市...
東京都港区...
中央区...
みたいに都道府県ありなしがバラバラ。
電話番号も 03-1234-5678(内線5), 03(1234)5678(○○様) とか文字入り&フォーマットばらばら。
各地の支店の人がエラーチェックなしのフォームに思い思いの入れ方してたからね。
0735NAME IS NULL
04/01/15 19:16ID:???どういう項目が入力されるのか(必要なのか)の検討が甘かったということだろうね。
内線や担当者のコラムを持つべきだったとか、都道府県名は別コラムとかね。
でも往々にして甘くなるんだよなあ・・・
それに後から集計単位が追加されることもあるから一概に責められない。
というか、責めないでくれ頼むから(泣
0736NAME IS NULL
04/01/16 03:19ID:???テーブルのエイリアスをAから順につけてSまで行ったときは嫌になった。
0737730
04/01/16 11:44ID:???うむ。責められない。
会社の合併や市町村統廃合、姓と名を各40byteにしていたら
インド人の名前が入らなかったり、といろいろ経験しないと見えてこないよね。
>>736
エイリアスを a, b, c や t1, t2, t3 とかよく見るけど、
せめて 2, 3 文字の意味ある名前にしてほしいな。引き継いだ時の保守が楽になるので。
例えばテーブル名 customer を a や t1 ではなく cu、position を pos など。
t1 〜 t23 までのを見たことあるよ。
0738735(=732)
04/01/16 14:45ID:???>インド人の名前が入らなかったり
名前にシングルクォーテーションがある人のことなんて普通考えないしね。
Del'Angeloさんにはまいったよ(外資系じゃなかったし)。
ま、これはテーブルの設計じゃなくてInsert文を作るルーチンが悪かったんだけど。
>せめて 2, 3 文字の意味ある名前にしてほしいな。
これはやるだけで全然違うよね。どのテールブルを指してるのか
想像しやすいし、複数の問い合わせ(ビューでも)で名前が統一される
ことにもなるし。
0739NAME IS NULL
04/01/16 14:58ID:???「テーブル名は全て『○○TBL』」「○○は五文字以内」という規約があり
「○○」部分をローマ字の母音抜きで表す、たとえば
「取引先テーブル」を「TRHKSTBL」とかつけられてる
そんなテーブルばかりだと
そんな気力はなくなります
かしこ
0740735
04/01/16 15:08ID:???確かにそういう規約もあるなあ。
コラム名も全部頭からの連番(c001,c002とか)で、
テーブルが変わると同じ項目でもコラム名が変わっちゃうし
対応表がないと何がなにやら分からんしで、大変だった覚えがある。
0741730
04/01/16 16:44ID:???' が問題ではなく 40byte 以上の名前だったのです。世界は広い。
>>739
会社独自の変態コーディング規約は困るね。
20年前じゃないんだし、変に略したりケチるのは害悪ですね。
ただ、そんな我社も text 型が使えない。
Oracle や SQL Server への移行の可能性を考えて varchar のみ。
0743NAME IS NULL
04/01/17 00:19ID:???激しく同情
xxx_ID, xxx_CD, xxx_CODE, xxx_NO, xxx_NUM
とかごちゃまぜになったりとかは見かけるね。
コーディング規約はよく見かけるけど、
テーブルやフィールドの命名規則って見かけないもんなぁ。
0744NAME IS NULL
04/01/17 01:03ID:???0745NAME IS NULL
04/01/17 01:59ID:???金融とか証券とかは多いよ>テーブルやフィールドの命名規則
ふた昔も前のメインフレームを殺せないからそうなっちゃうんだけど。
0746NAME IS NULL
04/01/17 02:16ID:???>ふた昔も前のメインフレームを殺せない
というよりもそれに馴染んだもと開発者どもが譲らないんだよな。
ああ、それを「殺せない」って書いてるのか。
0747NAME IS NULL
04/01/20 16:48ID:???0748NAME IS NULL
04/01/21 21:23ID:???0749NAME IS NULL
04/01/21 22:39ID:???お金が無くて、テスト機を用意できないとき
0750NAME IS NULL
04/01/21 22:48ID:???アクセス権限のコントロール、、、ぐらいしか思い浮かばない。
0751NAME IS NULL
04/01/21 23:26ID:???基本的には別システムを構築するんだけど、
場合によっては連係が必要な場合があるときに便利だと思うよ。
DBを分散させちゃうとトランザクションとかややこしいことになるしね。
もちろんメリット・デメリットがある話だから良く考える必要あるけど。
0753NAME IS NULL
04/01/22 02:17ID:???あるいは、テーブルの所属を明確にするということかな。
サーバは1台でもアプリは複数あるかもしれないし、
アプリが1つでも日替わりデータとマスタを分けた方がいいこともあるだろう。
偉そうなことを書くけど、そこにある機能をどう使うかだと思うよ。
お勉強用サーバならお勉強する人の名前を付けるのもすごく便利。
0754NAME IS NULL
04/01/22 02:26ID:???それだったら全く同じテーブルを用意したデータベース一個作っちゃった方が楽なんだよね。
データベース変えるだけなら接続先情報変えるだけで済むし。
0755NAME IS NULL
04/01/22 02:29ID:???そういうあなたのためのSET search_path TO hoge
0756NAME IS NULL
04/01/22 02:39ID:???だから、それじゃだめだろ
複数のチームがそれぞれ別のデータでテストしたい場合はどうすんだよ
チームAは1000000件のパフォーマンス調査
チームBは○○機能の結合テスト(専用データ)
チームCは××機能の結合テスト(専用データ)
チームDはモジュール単位の不具合対応(単体テスト用データ、整合性考えずに手動でどんどん動作確認用データ追加)
こういうときがあるから
0757NAME IS NULL
04/01/22 02:48ID:???ああ、そういう場合か。
そういう場合はDB分けた方がいいね。
そういう用途にスキーマ使うのはなんか違う気がするし。
俺が言いたかったのは>>751のケースでした。
失礼しました。
0758753753
04/01/22 02:54ID:???もちろん、設計段階でそういう構造にするべきだろうね。
途中から変えるのは大変だと思うよ。
>>756
そういうときは(スキーマとかにとらわれず)そういうときに応じたものを作るべき。
俺が>>753で書いたのは「こういう使い方もできますよ」ということね。
だから「こういうときにはそれじゃだめ」といわれても困るよ(w
繰り返すようだけど、ある機能があったら、それをどう便利に使うかと
どういうときに使うべきではないかを考えるのが吉じゃないかな。
スキーマという機能はどんなときに使えるかということに皆答えてるわけだから
個別のケースは抜きにしたい。
0760753
04/01/22 02:56ID:???0761NAME IS NULL
04/01/22 02:58ID:???0762NAME IS NULL
04/01/22 02:58ID:???3人はいそうだ。
0763NAME IS NULL
04/01/22 02:59ID:???0764753
04/01/22 03:06ID:???0765753
04/01/22 03:17ID:???0766NAME IS NULL
04/01/22 03:26ID:???なんか勘違いな反応をした人一人と、
少なくとも三人はいるな。
もう、寝たかもしれんが。
0768NAME IS NULL
04/01/22 03:48ID:???ああ、Navi2chだと区別がつくな
0769NAME IS NULL
04/01/22 03:54ID:???なんでなんで?
俺もnavi2chだけど全然わからん。
0770748
04/01/22 09:49ID:???0771NAME IS NULL
04/01/22 10:13ID:???0772NAME IS NULL
04/01/25 00:23ID:IMLQDJ4uやり方がわからん。
0773NAME IS NULL
04/01/25 01:14ID:???psqlで
\h alter table
してみよう。
0774NAME IS NULL
04/01/26 18:53ID:05VDMtbFpg_dumpのようにバックアップ取りたいんですけど方法はありますか?
0775NAME IS NULL
04/01/26 19:06ID:kvn9DY8q0776774
04/01/26 20:29ID:05VDMtbF0777NAME IS NULL
04/01/27 19:55ID:???table毎とかしかやり方が見つからない
0778NAME IS NULL
04/01/27 21:06ID:???ないね。grant all on * to user できるといいのに。
0779NAME IS NULL
04/01/27 22:06ID:l591xAXQ0780NAME IS NULL
04/01/27 22:09ID:???text
0781NAME IS NULL
04/01/27 22:38ID:l591xAXQ128ビット整数とかの型はないんですか?
0782NAME IS NULL
04/01/27 22:51ID:???お前さぁ、仮にそれがあったとして、効率いいと思う?
まぁ試しに number とか使ってみたら?
0783NAME IS NULL
04/01/28 00:39ID:???0784NAME IS NULL
04/01/28 01:42ID:???0785NAME IS NULL
04/01/28 09:57ID:???Web のチェックボックスのデータを格納するのにいいなぁ、と思ってる。
使っている人いる?問題点があれば聞きたい。
0786NAME IS NULL
04/01/28 10:15ID:???0787NAME IS NULL
04/01/28 10:59ID:???group by できない
ただ、別に配列の要素を個別に取り出すということをしないのなら text でも充分
>>786
create table parent (
id serial,
attr int[]
);
create tabel child (
child_id serial,
parent_id int,
foreign key (parent_id) references(parent, id)
);
みたいなテーブルがあって、parent の一覧と、それにぶらさがる child の数を出したいんです。
select p.id,p.attr,count(c.child_id) from parent p left outer join child c on c.parent_id = p.id group by p.id,p.attr;
やっぱ配列使った時点でマズーだったですか?
0788NAME IS NULL
04/01/29 15:24ID:???0789NAME IS NULL
04/01/30 00:01ID:???byteaでいいんじゃないの?
http://www.postgresql.jp/document/pg74doc/html/datatype-binary.html
0790NAME IS NULL
04/01/30 20:37ID:40bIuutYもちろん7.4.1のJDBCドライバってMD5暗号化に対応してるよね?
なにせ、俺には確認する技術が無いため、ちょっと不安です。
0791NAME IS NULL
04/01/31 08:03ID:0XWRRZlILOCK
INSERT
SELECT currval('hoge_seq');
くらいしか思いつかなかったけどこれでいいのかしら....
0792NAME IS NULL
04/01/31 12:56ID:???insertしたレコードのoidを取得して、select
0793NAME IS NULL
04/01/31 13:06ID:???$seq = SELECT nextval('t1_hoge_seq');
してから
INSERT INTO t1 (hoge) VALUES ($seq);
ってやってる。
ふつー SELECT currval('hoge_seq');
0795NAME IS NULL
04/01/31 16:47ID:???0796NAME IS NULL
04/01/31 18:21ID:???0797NAME IS NULL
04/02/01 09:33ID:???0798NAME IS NULL
04/02/01 12:49ID:n6BRvHRbとやると fname に全角 3 文字が入力されている全てのレコードが出てきてしまいます。
SELECT * FROM table WHERE fname LIKE 'あああ'
ならば fname が 'あああ' のレコードのみ取得できます。
こういうものなのでしょうか?
ちなみに fname の属性は以下のとおりです。
fname | character varying(256) | not null
Indexes: table_fname_idx btree (fname)
バージョン
fedora-1
postgresql-7.3.4
0799NAME IS NULL
04/02/01 15:41ID:???何かスマートな方法あります?
SELECT array_dims(hoge) FROM mytable;
して返ってくる値は 1:50 のようにコロンで区切られてるので、そいつを分解して
50 に 1 を足してそこに挿入。としてるんですが。。
0800NAME IS NULL
04/02/01 17:01ID:???0801NAME IS NULL
04/02/01 17:45ID:???Windows上で動くPostgreSQLはいつごろ出て来るのでしょうか。
0802NAME IS NULL
04/02/01 17:59ID:???0803NAME IS NULL
04/02/01 18:33ID:jqi2fyXhテーブル作成後にカラムに not null を設定したいのですが、
ALTER TABLE で default などは設定できるのですが、
not null が設定できません。
どなかた教えてください。
0804NAME IS NULL
04/02/01 18:52ID:???ポスグレファンよ、自由を守ろう。
0805NAME IS NULL
04/02/01 18:53ID:???0806NAME IS NULL
04/02/01 18:55ID:???別にpostgresは関係ない。SQL勉強しろフンカス
0807NAME IS NULL
04/02/01 18:59ID:???0808NAME IS NULL
04/02/01 19:17ID:???11件目が登録されたら一番古いレコードを消したいのですが、
SQLでどうあらわせばいいのでしょうか?
新しい順で10件目以降をとってくるSELECT文とLIMITの組み合わせだとは思うんですが…
ちなみに insert する時はデフォルトで CURRENT_TIMESTAMP を update項目に入れてます。
0809NAME IS NULL
04/02/01 19:32ID:???id | update
--+------
int| timestamp
のテーブルがあるときに、
update の新しい順で、10件以降をSELECTしたいです。
10件であれば、
select * from table order by update desc limit 10;
でいけるんですが、
10件目以降というのはどうやって表現していいのか悩んでます。
0810808
04/02/01 19:37ID:???0811NAME IS NULL
04/02/01 23:57ID:???過去データはそれほど必要ないのでdeleteして800万件。
data領域をduでみると12GB程。数時間かけてvacuumdb -fしたら8GBになりました。
しかし、データベースをdropしてdumpデータからインポートしてみたら3GBにしか
なりませんでした。dumpファイルは800MBちょいです。
過去データを定期的に削除しながら運用しているのですが、Postgresでは
不要な領域を綺麗に削除するには一度DBを止めるしかないのでしょうか。
インポートには30分くらいですが、それでも保守チームに手順書提出して
定期作業として組み込んでもらわないといけなくなるので面倒だなあ・・
(スクリプトでもできるけど途中で失敗したときのことを考えると、
drop-importは手動じゃないと不安)
#そもそもそんなシステムにPostgres使うなっていう突っ込みは無しの方向で
0812NAME IS NULL
04/02/02 00:11ID:???0813811
04/02/02 00:30ID:???ありがとう。愛を感じたよ。
DBを決めた無能管理者が偏屈でさあ。DB代ケチるより遊んでる外注を
一月早く切ればOracleSEのCPUライセンスが買えるのにね。
0814NAME IS NULL
04/02/02 00:59ID:???ないですよね…
0815NAME IS NULL
04/02/02 01:04ID:???Oracleならあるんだけどねえ。
pg_XXX,pga_XXXのテーブルを覗いてみたけどそれらしいものも無し
0816811
04/02/02 01:12ID:???おれこのシステムの担当じゃなかったんだけど、あまりに更新が遅くなって
借り出されたんだわ。担当のやつじゃ手に負えない程ひどいソースだったから。
元外注が作ったプログラムが駄目すぎで整理したらソースのサイズは半分くらいに
なった。まだ無駄が多いけど最大のボトルネックはやっつけたし大分サクサク
動くようになった。2日で直せって言われてたからこれ以上時間かけらんないし。
あーなんだPostgresでも結構いけそうだなあというのは実感としてあるんだけど
環境周りもしっかりしてくれたらなあ。
0817NAME IS NULL
04/02/02 01:28ID:???ですよねぇ。せめて環境変数にでも設定してくれれば方法もあるんですけどねぇ…
残念ですが、他の方法を考えることにします…
0818NAME IS NULL
04/02/02 01:29ID:???おまえは賢い!
0819NAME IS NULL
04/02/02 01:57ID:???アプリ経由で接続させてるなら、セッションテーブル作ってログイン時に
書き込むようにすれば管理できるよ。psqlでの接続も監視したいっていうなら
無理だけど
0820NAME IS NULL
04/02/02 02:14ID:???アプリというのはWebアプリという意味ですか?
でしたら残念ながらWebじゃなくてWindowsから直接なんです(libpq.dll使用)。
0821NAME IS NULL
04/02/02 09:52ID:???>>819じゃないけど。
別にWebアプリじゃなくても、動いてる端末のIPを取得できれば
それを書き込めばいいんじゃない?
サーバ側じゃなくてクライアント側で書き込むということね。
つまり、作るアプリにそういう機能を持たせるってこと。
0822NAME IS NULL
04/02/02 10:28ID:???>>821
LAN内なんですよ(サーバは外)。
プライベートなアドレスもらってもあんまり嬉しくないもので…
0823NAME IS NULL
04/02/02 11:09ID:???ああ、なるほど。
じゃ、ルーターなりなんなりにIPを問い合わせるか、サーバ側にもアプリを置くか
しかないかな・・・
0824NAME IS NULL
04/02/02 11:33ID:???netstatとかじゃだめなの?
0825NAME IS NULL
04/02/02 11:43ID:???WindowsからグローバルIPを調べるのはちょっと難しいですねぇ。
仕方ないので http で PHP を叩こうかと思っています。
>>824
自分がどの postmaster かわかんないですよね。
できれば仮に remote_addr() という関数が用意されてたとして、
INSERT INTO t1 (atime, remote_addr) VALUES (now(), remote_addr());
みたいなことができれば一番いいんですが…
0826NAME IS NULL
04/02/02 13:01ID:???そのテーブルのレコードを削除すると、自動で、
ファイルのパスを見てそのファイル自体も削除させることってできまつか?
0827NAME IS NULL
04/02/02 15:24ID:???基地害はこの世から削除されろ
0828NAME IS NULL
04/02/02 15:54ID:???トリガとプロシジャを書けばいいんじゃない。
0829NAME IS NULL
04/02/02 18:03ID:???ありがとうございますー。
トリガでシステムコマンドは使えるのでしょうか?
ちょっと調べてみまつ。
0830NAME IS NULL
04/02/02 18:28ID:???ファイルを消す権限が問題になるかもね。
ファイルを消してから該当レコードを消す、という方法なら簡単そう。
0831125 ◆GtEFAD0xKE
04/02/03 07:48ID:???ワラタ
ところではなしは変わるけど、携帯ゲーム機"プレイステーションポータブル(PSP)
久夛良木氏は,“PSPはゲーム業界が待ち望んだ究極の携帯機”として説明。「ここまでやるかと言われるスペックを投入した」という。
発表によれば「PSP」は,曲面描画エンジン機能を有し,3Dグラフィックでゲームが楽しめる。
7.1chによるサラウンド,E3での発表以来,クリエイターたちにリクエストが高かった無線LANも搭載(802.11)。
MPEG-4(ACV)による美しい動画も楽しめるという。これによりゲーム以外の映画などでのニーズも期待する。
外部端子で将来,GPSやデジタルチューナーにも接続したいとする。
また,久夛良木氏は,繰り返し「コピープロテクトがしっかりしていること」と力説。会場に集まった開発者たちにアピールしていた。
さらに,ボタン設定なども明らかにされ,PS同様「○△□×」ボタン,R1・L1,アナログスティックが採用される。
この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。
任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。
突然変な事いいだしてすまそ‥
GBAとくらべてみてどうですかね?シェアのことは抜きで。
0832NAME IS NULL
04/02/03 09:30ID:???0833NAME IS NULL
04/02/03 09:37ID:???ユーザ定義関数を作るしかないかな。
0834NAME IS NULL
04/02/03 18:02ID:???って可能性は無いですか?
0835811
04/02/03 22:53ID:???vacuumdb -f でも領域が小さくならなかったから、max_fsm_pagesじゃなくて
indexの肥大化だったのかなあ。数百万件ずつdeleteしてたし
0836NAME IS NULL
04/02/04 00:30ID:fFY5eBencreate or replace function の中でINSERTとDELETEを実行してみよう。
0837NAME IS NULL
04/02/05 00:27ID:???あるよ
0838NAME IS NULL
04/02/05 00:51ID:???0839NAME IS NULL
04/02/05 09:16ID:???SRA が PowerGres という商用版を出してるし、
それの元になったのもあるし、
cygwin は不安定ながら 7.4.1 も出てるし、
本家も 7.5 で Windows ネイティブ対応されるかも。
0840NAME IS NULL
04/02/08 23:57ID:???金払わなきゃいけないのならMySQL使います。
0841NAME IS NULL
04/02/09 02:45ID:???「金払わなくてもいい」ソフトはいくらでもあるよ(w
0842NAME IS NULL
04/02/09 07:53ID:???金を払いたくないのにOSはWindowsなんですね。
0843NAME IS NULL
04/02/09 09:49ID:???何使っても結果は同じじゃないか?
0844NAME IS NULL
04/02/09 17:10ID:WTc6t5Mn0845NAME IS NULL
04/02/09 17:26ID:???SRA の人たちが PowerGres の知見を活かしてくれるといいのだけど。
って PowerGres は使い物になるんですかね?
0846NAME IS NULL
04/02/09 18:00ID:NBLSvdEsWindowsなんてピーコでどっからでも手に入りますが、何か?
0847NAME IS NULL
04/02/09 18:32ID:???0848NAME IS NULL
04/02/09 20:01ID:p8BdgULW0849NAME IS NULL
04/02/09 20:23ID:???848のような質問するレベルの人が使う範囲では、どちらも安定してる。
0850NAME IS NULL
04/02/09 20:36ID:???ライセンスは大丈夫か、じゃないかな。
0851NAME IS NULL
04/02/11 18:55ID:zYAvEpnOuser1
user2
user3
....
というテーブルらがあるのですが、
select count(*) from user1;
select count(*) from user2;
select count(*) from user3;
....
を どうすれば view などにできますか?
0852NAME IS NULL
04/02/11 19:18ID:???0853NAME IS NULL
04/02/11 19:22ID:???select * from
(select count(*) as count1 from user1) user1,
(select count(*) as count2 from user2) user2,
(select count(*) as count3 from user3) user3
だけどビューにしたかったら適当にやって
0854Posgre初心者
04/02/11 21:21ID:FUtlNjt5cygwin 2.416
cygipc 1.14
postgresql 7.4.1
を使用しています。
Windows2000 PRO では問題なくインストール出来て動作していますが
Windows2000 SERVERだと initdb -E EUC_JP を実行した時
fixing permissions on existing directory /usr/local/pgsql/data... ok
creating directory /usr/local/pgsql/data/base... ok
creating directory /usr/local/pgsql/data/global... ok
creating directory /usr/local/pgsql/data/pg_xlog... ok
creating directory /usr/local/pgsql/data/pg_clog... ok
selecting default max_connections... 10
selecting default shared_buffers... 50
creating configuration files... ok
creating template1 database in /usr/local/pgsql/data/base/1... FATAL: could not
create shared memory segment: Function not implemented
DETAIL: Failed system call was shmget(key=1, size=1081344, 03600).
と言うエラーが出て失敗します。
initdb を行う前にipc-daemon2 & も実行していてタスクマネージャーのプロセスで
起動しているのは確認できています。
またipc-daemon2 & を実行していなくても同じメッセージでエラーになります。
cygipcの設定等でSERVER用に何かあるのでしょうか?
同じ方法でインストールした2000PRO(プロフェッショナル)では問題ないので
困っています。どなたか判る方いませんでしょうか?
0855Posgre初心者
04/02/14 20:34ID:K8DOvVy5cygwinのバージョンがWindows2000 SERVERが1.5.7、
Windows2000 PROが1.5.5でした。
一日違いのインストールで何故Windows2000 SERVERが1.5.7で
Windows2000 PROが1.5.5になってしまったかは分かりません。
ただWindows2000 SERVERにcygwin 1.5.5をインストールすれば
問題なく動作しました。cygwinはsetup.exeでインストールしているので
自動で最新がインストールされていると思っていたのですがどうも
Windows2000 PROでインストールした時は1.5.5が入ったようです。(何でだろ〜???)
cygwin 1.5.7 では何度再インストールしてもinitdbはやはりエラーになります。
ipcsでも共有メモリ等が設定できていませんでした。(ipc-daemon2 &は実行済み)
と言うことでcygwin を1.5.5で運用します。
0856NAME IS NULL
04/02/16 04:08ID:???やり方を教えてください。
0857NAME IS NULL
04/02/16 09:25ID:???0858NAME IS NULL
04/02/16 10:46ID:???0859NAME IS NULL
04/02/17 02:03ID:0sybohhD1.0.6b
0860NAME IS NULL
04/02/17 02:18ID:???途中でキューにたまるんだか、すぐに整合性取れなくなるな
0861NAME IS NULL
04/02/17 23:41ID:???(正しいSQL文ではないです。雰囲気をわかってもらえれば。。)
SELECT DISTINCT a.a, a.b, a.c, a.d, a.e, a.f, a.g, a.h
FROM table_a a, table_b b
WHERE
( a.cd1 in ('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16') ) AND
((( b.code2 in ('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16') ) AND a.code2 = b.code2 ) OR ( b.code in ('1','2','3','4','5','6','12','13','14','15','16','22','22','24','25','26')))
このSQLだと、検索に8秒ほどかかってしまいます。
また、単純に in句のワードが増えると、検索速度も比例して増えてしまいます。
どうにかしてスピードアップを図りたいのですが、何か良い置き換えかなんかありますか??
0862NAME IS NULL
04/02/19 00:59ID:???EXISTS を使うように書き直すと良い。
雰囲気だと言うのでちゃんと書き直してはやらんけど。
0863NAME IS NULL
04/02/19 03:17ID:???データ操作の日時を自動的に記録する特別な型や方法ってありますか?
0864NAME IS NULL
04/02/19 03:40ID:???はず。
0865NAME IS NULL
04/02/19 03:45ID:???0866NAME IS NULL
04/02/19 04:14ID:???って感じじゃだめ?
0867NAME IS NULL
04/02/19 04:49ID:???0868NAME IS NULL
04/02/19 13:20ID:???CREATE FUNCTION〜〜のコード書いたファイルをなくしてしまった。
Oracleでストアドの内容見たければ
select text from user_source where name = 名前 order by line
で確認できるけど
PostgreSQLで見る方法ってある?
もう一度書くと手間がかかるから出来れば拾い出したいんだけど。
0869NAME IS NULL
04/02/19 17:44ID:???0871NAME IS NULL
04/02/20 18:11ID:???ここから、今月の平均と、年間の平均を一行で取ってくることってできますか?
SELECT avg(気温) AS 月平均 FROM テーブル WHERE 記録日 = 今月;
と
SELECT avg(気温) AS 年平均 FROM テーブル WHERE 記録日 = 今年;
をまとめて一行で、という感じなんですけれども。
0872NAME IS NULL
04/02/20 22:08ID:???(SELECT avg(気温) AS kuso FROM テーブル WHERE 記録日 = 今月) a,
(SELECT avg(気温) AS unko FROM テーブル WHERE 記録日 = 今年) b
0873871
04/02/20 23:46ID:???$monthly = $db->getOne($SQL1);
$yearly = $db->getOne($SQL2);
とやるのとあんまり変わらなかったりしますか?
0874NAME IS NULL
04/02/21 04:01ID:???2回になるんじゃない?
>>872の文ならアクセス自体は1回で済むよ。
0875871
04/02/21 10:36ID:???もちろんそうですが、サブクエリってDBに取ってはあまり嬉しくない、
と聞いたことがあるもので、これだけのためにサブクエリを二つも
発行するのなら、シンプルなもの二回の方が効率がよいのかなと
思ったのです。
0876NAME IS NULL
04/02/22 03:57ID:???DBがいっぱいいっぱいなら2回に分けた方がいいかもしれんし、
ネットワークがいっぱいいっぱいならサブクエリでも1回ですませた方が
いいと思う。
ただ、この程度(>>872のSQL)ならどっちでも大して変わらないような気がする。
0877NAME IS NULL
04/02/22 04:29ID:???最初に「まとめて一行で」って要件出したのおまえだろ、
確実に要件を満たした回答の後でぐだぐだ言われてもな…
0879NAME IS NULL
04/02/22 13:18ID:???0880NAME IS NULL
04/02/22 13:24ID:???0881NAME IS NULL
04/02/23 01:21ID:???他にどういうのがあるの?
0882NAME IS NULL
04/02/23 08:35ID:???Column | Type | Modifiers
--------------+---------+------------------------------------------------------------------
tankaid | integer | not null default nextval('public.tankamaster_tankaid_seq'::text)
body | text |
note | text |
publish_date | date
という単純な表で、
月ごとにレコード数を表示させる以下のSQLはうまくいくのですが・・・
select
TO_CHAR(publish_date,'YYYYMM') as publish_yyyymm ,
count(*) as publish_yyyymm_count
from tankamaster
group by publish_yyyymm
order by publish_yyyymm
「where句にpublish_dateが2003年だったら」
という書き方がわからず困ってます。
where TO_CHAR(publish_date,'YYYY') = '2003'
とかやったのですが、エラーでした。
どのようにすれば実現できるのでしょうか?
どなたか、教えて頂ければ幸いです。
0883882
04/02/23 09:59ID:WjXYrXD40884875
04/02/23 10:05ID:???dete_trunc()
0885882
04/02/23 11:20ID:WjXYrXD4ありがとうございます。
ただ、「where date_part('year',publish_date) = 2003」を前述(>>882)のSQLにくわえても、
えらーになってしまいます。
ただ、
select publish_date
from tankamaster
where date_part('year',publish_date) = 2003
だと当然うまくいきます。
groupby や order byが絡んでだめになってるんでしょうか?
でもいろいろ部分的に削っても、実現できず。。。
SQL的に、矛盾したことはやってないですよねぇ。。。
0886875
04/02/23 11:31ID:???0887882
04/02/23 17:33ID:WjXYrXD4TO_CHAR(publish_date,'YYYYMM') as publish_yyyymm ,
count(*) as publish_yyyymm_count
from tankamaster
group by publish_yyyymm
order by publish_yyyymm
having date_part('year',publish_date) = 2003
でもえらーがでます。。。_| ̄|○
0888NAME IS NULL
04/02/23 18:01ID:???0889NAME IS NULL
04/02/23 18:03ID:???ではだめ?
#group byって別名使えたっけ?
#良く覚えてない&試してないで申し訳ないが。。。
0890882
04/02/23 18:22ID:WjXYrXD4すいません、単純ミスかと思ったので、みなさんならすぐわかるかと思って。
>>889
select
TO_CHAR(publish_date,'YYYYMM') as publish_yyyymm ,
count(*) as publish_yyyymm_count
from tankamaster
group by publish_yyyymm
order by publish_yyyymm
group by TO_CHAR(publish_date,'YYYYMM')
とやったら、
parse error at or near "group" at character 169
でした。。。_| ̄|○
0891NAME IS NULL
04/02/23 18:26ID:???TO_CHAR(publish_date,'YYYYMM') as publish_yyyymm ,
count(*) as publish_yyyymm_count
from tankamaster
group by publish_yyyymm
order by publish_yyyymm
で普通にOKだろ。なぜ2つもgroupがある。
0892NAME IS NULL
04/02/23 18:30ID:???publish_yyyymm,
count(*) as publish_yyyymm_count
from tankamaster
group by publish_yyyymm
order by publish_yyyymm
group by TO_CHAR(publish_date,'YYYYMM') as publish_yyyymm
だとだめ?
group byしてるわけだから、select句には別名を書かないとマズイと思ったんだが。
#申し訳ないけど、テストしてない
0893892
04/02/23 18:31ID:???一つにまとめてくれい。
0894892
04/02/23 18:33ID:???0895882
04/02/23 18:40ID:WjXYrXD4すみません、コピペみすしてました。
やりたいことは
select
TO_CHAR(publish_date,'YYYYMM') as publish_yyyymm ,
count(*) as publish_yyyymm_count
from tankamaster
group by publish_yyyymm
order by publish_yyyymm
where date_part('year',publish_date) = 2003
(publish_date列が2003年のレコードの中で、月別にまとめてソートして、月別件数表示する、というものなのですが。
で、上記SQLだと、「parse error at or near "where" at character 157」と言われてしまいます。。。
0896NAME IS NULL
04/02/23 19:17ID:???0897NAME IS NULL
04/02/23 21:04ID:???0898NAME IS NULL
04/02/23 21:54ID:???0899NAME IS NULL
04/02/23 22:22ID:???氏んでるんだろうか〜
0900NAME IS NULL
04/02/24 11:03ID:???0901882
04/02/24 11:52ID:???0902NAME IS NULL
04/02/25 04:56ID:???気にするなよ。最初のうちはそういうもんだ。
勉強して、このスレでレスするようになってくれ。
0903NAME IS NULL
04/02/27 02:47ID:???0904NAME IS NULL
04/03/01 10:52ID:???http://enterprise.watch.impress.co.jp/cda/software/2004/02/27/1508.html
> OpenOLAPは、Linux、Apache、PostgreSQLの各オープンソースソフトウェア上で
> 動作するため、ユーザーは完全なオープンソフトウェア環境でOLAPを利用できる
0905NAME IS NULL
04/03/06 12:23ID:???0906NAME IS NULL
04/03/06 12:40ID:???はい次
0907NAME IS NULL
04/03/07 23:03ID:???0908NAME IS NULL
04/03/07 23:30ID:???無知は黙ってろ
はい次
0909NAME IS NULL
04/03/08 20:58ID:???無知はテメーだカス。
0910NAME IS NULL
04/03/08 21:51ID:???0911NAME IS NULL
04/03/08 23:40ID:???ODBCでテキストファイルでも使ってればぁ?
0912NAME IS NULL
04/03/09 00:02ID:???0913NAME IS NULL
04/03/09 00:13ID:???CygwinもUnixの経験がまったくないと、サパーリだったし。
で、あっちゃこっちゃの鯖はLinuxって感じになってしまったが、
KDEとかGNOMEに触れた時は、Winの呪縛から逃れたい気も手伝って
いろいろ弄ったけど、結局クライアントはいまだにWindows。
スレ違いスマソ
0914NAME IS NULL
04/03/09 00:18ID:???どうせこの程度の奴が使う分には、MySQLどころか
Accessでも充分事足りるんだよ
でも「みんながpostgresの方が良いとか言うから」とか
「2chのあるスレでの比較によると…」とか、そんなん。
0915NAME IS NULL
04/03/09 00:18ID:???0916NAME IS NULL
04/03/09 16:42ID:???なんて制約を定義することはひょっとしてできないのでしょうか?
CREATE TABLE t1 (
flag INT,
code INT,
CHECK (UNIQUE(code) AND flag > 0)
);
みたいなことができればいいのですが。。。
0917NAME IS NULL
04/03/09 21:11ID:???0918916
04/03/09 22:04ID:???正確には unique じゃないのはわかります。
とりあえず flag の値を変更するときに、別の bool のカラム(例えばf2)に
flag > 0 の結果を格納するようにすれば、
UNIQUE(code, f2)
で同様の制約をかけれることは気付いたのですが、
あまりスマートじゃないですよね。。。
いい方法はないでしょうか?
0919NAME IS NULL
04/03/13 01:07ID:SQZ4DqSr0920NAME IS NULL
04/03/13 10:07ID:???0921NAME IS NULL
04/03/13 12:19ID:???根拠なしに 7.4.3 になったら移行しようと思ってる。
0922NAME IS NULL
04/03/14 15:52ID:???0923922
04/03/14 15:56ID:???・ニ。シ・ヨ・�゚キラ、ホコン。「VARCHAR、ネTEXTキソ、ホサネ、、ハャ、ア、テ、ニ、ノ、ヲ、キ、ニ、、、゙、ケ、ォ?
チエノEXT、テ、ニ、荀�、マ、タ、皃ヌ、キ、遉ヲ、ォ?
0924922
04/03/14 15:59ID:???0925NAME IS NULL
04/03/15 00:13ID:???0926NAME IS NULL
04/03/15 01:26ID:???0927NAME IS NULL
04/03/15 10:14ID:???7.4は自動的にVACUUM する機能はついているのですか
ドキュメントを見ている限りでは付いて無さそうなのですが?
0928NAME IS NULL
04/03/15 10:22ID:???付いていない。
0929NAME IS NULL
04/03/15 10:26ID:???次のバージョンにずれたのですね
0930NAME IS NULL
04/03/15 16:57ID:???postmaster を強制終了する方法ってあるんでしょうか?
kill postmasterのPID
でも大丈夫なんでしょうか?
0931NAME IS NULL
04/03/15 20:48ID:3isCxXILFATAL: "/usr/local/pgsql/data" is not a valid data directory
DETAIL: File "/usr/local/pgsql/data/PG_VERSION" is missing.
なるエラーが出てしまいます。
無難に7.3あたりにした方がいいのでしょうか?
0932NAME IS NULL
04/03/15 20:53ID:???contrib/pg_autovacuum/
0933NAME IS NULL
04/03/16 19:27ID:???感謝します。
contribディレクトリのこと調べてみました。
こういう形でユーティリティが提供されているとは知りませんでした。
makeしないといけないのですね
0934NAME IS NULL
04/03/17 13:57ID:???initdbしてないんじゃない?
0935NAME IS NULL
04/03/17 20:21ID:???0936NAME IS NULL
04/03/18 01:06ID:???前から聞いてる人?
おいらも同じ気分
雑誌によると7.5またわ8.0らしい
0937NAME IS NULL
04/03/18 01:06ID:???UTF-8やShift-JISでも使えますけどなんか無駄な機能を使っているような気がします。
0938NAME IS NULL
04/03/19 16:48ID:???急に文字入れたいとか言われちゃって・・・
0939938
04/03/19 16:55ID:???新しいカラムを追加して、そこに変換したいカラムのデータをコピーして
古いカラム消して、新しく追加したカラムの名前を古いのに変えれば
同じでした。
0940NAME IS NULL
04/03/19 17:35ID:???もう古いのか、いくつかエラーが出るんで修正しながら試しています。
ベンチマーク測定で他に何か良い方法ってありますか?
(pgbenchはマニュアルを読みましたが、既存のテーブルのテストはできないですよね?)
0941NAME IS NULL
04/03/20 09:52ID:???0942NAME IS NULL
04/03/20 11:38ID:???0943NAME IS NULL
04/03/20 12:56ID:???「そろそろモモコの一周忌ですね」
とツッコメる人がいないからだ。
0944NAME IS NULL
04/03/20 13:33ID:???モモコってなんですか?
ハムスターかなんか?
0945NAME IS NULL
04/03/20 13:59ID:???0946NAME IS NULL
04/03/20 14:04ID:???ここらの共演が見ものかと。
ttp://java-house.jp/ml/archive/j-h-b/050924.html
主にJava-Houseで活躍するも、荒れてきたことと同一人物であることが見破られそうになったことから、ももこの夫により死亡がつげられる。
ttp://java-house.jp/ml/archive/j-h-b/052276.html
他にもTurboLinuxを使う山本佳織やMacを使うゆっぴぃなどが見つかっている。
0947NAME IS NULL
04/03/20 14:32ID:???なるほど、技術系ML各地で電波を送信している方なのですね。
名前をぐぐってみたらわかりますた。
0948NAME IS NULL
04/03/20 14:35ID:???実はジサクジエーンというこの事実
0949NAME IS NULL
04/03/20 14:42ID:???えっ?これもジンナイタソの自作自演なの?((((;゜Д゜))))ガクガクブルブル
0950NAME IS NULL
04/03/20 15:16ID:???もういいよ、ジンナイタン、そこまでジサクジエーンしなくても。
みんなわかってるから…。
0952NAME IS NULL
04/03/20 15:21ID:???死亡メールにマジレスしてる人がいることも驚きダ!
0953NAME IS NULL
04/03/20 15:49ID:???0954NAME IS NULL
04/03/20 16:02ID:???「PostgreSQL & pgsql-jp ML 3テーブル目」
でおながい
0955NAME IS NULL
04/03/20 16:03ID:???そして今ジナイタソの相手してる人をみると・・・
0956NAME IS NULL
04/03/20 17:22ID:cQph4WXCPostgreSQLについて語って2万テーブルをめざしましょう。
関連アプリケーション特有の話題は、以下のスレッドへ。
pgsql-mlのヲチもここで。
●過去スレ
PostgreSQL
http://pc2.2ch.net/php/kako/989/989375812.html
PostgreSQL 2テーブル目(移転前)
http://pc2.2ch.net/test/read.cgi/php/1047317680/
PostgreSQL 2テーブル目
http://pc2.2ch.net/test/read.cgi/db/1056944337/
●関連スレ
PostgreSQLのことならここで聞け
http://pc2.2ch.net/test/read.cgi/db/1056960249/
MySQL vs PostgreSQL
http://pc2.2ch.net/test/read.cgi/db/1056943680/
PHP + PostgreSQL
http://pc2.2ch.net/test/read.cgi/php/983128806/
PerlでPostgreSQL
http://pc2.2ch.net/test/read.cgi/php/999249463/
0957NAME IS NULL
04/03/20 17:24ID:???http://pc2.2ch.net/test/read.cgi/db/1079771059/
0958NAME IS NULL
04/03/20 19:20ID:???0959新スレの1
04/03/20 20:45ID:???990くらいでも問題なかった気が。
0960NAME IS NULL
04/03/21 18:33ID:???C++用の API libpq++ が7.3で無くなっている
7.2には有るのに。
誰か知りませんか。
0961NAME IS NULL
04/03/21 20:36ID:???GBorgで見つかりました。
0962NAME IS NULL
04/03/23 18:30ID:???0963NAME IS NULL
04/03/23 19:48ID:???\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1000取り合戦いくぞゴルァ!!
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \ ぶーぶーぶー /
//三/|三|\ タリー
∪ ∪ (\_/)タリー タリー 先はなげぇ〜よ。
( ´Д) タリー タリー
/ つ (\_/) (\_/)ノ⌒ヽ、
(_(__つ⊂(´Д`⊂⌒`つ(´Д` )_人__) ))
0964NAME IS NULL
04/03/23 21:18ID:???0965NAME IS NULL
04/03/23 21:19ID:???0966NAME IS NULL
04/03/29 14:20ID:bZAOhvfO0967NAME IS NULL
04/03/29 14:43ID:bZAOhvfOって何よ。。
0968NAME IS NULL
04/03/29 15:00ID:bZAOhvfO********(# time timestamp(0),
********(# path varchar(80),
********(# ssid varchar(80),
********(# user varchar(80),
********(# group varchar(80),
********(# lang varchar(10),
********(# remote varchar(80),
********(# browser varchar(80),
********(# error text);
ERROR: parser: parse error at or near "user" at character 84
0969初心者
04/03/30 10:16ID:???Windows2000でcygwin最新をインストールして、↓
Package Version
cygipc 2.03-2
cygwin 1.5.9-1
ipc-daemon2をバックグラウンドで走らせ、ipcsを実行すると
以下のようになるのですが、これってうまくいってませんよね?
$ ipcs
---------- Shared Memory Segments --------
shmid key bytes nattch status
---------- Semaphore Arrays --------
semid nsems key
---------- Message Queues --------
msqid used-bytes messages
どうすればうまく共有メモリの設定?ができるのでしょうか?
0970NAME IS NULL
04/03/31 17:11ID:GNiAicAu$ ipctest h
してからやったらうまくいったかのような感覚を覚えたことはある。
でも実際それがキーになってるのかはよくわかんない。
あとは権限関係でこけてないかログ見てみるとか。
0971970
04/03/31 17:13ID:GNiAicAu0972初心者
04/04/02 08:42ID:???ありがとうございます。
Cygwin1.5系ではipc-daemonは2.xでないといけないと聞いたので
2.xでやってました。1.xも試してみます。
ログがあるんですか…。
0973NAME IS NULL
04/04/03 03:56ID:ZUcU1XBz全て<IDLE>になってしまいます。
pg_hba.confではクエリが見られるよう設定してあるんですが、
どうすれば良いのでしょうか。
0974NAME IS NULL
04/04/03 11:53ID:om45/2Hfふと疑問に思いまして、
ipc-daemon の ipcってのはどういう意味(なにかの略称?)なのでしょうか?
0975NAME IS NULL
04/04/03 19:47ID:???0976NAME IS NULL
04/04/07 13:21ID:???0977NAME IS NULL
04/04/21 15:20ID:KjL6eAbt0978NAME IS NULL
04/04/21 22:39ID:OnfOdbntpg_dumpでプレーンテキスト指定すると、SQLで出るから、
nkfとか使ってコード変換して、あと手でなおすとこあったら、なおせばOKじゃない?
0979NAME IS NULL
04/04/21 22:46ID:???0980NAME IS NULL
04/04/23 11:55ID:???key = SELECT key FROM t1;
if (key) {
UPDATE t1 SET 〜
} else {
INSERT INTO t1 〜
}
とやるのと
UPDATE t1 SET 〜
if (cmdtuples == 0) {
INSERT INTO t1 〜
}
とやるのとどちらが効率いいもんなんでしょうか?
0981NAME IS NULL
04/04/24 14:32ID:JgmL5B+4予約語です。
私もそれで引っかかった。
http://www.postgresql.jp/document/pg742doc/html/sql-keywords-appendix.html#KEYWORDS-TABLE
0982NAME IS NULL
04/04/25 04:14ID:LZTL9YwlXEONだと、2論理cpuあるので、2個同時に動いてくれるかが興味あります。
やっぱりこの状態の方が、処理能力もあがるのでしょうか?
オラクルだとcpuライセンスというイヤなライセンス形態があるので、pSQLやMySQLを採用したいです。
0983NAME IS NULL
04/04/25 16:21ID:???PostgreSQLってプロセスモデルだから単発クエリだとHTなCPUでは1個分かも。
PowerGresはスレッドモデルだからHTが有効に働くんじゃね。
って、まぁ、詳しくは知らんし、全然見当はずれのことをいっているかも知れんが。
0984NAME IS NULL
04/04/25 18:23ID:???もれは
INSERT
if (キー重複エラー) {
UPDATE
}
INSERTが先かUPDATEが先かは用途によってちがうんじゃね?
0985NAME IS NULL
04/04/25 19:13ID:mC3bhcDcpg_dump -u db-name > DB.bak
dumpSequence(yama_seq): different sequence name returned by SELECT: yamaseq
探してみると
ttp://ml.postgresql.jp/pgsql-jp-old/pgsql-jp/2001Jun/msg00180.html
とありましたが、やっぱ上記通りバグなんでしょうか?バージョンも結構古いし。(7.1.2)
0986985
04/04/25 21:15ID:mC3bhcDcただ、新しい方が7.4.2でバージョンが違うせいかまともにリストア出来ないっす。
なんかいい方法はないものか・・・う〜ん。
0987980
04/04/25 22:31ID:???最新版ではキー重複エラーってコードで取れるんでしたっけ?
今使ってるのって古いので、それやろうとすると
if (strstr($res->toString(), "duplicate key")) {
〜
}
とやらないとだめなので少し抵抗がありますた。
ポスグレ的(もしくは一般的)には
INSERT > UPDATE
なのでしたっけ
ということはやはり先にINSERTしてみる方が速いのでしょうか?
にSELECTは論外でしょうか?教えてエロい人。
0988NAME IS NULL
04/04/25 22:43ID:???PowerGresがスレッドモデルとはいっても、1つのクエリを複数
スレッドで実行するいわゆるパラレルクエリが使えるわけじゃない。
一方で1プロセスは1つ以上のスレッドからなるわけだから、HTの
効き方については同等。
いちおうCPUが複数あれば、複数のクエリを同時実行できるわけだから
その点については効果はあるわけだけどね。
#もちろんバスやI/Oが飽和しない限りにおいて
0989984
04/04/25 23:05ID:???もれはphpのPEAR::DBでDB_ERROR_ALREADY_EXISTSみてるけど
内部でやってるこたあ>>987と同じだな
どっちが速いかは、新規登録と変更のどっちの処理が多いか用途によるんじゃねえ?
どっちも少なくてselectが主だったらんなとこ気いつかってもしょうがねえこった
#ぜんぜんpostgresのはなしじゃねえ
0990980
04/04/26 11:42ID:???データの一括登録・変更処理なんです。
CSVから一万行ぐらいを一気に処理するので、
このプログラム自体を動かす頻度は多くはないのですが、
一回の分量が多いので性能を気にしてます。
ポスグレの特性として、登録が速いとか、更新が速いとか
あるのかなと思ってお聞きしました。
あと、キーの重複はログに出ますよね?
ということはその分エラー処理に時間がかかってたりする
ということはないのでしょうか?
でも984さんからすると、それでもやはりINSERTの方が速いんでしょうか?
もちろん最終的には自分で試しますが、だいたいこういうもんだ、
というのを教えていただけると幸いです。
0991NAME IS NULL
04/04/26 11:49ID:???PostgreSQLの場合の特性はよくしらんが
新規挿入が多いのか、既存レコードの更新が多いのか、
その処理自体の特性の方が問題なんじゃないかね?
0992NAME IS NULL
04/04/26 11:52ID:???>もちろん最終的には自分で試しますが、だいたいこういうもんだ、
>というのを教えていただけると幸いです。
試す気があるなら、さっさと自分で試せや。
こういうことを書かずに質問するやつより、余計にうざい。
0993980
04/04/26 12:16ID:???基本的には新規挿入が多いようです。
ただ、よく考えてみたら諸般の事情でINDEX貼ってない(貼れない)んです。
というわけでINSERTしてみて判断、というのは無理でした。
となるとSELECTして見つかればUPDATE、か、
UPDATEして更新行が0ならINSERT、ということになってしまうと思います。
となると速いのはやっぱり後者ですかね。試してみます。
>>992
ウルセー バカ
0994NAME IS NULL
04/04/26 15:03ID:???速度気にするならMySQL使え!
終了
0995NAME IS NULL
04/04/26 15:48ID:???selectしてinsertかupdateかを判断するよりはinsertでエラーがでればupdateする
ほうが早いんじゃない?
手段としては
・updateして、更新行が0ならinsert
・insertして一意制約に引っかかればupdate
のどちらかかな。
スピードは既存レコードがどの程度あるかによると思う。
0996NAME IS NULL
04/04/27 12:14ID:???安全に殺すのはどうやればいいんでしょう?
psql からなら CTRL-C でよかったのですが、
PHPから発行してしまったので殺し方がわかりません。
0997NAME IS NULL
04/04/27 12:56ID:???0998NAME IS NULL
04/04/27 13:08ID:???0999NAME IS NULL
04/04/27 22:48ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。