alte_6 の回答履歴

全30件中1~20件表示
  • windows版postgresql 異なるバージョンの共存について

    現在、postgresql8.2が入っているのですが、 postgresql8.3も共存させることはできるのでしょうか。 今まで、バージョン8.2を利用して作成したプログラムがあるので、8.2も残しておきたいのです。 バージョン8.3にすると、今まで8.2で作成したプログラムのSQL文が日付型等の指定が正しくない(?)為、 エラーになってしまう可能性があり、8.3に移行するわけにもいかず、困っています。 バージョン8.2がインストールされている状態で、バージョン8.3をインストールするだけで、問題ないのでしょうか。 現在、pgAdminnIII上には、「PostgreSQL Database Server 8.2」というサーバーがあるのですが、 インストールすると「PostgreSQL Database Server 8.3」等のように追加され、異なるバージョンが動くのでしょうか。 わかりづらい文章で申し訳ありませんが、よろしくお願い致します。

  • インデックスの張り方について

    とあるテーブルのレコード数は、全部で28レコードあります。 このテーブルにはインデックスを張っておらず、シーケンシャルスキャンでDBよりSELECTしています。 通常にシステムを運用する上では問題ないのですが、負荷試験などで同時接続数を50などにしループでDBにアクセスさせるとき、その他の4000万レコード程度あるテーブルをSELECTしてくるのは0.00xxx秒で行えるのに対し、この28レコードしかないテーブルからSELECTしてくる際は、遅い場合で0.xx秒もかかってしまいます。 この28レコードしかないテーブルにインデックスを張っても、レコード数が少なすぎてまったく意味がありませんでした。 ちなみにこのレコードへは下記のようなSELECT文を発行しています SELECT xxx,xxx,xxx FROM xxxx where カラム1 = aaaa AND カラム2 IN (bbb,ccc) AND カラム3 = ddd; このレコードのSELECT文を高速化させるには、どのような手段があるでしょうか。 お手数ですがご教示いただけますと幸いでございます。 DBはPostgreSQL、PHPのWebアプリケーションよりDBにアクセスしています。

  • 複数行の結果を単一列に連結(複数のテーブルを参照)

    psql (PostgreSQL) 7.3.4です。 困っています 以下のような【TABLE1】と【TABLE2】を TABLE1のt1tot2にで結合した結果を 【A.結果】のように★▲●の行を1行に表示させて取得したいのですがうまくいきません。 【TABLE1】 ID,ID_SUB, TYPE, VALUE A A1 t1 1 ★ A A1 t2 2 ★ A A1 t1 1 ▲ A A1 t2 3 ▲ B B1 t1 1 ● B B1 t2 3 ● 【TABLE2】 ID, TYPEV1 ,TYPEV2 ,Code A 1 1 AAA1 A 1 2 AAA2 ★ A 1 3 AAA3 ▲ B 1 3 BBB1 ●  TYPEV1=TABLE1のt1の値 TYPEV2=TABLE1のt2の値 【得たい結果】 ID, ID_SUB, TYPEV1, TYPEV2,Code A A1 1 2 AAA2★ A A1 1 3 AAA2▲ B B1 1 3 BBB1● 下記でTABLE1の2行を1行にまとめることができましたが、 問題のTABLE2との連結方法が分かりません。 select TABLE1.ID , TABLE1.ID_SUB , TABLE1.VALUE as t1 , (SELECT tbl1.VALUE FROM TABLE1 tbl1 where tbl1.TYPE=t2 and (TABLE1.ID , TABLE1.ID_SUB)=(tbl1.ID , tbl1.ID_SUB)) as t2 from TABLE1 where TABLE1.TYPE = t1 【結果】 ID ,ID_SUB , t1  ,t2 A A1 1 2 ★ A A1 1 3 ▲ B B1 1 3 ● 何か良い方法はありますでしょうか?

  • ダンプリストア時のDBデータ不整合

    環境 CentOS5系 64bit DBバージョン 8.3.3 本番DBサーバからpg_dump -c -D でダンプしたデータを、ローカルテストDBサーバ へpsql にてリストアした際、データ不整合が、一部のテーブルに発生しました。 前のデータが一部クリアされずに残っている状況です。 ダンプのデータは、DBの内容と同じなのですが。 因みに、pg_dump パラメータ無しのダンプのリストアでは、発生しません。 何が、原因でしょうか? もしかしてバグ? ご教授願えれば幸いです。 宜しくお願い致します。

  • pg_dumpallしたデータを他のマシンでリストアできる??

    ご存知の方教えてください。 現在当方、fedora8にてPostgersql8.2.5を運用しております。 ちょっとマシンを変えたいと思いまして、現在のDB情報を すべて載せ替えたいと思っております。 A → B (Aが旧マシン Bが新マシン) 旧マシンでpg_dumpallしたものをBマシンでリストアする事は可能なのでしょうか? また、pg_dumpallしたデータはどこへ保存されるのでしょうか?? ご存知の方教えてください。 ではよろしくお願いいたします。

  • pg_dumpallしたデータを他のマシンでリストアできる??

    ご存知の方教えてください。 現在当方、fedora8にてPostgersql8.2.5を運用しております。 ちょっとマシンを変えたいと思いまして、現在のDB情報を すべて載せ替えたいと思っております。 A → B (Aが旧マシン Bが新マシン) 旧マシンでpg_dumpallしたものをBマシンでリストアする事は可能なのでしょうか? また、pg_dumpallしたデータはどこへ保存されるのでしょうか?? ご存知の方教えてください。 ではよろしくお願いいたします。

  • バックアップとリストアについてのエラー

    最近、DBを勉強し始めた、初心者です。 現在、pg_dumpコマンドでデータをバックアップして、リストアしようと試みています。DBのデータ容量が小さいうちは、問題なくリストアできるのですが、DBのデータの容量が大きくなってくると、「No buffer space available」とエラー表示されます。 この問題を解決するには、どうしたらいいのでしょうか? 詳しい方がいましたら、教えて下さい。 よろしくお願いします。

  • テストデータの作成

    課題でDBへアクセスできるjavaプログラムを作成したのですが、提出の際、テストデータをもってくるように言われたのですが・・・テストデータの作り方がわかりません。 どなたか教えていただけないでしょうか?よろしくお願いします。

  • 最初のパスワードがわからなくなってしまいました・・・

    PostgreSQLの最初に設定したパスワードを忘れてしまったのですが設定したパスワードを調べる方法はないでしょうか? pgAdminIIIではパスワードを入れるとアクセスできるのですが、コマンドプロントからするとなぜかアクセスできません。。。。 同じようにパスワードがわからなくなった方の質問・回答から以下の処理をしてみたのですが・・・ *************** pg_hba.confのエントリを編集し直します。 # TYPE DATABASE USER IP-ADDRESS/CIDR-mask METHOD host all all 127.0.0.1/32 password この、passwordと書いているエントリの部分をtrustへ変更します そしてpostgreSQLを再起動し、postgresユーザーで全部いじれるようになります。 使えるようになったらtrustとした部分をpasswordにもどし、ネットワークへつないでください。 ***************** 上記の方法でやってみたのですがパスワードをtrustの状態にし、「psql postgres」 とうち、データベースへ接続しようとしたら psql: role "Owner" does not exist とエラーが出てしまうのです。何がいけないのでしょうか・・・ DBへの参考書やネットで調べたりしているのですが、ツールを使わずにDB操作を行おうとしたらコマンドプロンプトからDBへ接続し、sql文で操作するものだと思うのですが・・・・間違った解釈なのでしょうか・・・・

  • update

    初心者の私にご教授願います。 phpにて情報を更新する画面を用意しており、そこから修正したのを updateさせているのですが、なぜか 全角を含む文字をupdateとするとエラーになっちゃいます。。 同じvarcharでも数字のみをupdateすれば、エラーはでません。 これは何か指定してあげる必要があるのでしょうか。 また、数字の前ゼロがupdateしたら消えちゃうのも 何か指定する必要があるのでしょうか。 不躾な質問で申し訳ありませんが ご回答お願いします。

  • 領域情報

    PostgreSQLをベースとしたパッケージを利用しているのですが 容量不足気味で困っております。 OracleDBであればObjectBrowserで表領域情報を確認し、 どのテーブルが領域を圧迫しているかが確認できるのですが Postgreは閲覧できません。 一時的な作業なため、同じような情報が取得できるフリーの ツールなどをご存知でしたら、どなたか教えて頂けないでしょう? 対象サーバはLINUXのため、私自身、全く操作ができません。 できればWindows上で操作可能なものがあれば教えて下さい。 よろしくお願い致します。

  • マルチテーブル・インサート

    ご教授よろしくお願い致します。 現在、table_aにInsertされたカラム(no,name)のデータを同時にtable_bにも反映するSQL文を考えております。 【table_a】              no | name | price               ==============         005  apple   500         001  banana  250         【table_b】 no | name | color ================= 005  apple   red 001  banana  yellow Insertをそれぞれのテーブルで実行すれば、もちろん反映はできるのですが一度のInsert文でできるのならそれにこしたことはありません。 いろいろ調べた結果、下記のサイトでできるようなことが記載してあったため、実行したのですが、『ALL』がシンタックスエラーとなってしまいます。 そのため、postgresのマニュアルを確認してみたところ、Insert文にALL句の指定は特別記載されていなかったため、できないとも思っているのですが… サイト↓ http://www.atmarkit.co.jp/fdb/rensai/sqlclinic12/sqlclinic12_1.html サイトを参考にしたSQL文 『INSERT ALL INTO table_a(no,name) VALUES(005,apple) INTO table_b(no,name) VALUES(005,apple); 』 何か良い方法をご存知の方がいましたら、ご教授よろしくお願い致します。同じことをUpadteでもやらなければいけないのですが、それはもう少し自分で考えてみます。 只、できないことが明白な場合は、ご指摘を頂けると有難いです。 環境としましては、 OS 【Windows xp】 DB 【PostgreSQL 8.2】 です。

  • indexを使おうとしない間違ったcost計算

    postgres 7.2.4で質問させてください。 以下のような構成のテーブルの抽出をしようとしています。 テーブル名 :t_name カラム名  :k1、k2、k3 インデックス:t_name_idx  テーブルt_nameの全体件数は約70万件で、上記のSQLから期待 される抽出結果件数は約1万5千件です。t_nameにはk3のみを対象としたインデックス、t_name_idxが作成してあります。次のようなSQLを実行した際に、シーケンス検索になり応答までに6秒ほどかかってしまいます。  select k1,k2 from t_name where k3 in ("100","200"); explain analyzeで実行計画を見ると (cost=26.29..15304.62 rows=523 width=104) Total runtime: 6427.32 msec です。シーケンスをSET enable_seqscan TO off; で使用しないようにして、強制的にt_name_idxを使うと次のような結果になります。 (cost=0.00..42009.05 rows=523 width=104) Total runtime: 423.81 msec 実際にはindexを使用したほうが10倍以上も速いのに、プランナはシーケンス検索のほうがコストが小さいと判断しています。何故このようになってしまうのでしょうか?VACUUM ANALYZEを行っても結果は変わりませんでした。 私のイメージでは、index検索のほうがコストが小さく計算されて、それを使うべき。というイメージなのですが、考え方自体が間違っているのでしょうか? 原因を調べ始めて1週間経ち、行き詰っています。 どなたかヒントだけでもいいので教えてください。

  • nativecode=ERROR: relation

    PostgreSQLについて質問なのですが、サーバ移転をしておりまして別のサーバにまったく同じ環境でDBを移行しました。 そこで、テーブルには接続できてまして他のテーブルに書き込んであるレコードは参照できるのですが別のテーブルに書き込もうとすると以下のようなメッセージがでてしまいます。 [db_error: message="DB Error: no such table" code=-18 mode=return level=notice prefix="" info="INSERT INTO tenpo (tenpo,towner,tiku,created,updated,disabled,password) VALUES ('1','test','0000000000','test',NULL,'test',NULL,NULL,'0','now()','now()',TRUE,'128573') [nativecode=ERROR: relation "public.tenpo_tenpo_no_seq" does not exist]"] no such tableと表示されていますがテーブルは存在してます。 テーブルに書かれているデフォルトの記載を削除するとメッセがかわります。 [db_error: message="DB Error: null value violates not-null constraint" code=-29 mode=return level=notice prefix="" info="INSERT INTO tenpo (tenpo,towner,tiku,created,updated,disabled,password)VALUES('1','test','0000000000','test',NULL,'test',NULL,NULL,'0','now()','now()',TRUE,'258237')[nativecode=ERROR: null value in column "tenpo_no" violates not-null constraint]"] 書き込みができない理由などのお知恵をお借りできればと思います。 よろしくお願いします。

  • あいまい検索で英文字の全角半角を区別しない

    いつもお世話になっております。 あいまい検索で、英文字の全角・半角も区別しないように結果を出したいんですが、どういった方法でできますでしょうか。 大文字小文字の区別なしの曖昧検索だと、 ILIKEという専用演算子を使えばいいとわかったのですが、 全角と半角の区別がついてしまいます。 英文字の全角でも半角でも検索結果をだしたいです。 どなたかご教授お願いいたします。

  • 入れ子を使わずにレコードの総計を出したい

    こんにちわ。PostgreSQLのSQL文について質問させてください。 以下のSQL文を実行したとき、 # select c.id from C c left join S s on (s.id=c.id) where c.num = 1 group by c.id having count(s.id) >= 5; id ---- 7 5 (2 rows) というデータが表示されるんですが、このSQL文で抽出したデータの総件数を求めるにはどうしたらいいでしょうか? 入れ子を使うと、 # select count(*) from (select c.id from C c left join S s on (s.id=c.id) where c.num = 1 group by c.id having count(s.id) >= 5) tmp; というふうに書け、 count ------- 2 (1 row) と表示されるのはわかりますが、入れ子を使わずに上のように表示させるにはどうしたらよいでしょうか? よろしくお願いいたします。

  • pg_dumpの指定パラメータ

    現在、DBをバージョンアップすべく検証等をしている最中なのですが。。。 現7.4.7 → 8.3.1へ移行に当たりpg_dumpのリストアにて作業をしているのですが、 pg_dumpパラメータに -c -D を附帯させてダンプした物をリストアするとサーバ用途モデルのマシンは信じられないくらい時間を要します。 附帯無し、所要時間約1分 → 附帯有り 所要時間約130分 附帯有りの所要時間は、10年前のPCでさえも60分で完了するのに その倍以上時間を要しています。 それで、そもそも同じPostgreSQLであるならばバージョンは違えども別のRDBMSではないので パラメータに -d -D は附帯させる必要性は、全く無いのでしょうか? ご教授願えれば幸いです。宜しくお願い致します。

  • バイナリデータ格納について

    はじめまして。 現在、以下のシステム構成でWEBシステムを作成しています。 ▼システム構成 ----------------------  CentOS 5.97  PHP 5.1.6  POSTGRESQL 8.1.9  Apache 2.2.3 ---------------------- PHPを使用して、画像ファイルをバイナリデータに変換し DBに格納しようとしていますが、うまく動作しません。 ▼ソース ---------------------- //画像をバイナリ型に変換します。 $fn = "../../images/uploaded/$image_name"; $cn = @file_get_contents("$fn"); $esc_image = pg_escape_bytea($cn); //DB登録に写真を登録します。 $s=""; $s.="insert into cbphoto("; $s.=" photoid,"; $s.=" photo"; $s.=") values ("; $s.=" $photoid,"; $s.=" '{$esc_image}'"; $s.=")"; $r=pg_exec($db,$s); ---------------------- 小さいファイル(20kb以下前後)は問題なく格納できるのですが、 大きいファイルの場合は、格納されません。 ※ただし、上記のphotoidは格納されます。  また、エラーメッセージも出力されていない様です。 マニュアルを確認するとバイナリ列は1GBまで格納できると 記載されていましたが、ファイルサイズが原因で格納できないのでしょうか? また、他に原因があるのでしょうか? (ラージオブジェクトじゃないとダメ等) 以上、お手数ですがよろしくお願いいたします。

  • Ver8.3.1のSQLの応答が重い

    Ver7.4.19にて動作しているSQL文(max関数多用)を、最新Ver8.3.1にて実行すると5倍動作が遅いです。 Ver7.4.19(約0.7秒):Ver8.3.1(約3.5秒)という具合です。 因みに、両DBはチューニングを施している状態の結果です。 8.3系特有の記述の仕方があるのでしょうか? max関数を多用していないSQLは、明らかにVer8.3.1方が高速で応答しているのですが。。。。。 ご教授宜しくお願い致します。

  • max_fsm_pagesについて

    VACUUMにてmax_fsm_pagesが不足している旨のメッセージが出ましたので、 不要領域を無くそうと vacuumdb -f を実施しましたが、 その後も同様のメッセージが表示されます。 max_fsm_pagesが不足している旨のメッセージが出た場合は、 一旦max_fsm_pagesの値を変更してVACUUM FULLを実施しなければ意味がないのでしょうか? ちなみに、2回目のVACUUM FULL時に表示されたメッセージが以下になります。 ----------------------------------------------------------------- hoge=# VACUUM FULL; NOTICE: number of page slots needed (31360) exceeds max_fsm_pages (20000) HINT: Consider increasing the configuration parameter "max_fsm_pages" to a value over 31360. VACUUM -----------------------------------------------------------------