もう7時か、
2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50 [PR]萌え猫写真館が復活。[PR]  
レス数が900を超えています。1000を超えると表示できなくなるよ。

PostgreSQL Part.5

1 :NAME IS NULL:2007/12/01(土) 21:38:37 ID:LPSUO/OT
PostgreSQL (ぽすとぐれすきゅーえる, ぽすとぐれす) について語るスレです。
前スレ [【Windows】 PostgreSQL8 Part.1 【対応】] http://pc11.2ch.net/test/read.cgi/db/1102247223/

● 関連サイト
[PostgreSQL 本家] http://www.postgresql.org/
[日本PostgreSQLユーザ会] http://www.postgresql.jp/
[ドキュメント] http://www.postgresql.jp/document/current/html/
[ダウンロード] http://www.postgresql.jp/PostgreSQL
[pgFoundry] http://pgfoundry.org/

● 関連スレ
[2ch検索] http://find.2ch.net/index.php?STR=PostgreSQL
[WebProg/PostgreSQL 2テーブル目] http://pc11.2ch.net/test/read.cgi/php/1047317680/

866 :NAME IS NULL:2008/08/10(日) 23:13:39 ID:???
textとcharacter varying(varchar)のデータ型の使い分けの
基本的な考え方を教えて下さい。
webで探すとtext型を推奨するような書き込みもありますが、
お互いで得手不得手な事があるのでしょうか?


867 :NAME IS NULL:2008/08/10(日) 23:46:39 ID:???
>>866
DB側で文字数の制限およびチェックが必要かどうかだけ。
と思ってる。

868 :NAME IS NULL:2008/08/11(月) 04:43:15 ID:???
>>867
それでOK。実装はまったく一緒だし。
管理ツールで表示が違う場合はあるかも。
varcharは1行テキストボックス、textは複数行テキストボックスとか。

869 :NAME IS NULL:2008/08/11(月) 11:05:33 ID:JHhGIW9s
Macのヒラギノで表現できる文字(Adobe-Japan1-5 JIS X 0213? + Unicode?)を全て格納したいのですが、
DBの文字コードは何を指定したらいいのでしょうか。

http://www.apple.com/jp/pro/design/typography/05/index6.html
を読んでいると、全てを文字コードで格納するのは不可能とも読み取れますが・・
UTF-8にしておくのが一番いいのでしょうか?

870 :866:2008/08/11(月) 13:45:48 ID:???
>>867-868
なるほど、ありがとうございました。


871 :NAME IS NULL:2008/08/12(火) 07:29:17 ID:???
ヒラギノのことはよく知らんけどUnicodeで表現できるならUTF-8でいいんじゃ?
表現できなきゃ、バイナリデータとして格納とか。

872 :NAME IS NULL:2008/08/16(土) 12:56:12 ID:iPeeVtKy
〉863
それ、おれもなった。
結局解決つかなかったからpgpool使ったよ。

873 :NAME IS NULL:2008/08/18(月) 04:35:12 ID:rrvhCdtj
VACUUMのためにDB鯖を2台用意し
1台を通常運用、ある一定時刻がきたらデータをすべて
2台目のDB鯖に写しアプリからもデータ更新不可・2台目の鯖接続というように処理させ
1台目のVACUUM処理終了後、通常運用に戻るというような
運用はありでしょうか?
何かネックになりそうなことはありますでしょうか?

874 :NAME IS NULL:2008/08/18(月) 06:17:41 ID:???
2台目のサーバで行われた更新を
どうやって1台目に反映させるの?

875 :NAME IS NULL:2008/08/18(月) 06:48:38 ID:???
ありがとうございます。
2台目の鯖運用時は参照のみに利用し、更新は行いません。
ということです。

876 :NAME IS NULL:2008/08/18(月) 08:11:16 ID:???
>>875
特に問題はないと思う。2台目のデータは毎回捨てるってことだよね?
ただ、目的がVACUUM中の性能低下を回避するだけならば、
サーバ間のデータコピーが本当にVACUUMより軽いか調べたほうが良いかも。

