PostgreSQL

全1193件中141~160件表示
  • ReIndex処理の頻度

    PostgreSQLによるデータベースを運用しています。 メンテナンス処理で、Vacuum処理は毎日バックアップ取得時に行っていますが、 ReIndex処理は1週間に1度程度行っています。 ReIndex処理も毎日行ったほうがよいのでしょうか。 よろしくご教授ください。

  • データが変更されているかを判断するには

    お知恵をお貸し下さい。 INSERT SELECTでデータを変更する前の状態のデータを履歴テーブルに追加してからデータを更新をしています。 現在の流れは以下の通りです。 1.検索リストから[編集]ボタンを押下して入力フォームを表示しています。  ※既に登録されているデータを各テキストボックス等に挿入された状態です。           ↓ 2.データを変更して[次へ]ボタンを押下して、入力された値を確認するページを表示しています。           ↓ 3.完了メッセージを表示して上記のINSERT SELECTの処理を実行しています。  ※一応、更新する前のデータを履歴テーブルに追加し、データも更新する事はできています。 データが何も変更されていない場合に流れの3での「INSERT SELECT」の処理を実行しないようにするにはどのような事をすればいいのでしょうか。 単純にSELECT文で全ての入力項目の値をWHERE句に指定して変更されているかを判断する方法でしょうか。 説明が下手で申し訳ありませんが理解していただけましたでしょうか。 どうか皆さん、宜しくお願いします。

  • PostgreSQL のバージョン変えるとどうなる

    PostgreSQL のバージョンアップを検討しています。 Version 9.1.4 Version 8.3.19 Version 8.3.1と比べると機能・性能・セキュリティなどが良くなっているのですか? phpからの操作の仕方や挙動が変わるとかあるのでしょうか。 Version 8.3.19 の方がよいですしょうか。

  • 黒猫SQL で ポストグレに接続したい。

    色々、試しているのですがうまくゆきません。 どうしたらよいでしょうか? ポストグレのドライバを設定するところがあるのですが、 何を設定していいか分かりません。

  • PostgreSQLのケースセンシティブの設定

    よろしくお願いいたします。 LINUX & PostgreSQl 8.4.9 を使用してDB構築をしております。 PostgreSQLでは、CreateTable等、DDLを作成する際に、 テーブル名カラム名に対して大文字小文字が区別されるということですが、 PostgreSQLのconfファイル等の設定などによって ケースセンシティブ(大文字小文字の区別)の基準値などを設定することは可能なのでしょうか。 (ケースセンシティブを有効にする無効にする、のような設定) また、PostgreSQLのリファレンス内に、 ケースセンシティブについて触れた記述があるページが見つからなかったのですが、 そのような記述がある場所(Postgresの公式ページ内で)を、 ご存知の方いらっしゃいませんでしょうか?

  • テーブル定義書作成時のIndex付加について

    基礎的なことで申し訳ございませんが、 お力添えよろしくお願いいたします。 CentOs 5 & PostgreSQL 8.4.9にてDB構築しております。 DB構築から、テーブル作成・項目追加・キー設定まで行いまして、 検索する際に、抽出件数が多く負荷のかかりそうなものに Indexを作成しようと考えております。 ■本題  1.Indexを作成する対象となる項目の、目安としてどのようなものが考えられるでしょうか。   ・キー対象の項目になっているもの   ・検索条件の対象となる項目なども当たるでしょうか  2.項目をまとめて一つのIndexにするメリット・デメリットはどのようなものでしょうか   3.テーブル結合したときのIndexの動作    例) 下記のようなテーブルがあった場合 tablea(データ50000件程度) hoge_id pkey1 hoge_no hoge_nm ... tableb(データ150000件程度) test_id pkey1 hoge_id pkey2 hoge_betu_kb ...     select t1.hoge_id, t1.hoge_nm, t2.hoge_betu_kb rom tablea as t1 leftjoin tableb as t2 on t1.hoge_id = t2.hoge_id where t1.hoge_id > '100' and t1.hoge_nm like 'あいう%'   このような場合のIndex作成は、 A. Create index idx_tablea_hoge_id ON tablea (hoge_id); B. Create index idx_tablea_hoge_id ON tablea (hoge_nm); C. Create index idx_tableb_hoge_id ON tableb (hoge_id); ←tableaで指定しているのでこれは不要?  4.A.B.C.のようなIndex作成した際のテーブル定義の書き方   テーブル定義書のフォーマットは定められており、お門違いな質問かとは存じてはおりますが、   テーブル定義にIndex定義を書く場合に、添付した画像のようなフォーマットの書き方が   よく理解できずお気づきの点などございましたら、ご指摘願えたら助かります。   (以前は、CSEツールなどで自動出力される定義書のような書き方をしていたもので・・・)         例)tablea IDX1 IDX2 IDX3 hoge_id 1 hoge_nm 2 このような書き方になるのかどうか?      IDX2, IDX3の項目とは?どのようなIndex定義をした際に書き込むことになるのかが判らず。。。      基礎から勉強しなおすべきとは存じておりますが。。。 現状の期間あまり時間がないことと、 DB構築を一人で行っており、このような内容を相談できるものがおりませんゆえ、 改めて、Index付加することを考えてみると、いまさら聞けないような内容かもしれませんが ちゃんと把握したうえで、テーブル構築したいと思いますので 今までの他の皆様の経験からのノウハウなども踏まえて、 ご教授いただけると大変助かります。

  • sqlにて0無しの月をフォーマットする方法

    質問させていただきます。 DB:postgresql 言語:PHP タイトルの通りなのですが、 現在下記のような形でSQLを実行しています。 「to_char(created, 'YYYY年MM月') as created_styled,」 しかし、この形では月の部分が01月と0を含んだものになってしまいます。 MySQLであれば、%cを使用すれば0無しの月を生成出来るようなのですが、 postgresqlでも同じような機能は無いのでしょうか? また、無理にSQL側で処理を行う必要も無いので、データを取り出した後での処理方法でも構いません。 もしこういった場合に一般的な0を消す対処方法があれば教えて頂けると助かります。 よろしくお願い致します。 また、質問に不備などがあればすぐに修正致しますので、その際はご指摘お願いします。

  • DBのパフォーマンス、ライセンス費用について

    これから、商用のパッケージでシステム開発を行おうと思っています。 そこで、DBの選定をしている最中なのですが、 出来るだけコストをかけないでしたいので、 PostgreSQLで考えています。 (商用アプリでも無料ということだったので) ですが、MySQLやその他の商用DBも含めて、 費用(ライセンス)や速度、メモリ消費などのパフォーマンスで 何のどこが優れているかを教えていただきたいと思います。 (未チューニングの状態で) また、サイトなどのURLでも構いません。 よろしくお願いします。

  • マルチコアを使ってくれない

    4コアのCPUですが、CPUのうち1つだけが使用率100%で、他のCPUを使ってくれず困っています。 対処法が解る方、助言をお願いします。 @環境 Linux version 3.2.12-gentoo Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz postgresql-server-9.1.3

  • CPUが100%

    現在バージョン9.0.5をLinux上で動作しているのですが、 次のようなログを残してCPUが100%を示したままになってしまいました。 WARNING: worker took too long to start; cancelled そのときにwebアプリケーションはデータベースに接続できないエラーが発生していましたが、DBサーバを再起動すると再び正しく動作するようになりました。 このログが表示される原因はいくつかあると思いますが、一つでも原因について何か情報があれば教えて下さい。 また、解決方法もわかれば教えて下さい。

  • シェルでのファイル内に記載されたSQLファイル実行

    Webを検索しても方法が出てこなかったため、質問させていただきます。 ファイル内に記載されたSQLファイルをPostgresで実行したいと思っております。 OracleのSqlPlusでは以下のファイルを次のように実行できました。 【コンソール】 SQL> @@C:/path/hogehoge.sql 【ファイルの中身】 @@C:/path/xxx.sql @@C:/path/yyy.sql @@C:/path/zzz.sql ・ ・ ・ 今回、Postgresでもファイル内に記載されたSQLファイルを呼び出して実行するために、コンソールで以下のコマンドを実行したのですが、エラーとなってしまいます。 psql -e DB名 ユーザ名 < C:/path/hogehoge.sql 他のオプション指定が必要なのか、またはファイル内のSQLファイルのパスの指定方法が間違っているのか…現状では解決方法が見つかっておりません。 どなたか解決方法を知っている方がいらっしゃれば教えていただけませんでしょうか?

  • ストアド内で実行したSQLの出力結果について

    現在、引数の値を元に下記のようなSQL文を生成しています。 SELECT code, name FROM T_CGY WHERE code = '1111' UNION SELECT code, name FROM T_CGY WHERE code = '1110' UNION SELECT code, name FROM T_CGY WHERE code = '1100' UNION SELECT code, name FROM T_CGY WHERE code = '1000' ORDER BY code; ※出力されたSQL文に誤りがないかを確認する為にコピーしてターミナル上で実行したら該当するレコードを取得する事ができました。 それをストアドプロシージャ内で生成したSQL文を「QUERY EXECUTE」を実行して該当するレコードが取得できるように改造してみました。 下記が出力された結果です。 getCgyData -------------------- (1000,洋服) (1100,子供服) (1110,ズボン) (1111,長ズボン) 出力されたデータは私が望んだ内容なんですが・・・ 私的には下記のように出力したいと考えています。 col1    | col2 ------------------------- 1000  | 洋服 1100  | 子供服 1110  | ズボン 1111  | 長ズボン 何とか上記のように出力できるようにするにはどうしたらいいでしょうしょうか。 そもそも上記のように出力する事は可能なのでしょうか。 CREATE FUNCTION getCgyData (VARCHAR) RETURNS TABLE(col1 VARCHAR, col2 VARCHAR) AS ' DECLARE key ALIAS FOR $1; sql TEXT; BEGIN                 ・                 ・ ※ここでSQL文を生成して、変数(sql)に格納しています。                 ・                 ・ RETURN QUERY EXECUTE sql; END; ' language 'plpgsql' ; データベースのバージョンはpostgreSQL8.4.9です。 再度、申し訳ありませんがアドバイス、宜しくお願いします。 では、失礼します。

  • CREATE VIEWについて

    2つのテーブル(basecodeとaddcode)からVIEWを作りたいのですが、 そのVIEWについてご教授いただきたく。 <TABLE名:basecode> ---------------------- no name area code ---------------------- 1 aaaa 2 102 2 bbbb 4 103 3 cccc 4 203 4 gggg 3 303 5 eeee 3 101 6 ffff 5 104 7 hhhh 1 115 ---------------------- <TABLE名:addcode> ----------------------------------------- base anum bnum cnum dnum dmy no ----------------------------------------- bbbb 1 1 1 1 aaa 2 cccc 12 13 10 2 aaa 3 cccc 12 13 10 0 aaa 3 cccc 12 13 10 5 aaa 3 dddd 12 15 3 1 aaa 3 dddd 12 15 3 3 aaa 3 dddd 12 15 3 4 aaa 3 eeee 10 3 12 1 aaa 5 eeee 10 3 12 2 aaa 5 eeee 10 3 12 3 aaa 5 eeee 10 3 12 4 aaa 5 eeee 13 12 15 3 aaa 5 eeee 13 12 15 0 aaa 5 eeee 13 12 15 1 aaa 5 eeee 13 12 15 2 aaa 5 hhhh 4 3 11 0 aaa 7 hhhh 4 3 11 2 aaa 7 hhhh 4 3 13 2 aaa 7 kkkk 0 0 0 0 aaa 9 ----------------------------------------- VIEWの抽出は以下の通り。  basecodeのno  basecodeのname  basecodeのcode  addcodeのbase  addcodeのanum  addcodeのbnum  addcodeのcnum  addcodeのdnum VIEWの作成条件としては以下の通り。 <条件> TABLE名:basecodeとaddcodeのnoが存在し、かつ、 baseaddのnoが複数あり、baseが同じものは以下で判断  ・anumとbnumとcnumが同一であればその中のdnumが最小であるレコードを抽出  ・anumとbnumとcnumが異なれば別々に抽出 上記より、以下のように抽出したい。 <TABLE名:basecodeview> ----------------------------------------------- no name code base anum bnum cnum dnum ----------------------------------------------- 2 bbbb 103 bbbb 1 1 1 1 3 cccc 203 cccc 12 13 10 0 3 cccc 203 dddd 12 15 3 1 5 eeee 101 eeee 10 3 12 1 5 eeee 101 eeee 13 12 15 0 7 hhhh 115 hhhh 4 3 11 0 7 hhhh 115 hhhh 4 3 13 2 ----------------------------------------------- よろしくお願いします。

  • SQLについて

    aaa bbb ccc ddd eee ggg hhh ---------------------------------------------- 111 111 111 111 111 111 111 112 112 112 112 112 112 111 112 113 113 113 113 113 111 114 114 114 114 114 114 111 114 114 114 114 114 114 112 114 115 115 114 114 115 111 114 115 115 114 114 115 112 116 116 116 116 116 116 111 116 116 116 116 116 116 112 116 116 116 116 116 117 111 116 116 116 116 116 117 112 118 118 118 118 118 118 118 上記のようなデータより、SQLのSELECTを使用して、以下のように抽出したいです。 抽出条件は以下が全て満たしているものとなります。 ・aaa,ccc,ddd,eee,gggが重複、hhhが小さいもの ・bbbが異なるもの aaa bbb ccc ddd eee ggg hhh ---------------------------------------------- 112 112 112 112 112 112 111 ・・・(1) 112 113 113 113 113 113 111 ・・・(1) 114 114 114 114 114 114 111 ・・・(2) 114 115 114 114 114 115 111 ・・・(2) (1)はaaa,ccc,ddd,eee,gggが重複、bbbが異なるため抽出対象 (2)はaaa,ccc,ddd,eee,gggが重複、bbbが異なるため抽出対象  また、hhhが小さいもの 以上、よろしくお願いします。

  • カテゴリに紐づいているサブカテゴリを取得するには

    SQLで質問があります。 カテゴリテーブルがあります。 カテゴリテーブルのフィールドは以下の通りです。  ・カテゴリコード  ・カテゴリ名  ・親コード 例えば下記のようなデータとします。 1000|洋服  |NULL 1100|子供服 |1000 1110|ズボン |1100 1111|半ズボン|1110 1112|長ズボン|1110 1120|シャツ |1100 1121|Tシャツ|1120 1200|婦人服 |1000 1300|男性服 |1000      ・      ・      ・      ・ カテゴリはプルダウンで 洋服(1000)      →子供服(1100)           →子供服(1100)                →長ズボン(1111) の順に選択しました。 「カテゴリ」のプルダウンを選択すると選択したカテゴリに紐づいている「サブカテゴリ」のプルダウンを順々に表示しています。 データベースに登録されているカテゴリコードは最後に選択した「長ズボン」の「1111」です。 この場合、SQLで「長ズボン」の「1111」をキーにして「洋服(1000)」「子供服(1100)」「子供服(1100)」というカテゴリを取得するにはどのように記述したらいいのでしょうか。 説明、下手ですみませんが理解していただけましたでしょうか。 申し訳ありませんがアドバイス、宜しくお願いします。 あ、データベースはpostgreSQL8.4.9です。 では、失礼します。

  • PL/pgSQL 引数の数

    PL/pgSQL を使用し更新処理を行いたいのですが、 パラメータの数が多すぎるのか 以下のエラーでデータベースにファンクションを定義出来ません。 ERROR: functions cannot have more than 100 arguments SQLステート:54023 可変長引数で作成すると、データベースに定義は出来るのですが ファンクション実行時に同様のエラーが発生し更新処理が行えません。 PL/pgSQL の引数を100以上使用出来る様にする設定等、存在するのであれば 教えて頂きたいです。 環境は以下の内容です。 CentOS-6.2-x86_64 Apache/2.2.15 PostgreSQL 9.1.3 PHP Version 5.3.3 (PDOを使用しています)

  • SQL文について

    下記の3つのテーブルがあります。 ・社員マスタ(TBL_SHAIN) ・得意先マスタ(TBL_TOKUI) ・地域マスタ(TBL_AREA) 各テーブルのフィールドは下記の通りです。 ・社員マスタ(TBL_SHAIN)  ・社員コード(shain_code)  ・社員名(shain_name)  ・役職タイプ(post_type)  ・地域コード(area_code) ・得意先マスタ(TBL_TOKUI)  ・得意先コード(tokui_code)  ・得意先名(tokui_name)  ・地域コード(area_code) ・地域マスタ(TBL_AREA)  ・地域コード(area_code)  ・地域(area_name)  ・分類コード(kind_type) ※社員マスタ(TBL_SHAIN)の地域コード(area_code)は配列型です。 社員マスタの地域コードには下記のような配列データが格納されています。 ・「{E01,E02,S01,T01,C03}」  ※この値は地域マスタ(TBL_AREA)の地域コード(area_code)です。 試しに 下記のSQLで配列データを下記のような形式に変換。  SELECT chr(39) || array_to_string(area_code, ''',''') || chr(39) FROM TBL_SHAIN;   「'E01','E02','S01','T01','C03'」 上記で出力した値('E01','E02','S01','T01','C03')で得意先マスタを検索できるかと思って下記のSQLを実行。 SELECT * FROM TBL_TOKUI WHERE area_code IN (SELECT chr(39) || array_to_string(area_code, ''',''') || chr(39) FROM TBL_SHAIN); 結果は空でした。 やりたい事は社員マスタ(TBL_SHAIN)の地域コード(area_code)と地域マスタ(TBL_AREA)の地域コード(area_code)を結合し、また得意先マスタ(TBL_TOKUI)の地域コード(area_code)と結合しようと考えています。 みなさんにアドバイスいただきたいのは社員マスタと得意先マスタと地域マスタを結合するにはどのようにしたらいいでしょうか。 また社員マスタの地域コードに該当する得意先を参照するにはどうしたらいいでしょうか。 どうか宜しくお願いします。

  • メタデータ、 マスタデータ

    性別をintegerの1,2に分けるテーブルをマスタデータと呼ぶんですか?メターデータとよぶのですか? もしくわ、他の呼び方がありますか?

  • PostgreSQLのDB復元

    PostgreSQLのDBサーバがハードディスク故障で使えなくなり、新サーバに交換しましたが、幸い古いディスクからファイルシステムのデータをコピーできました。 この場合、どうやって新サーバにDBのリストアできるのでしょうか? コピーされた古いディスクのファイルはdumpしてない元々のファイル群ですので、ちょっと復元のやり方が分かりません。 新サーバに同じバージョンのPostgreSQLをインストールして、古いファイルを上書きすればいいでしょうか? ちなみに、旧サーバと新サーバのスペックは一緒です。 分かる方いればぜひ教えてください。

  • postgreSQL を OleDB 接続

    postgreSQL が Linux:CentOS上にあり OS:Windows Vista 開発環境 : VisualStudio 2005 言語 : C# ソフトを開発しております、接続は正常に終了(OleDbConnectionのOpen())するのですが 読み込みコマンドが失敗します(OleDbDataAdapterのFill) "'PostgreSQL OLE DB Provider' は失敗しましたが、エラー メッセージはありません。結果コードは -2147221163(0x80040155) です。" 解決方法をご存知のかたいらっしゃいますでしょうか?