877 :NAME IS NULL:2008/08/18(月) 08:50:25 ID:???
pgpoolとかで同期させといて
バキュームしたい時、意図的に切断しとけば?

878 :NAME IS NULL:2008/08/18(月) 16:14:41 ID:???
>>872
レスありがとうございます。そちらの環境でもなりましたか。
すぐ気付きそうな現象ですから、情報が出ていてもよさそうなもんですが、無いんですよね。

2008-03-09以降リリースのバージョンで、pglbのdropdb上手くいっている人いましたら、是非環境を伺いたく。

879 :NAME IS NULL:2008/08/19(火) 00:12:40 ID:qDOKASZt
複合PKを持っている表を
ID+UNIQUE制約に変更したいときに、
既存データにID値を振りなおす(採番する)のって
serial型をADD COLUMNするだけで行けます?

日本語わかりにくかったらごめんなさい。

880 :NAME IS NULL:2008/08/19(火) 08:51:25 ID:???
>>879
カラム追加だけだと中身がNULLじゃね?

881 :NAME IS NULL:2008/08/19(火) 10:02:35 ID:???
連番振るだけなら一発でできるよ。
シリアル追加だけじゃ何も入らない。

882 :NAME IS NULL:2008/08/19(火) 10:21:33 ID:???
>>879
実はその新規連番付与にも複雑な法則性が…
なんて後出しが来ないことを祈るwww

883 :881:2008/08/19(火) 10:34:12 ID:???
あれ?
今試したら、しっかり番号入ってる。

すみません、ALTER TABLE table ADD COLUMN no SERIAL;
だけで入ってました。8.1.4ですが

884 :NAME IS NULL:2008/08/20(水) 01:18:01 ID:???
クラサバの接続とApache+PHPでの接続、利用はわかるのですが、
WebサーバーのPostgreSQL へVB.NET または、VB6での接続は可能でしょうか?
可能であれば、その方法をご存知の方いましたら、教えて下さい。
WebサーバーへのODBC接続は試みましたがうまくいきませんでした。

885 :NAME IS NULL:2008/08/20(水) 07:57:05 ID:???
>>884
ODBCでも良いし、Npgsqlでも良いし、お好きな方法で。
事象の報告もなしに「うまくいきません」といわれても、これ以上のアドバイスは無理。

886 :NAME IS NULL:2008/08/20(水) 08:39:19 ID:???
>>884
「WebサーバーへのODBC接続」
文脈から理解できるが言葉の意味をしっかり押さえるべき

887 :NAME IS NULL:2008/08/20(水) 09:52:09 ID:???
PostgreSQLのODBCドライバがインストールされて無いんじゃないの?
まず、開発用PC(Win?)からWebサーバ上のPostgreSQLにODBC接続可能かどうか試しましょう。

OKならVB6ならADODB、VB.NETならADO.NETで接続可能なはず。
ADO.NETではODBC接続は速度的に使いものにならないからNpgsqlが無難だね。

888 :NAME IS NULL:2008/08/21(木) 00:13:36 ID:???
884です。
みなさん、ご教授ありがとうございます。
できるようになりました。
ポートが空いていなかったのが原因でした。
できれば、必要なポートだけを開けたいのですが、
PostgreSQLで必要な5432など以外に何が必要なのでしょうか?

889 :879:2008/08/21(木) 02:16:48 ID:???
こんなに早く回答もらえると思ってなかったので遅くなりました
ありがとうございます。

実際に試せるのはもうちょっと先になるんですが
ハードが物理的におかしくなってそれどころじゃなくなって
泣きそうです ><


890 :NAME IS NULL:2008/08/21(木) 17:41:24 ID:???
>>888
標準では5432tcpだけあけとけば問題ないよ
> PostgreSQLで必要な5432など以外に何が必要なのでしょうか?
これはPostgreSQL以外で必要となるポートと言ってますか?

891 :NAME IS NULL:2008/08/22(金) 18:49:17 ID:???
>>890
888ですが、
5432だけで、いいのですか。
ありがとうございます。
今のところ、それだけでは、うまくいきませんが、試行錯誤してみます。

892 :NAME IS NULL:2008/08/22(金) 19:00:47 ID:???
それだけでうまくいかないのは、別の原因か設定ミス

893 :NAME IS NULL:2008/08/23(土) 23:17:25 ID:???
PostgreSQLの問い合わせの方法の中にビットマップスキャンというのが
ありますが,そもそもビットマップとは何なのでしょうか?
windowsのビットマップ画像でないと思うのですが,それではいったい何を示しているのか
わかりません
わかる方いたらお願いします

894 :NAME IS NULL:2008/08/24(日) 07:41:58 ID:???
ググれ

895 :NAME IS NULL:2008/08/25(月) 12:46:22 ID:???
http://xn--lckja1b6r.jp/%E3%83%93%E3%83%83%E3%83%88%E3%83%9E%E3%83%83%E3%83%97%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3

896 :NAME IS NULL:2008/08/28(木) 19:53:10 ID:???
debianにインストールしたのですが、ローカルでは問題なく動くのですが、
別マシンから接続すると、

psql: could not open certificate file "/home/orca/.postgresql/postgresql.crt": そのようなファイルやディレクトリはありません

となってしまいます。
このファイルは、どういうタイミングで作られるんでしょうか?

897 :NAME IS NULL:2008/08/28(木) 23:25:43 ID:???
>>890
>>888でできるようになりました、と書いているが、>>890でうまいくいきませんと書いているわけで、
何ができて何ができていないのかが伝わってこないのが現状です。
よくわからんので、Webサーバの80tcpを開けてみたら?

>>896
SSL関連のように思うが、それは意図的にそういう接続を?

898 :NAME IS NULL:2008/08/29(金) 08:58:19 ID:???
>>897
>SSL関連のように思う
とあるソフトのインストールを、手順書の(OSのインストール手順からある)通りにやっていたんですが、
SSLの設定の事は何処にも書いてないんで、Postgerの問題かと思ったのです。

SSLのセットアップから試してみます。

899 :NAME IS NULL:2008/08/29(金) 18:03:21 ID:???
oracleにあるselct for update wait のような
行ロックを掛けつつタイムアウトを設定するには
どうすればいいでしょうか?

900 :NAME IS NULL:2008/08/30(土) 05:40:20 ID:???
>>899
それ、タイムアウト設定じゃなくて
ロックされてたら待機するかエラー返すかのオプションだろwww
PostgreSQL8.1あたりからNO WAITが使えるようになった、
ってことは、これまでのはWAITだったってことだ。


901 :NAME IS NULL:2008/08/30(土) 09:41:07 ID:???
>>900
すみません。ちょっと説明不足でした。
oracleはselect for update wait 10
とすると10秒待機してエラーになります。
このような設定はないでしょうか?

902 :NAME IS NULL:2008/08/30(土) 10:02:33 ID:???
>>901
SQLだけでやりたいなら、statement_timeoutと組み合わせるのかな。
 BEGIN;
 SET LOCAL statement_timeout = '10s';
 SELECT ... FOR UPDATE;


903 :NAME IS NULL:2008/08/30(土) 10:17:50 ID:???
>>902
おぉ!
さんくす。

904 :NAME IS NULL:2008/09/03(水) 17:54:16 ID:???
age 関数が使えない(=結果が微妙な)んだけど、うちの環境だけ?

# select age(timestamp '2009-09-02', timestamp '2008-09-03');
 11 mons 29 days

期待しているのは、11 mons 30 days なんですがねぇ。

# select age(timestamp '2009-09-01', timestamp '2008-09-03');
 11 mons 28 days

# select age(timestamp '2009-08-31', timestamp '2008-09-03');
 11 mons 28 days

なんてなるし。環境は

# select version();
 PostgreSQL 8.1.13 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.3.1

です。

905 :NAME IS NULL:2008/09/03(水) 21:03:59 ID:???
>>904
仕様だな。

# select age(timestamp '2009-09-02', timestamp '2008-09-03');
11 mons 29 days

# select age(timestamp '2009-08-02', timestamp '2008-08-03');
11 mons 30 days

# select age(timestamp '2009-02-02', timestamp '2008-02-03');
11 mons 28 days

# select age(timestamp '2010-02-02', timestamp '2009-02-03');
11 mons 27 days

# select version();
PostgreSQL 8.3.3 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20070626 (Red Hat 4.1.2-14)

906 :NAME IS NULL:2008/09/03(水) 21:25:38 ID:???
>>905
その結果だけを見ると、単に当日を含むか含まないかの問題のように見えますが
問題はそうじゃないんですよね。

# select age(timestamp '2009-09-03', timestamp '2008-09-03');
 1 year

ですし。問題は

1. 2008-09-03 → 2009-09-03 は 1 年(当日を含まないなら、ここが変わるはず)
2. 2008-09-03 → 2009-09-02 は 11 ヶ月 29 日(8 月は 31 日あるから 30 日を期待)
3. 2008-09-03 → 2009-09-01 は 11 ヶ月 28 日
4. 2008-09-03 → 2009-08-31 は 11 ヶ月 28 日(上の 09-01 と同じ結果)

という結果になることなんです。結果がこうなっている以上は仕様なんでしょうけど
これだと、異なる日との差分で同じ結果になることがある(3. と 4.)ので、
微妙に使えない(と私は思う)仕様ですね。

907 :NAME IS NULL:2008/09/03(水) 23:19:12 ID:???
そこが問題になるなら普通に引き算して日にちを出せばいい

908 :NAME IS NULL:2008/09/03(水) 23:20:58 ID:???
intervalを無理に年月日に振るからこうなる

909 :NAME IS NULL:2008/09/03(水) 23:29:13 ID:???
>>907
日数を出すだけで良いなら、最初からそうしますって。
関数ないかなーって探して見つけたと思ったら、上記の
結果だったので、使えない関数だなぁと思って。
誰も問題視してないんでしょうかね。
少なくとも違う日で同じ差分が出るのは問題でしょ。
仕方ないので関数を自作します。

>>908
無理にっていっても、単なるキャストとかじゃなしに、
専用の関数ですよ。内部でどうにでもなるじゃないですか。

910 :NAME IS NULL:2008/09/03(水) 23:48:28 ID:???
さすがウンコDB

911 :905:2008/09/04(木) 01:10:58 ID:???
>>906
あーなるほど、今まで気づかなかった。
マニュアルより
> 異なる月では日数が異なりますのでageで返されるmonthsにはあいまいさがあります。
> PostgreSQLのやり方は月にまたがる2つの日付の計算において、日付の早いほうの月を使用します。

今まで気づかなかったくらいだから、それほど困る場面に直面するわけでもなさそうだが、
頭の片隅においといた方が良さそうね。

912 :NAME IS NULL:2008/09/04(木) 02:27:58 ID:???
>>911
なにー、マニュアルに書いてあったんですか。
http://www.postgresql.jp/document/pg833doc/html/functions-datetime.html
の 9.9.1 の直前ですね。age 関数の説明までしか見てませんでした。すみません。
それなら、完璧に仕様ですね。諦めて自作で進めます。

913 :NAME IS NULL:2008/09/04(木) 04:14:41 ID:???
そもそも、日付の差を取ったときに、何月という情報は
論理的な意味を失うと思うんだが。


914 :NAME IS NULL:2008/09/04(木) 08:25:36 ID:???
単に age() と operator - () の2つ選択肢があるってことじゃないの?
用途に応じて使い分ければ良いのでは。
確かに age のほうは使い道がビミョーだが。

915 :NAME IS NULL:2008/09/04(木) 12:04:55 ID:???
どこかの国の法律か、どこかの業界の慣習(たとえば保険?)とかで、
このageみたいな定義で計算することになっているところがあるのかも。

281 KB [ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]

■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
PostgreSQL 2テーブル目 [WebProg]

新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.0.7.3 2008/07/26
FOX ★ DSO(Dynamic Shared Object)