PostgreSQL
- PL/pgSQLの直接実行
PL/pgSQLのことで教えてください。 これまで SQL Server を使っていましたが、PostgreSQL に移行しています。 Npgsql で、VB.Net から接続しようと思っています。 PL/pgSQLで、ストアドファンクションなどを定義するのではなく、PL/pgSQLスクリプトを 直接実行することはできないのでしょうか? SQL Server では、T-SQLのスクリプトを直接実行できました。 例えば ManagementStudioのクエリ実行画面にスクリプトを入力して実行したり、 VBからだと、SqlCommand の CommandText に T-SQLを書いて実行したり、という ことです。 pgAdminIIIのSQLエディタや、NpgsqlのNpgsqlCommandで同様のことをやろうとすると エラーになります。 何か良い方法があるのでしょうか?
- ベストアンサー
- PostgreSQL
- to_ku_to_ku
- 回答数2
- pg_dumpでパスワードなしで実行する方法
pg_dumpでパスワードなしで実行する方法がわかりません。 マニュアルには、パスワードファイルは 実行するユーザのホームディレクトリに「.pgpass」ファイルを準備して、 パスワードの設定を記述してあげればよいとのことですが、うまくいきません。 お忙しい中、申し訳ありませんが、ご教授ねがいます。 【環境】 Windows7 PostgreSQL9.4 ちなみにパスワードファイルを保存しました。 C:\Users\(ユーザ)\AppData\Roaming\postgresql\.pgpass 以上、宜しくお願いします。
- 締切済み
- PostgreSQL
- rapport5683
- 回答数1
- バイナリエディタ
20005B90 002903E7 以後+8h ・何故、先頭が0000ではなく、2000なのか? ・以後+8hとは、どうゆう意味で、どこを直せばいいのか? 教えて下さい。
- 締切済み
- PostgreSQL
- noname#208060
- 回答数1
- bit型のselectについて
postgresqlのbit型のselectについて質問です。 例えば、各個人のアンケートの回答なりのデータがbit型で格納されている場合に | user | data | ------------------------- | A | 0100011100 | ------------------------- | B | 0111011101 | ------------------------- | C | 1101011101 | ------------------------- | D | 0101011100 | ------------------------- | E | 0111011100 | ------------------------- (1)1番左を1番目の質問として、1番目の回答に1がついている人数(上記の場合は1人) (2)3番目の質問に1がついているuser(上記の場合はBとE) 以上の2点について、うまくselect出来る方法がありましたらご教授いただきたいです。
- ベストアンサー
- PostgreSQL
- jxxxdio
- 回答数1
- PostgreSQLのインストールについて。
現在、初心者でPostgreSQLのインストールについてつまづいています・・・; 一度インストール作業をしたのですが途中で「応答していません」と出てしまい キャンセルをして再インストールをしようとしたところ 「An existing PostgreSQL installation has been found at C:\program Files\ PostgreSQL\9.4 This installation will be apgraded. In order to upgrade, we may need to restart the server. All connection to the server will need to be reestablishede after the completion of the installation process.」 と表示されてしまいました。 そして「NEXT」をクリックするとDate Directory の部分にファイルが参照されておらず空欄のままでした。 この場合どうすればいいのでしょうか?泣 すでにインストールされていたのでしょうか? どなたかおしえていただけますと幸いです。
- 締切済み
- PostgreSQL
- kobayashia06
- 回答数3
- テーブルのソート
postgresqlでソートする処理があります。 データとして、例えば、項目名をgrp,data とするとして grp,data 0,あああ 1,いいい 3,ううう 0,えええ 5,おおお 0,かかか 0,ききき 2,くくく というようなデータを 1,いいい 3,ううう 5,おおお 2,くくく 0,あああ 0,えええ 0,かかか 0,ききき というように取り出したいのです。 言葉にすると grpを0と0以外で抽出し、その中でdataソート(0以外の中からが優先) みたいな感じでしょうか。 二つのsqlを使えばできるでしょうが、なんとかひとつのsqlでできないでしょうか? よろしくお願いいたします。
- 締切済み
- PostgreSQL
- jg1wjz
- 回答数2
- レコードをdrop後のデータファイル内データ
基本的な質問です。 postgresql9であるレコードをdrop後にバキュームを行ないましたが データファイル({postgres_homedir}/data/base/oid/テーブルNo)でdropしたレコードの文字列が残っています。 ここからも消したいのですがどうしたら消えますか?
- 締切済み
- PostgreSQL
- wf3255
- 回答数1
- postgresqlでのトランザクションについて
postgresqlで、「WARNING 進行中のトランザクションがありません」のエラーが出てしまいました。 これはそのままの意味だと思うのですが 直す方法がわかりません。 ワーニングなので、、、といいたいところですが、そうもいかず。 apのログで、トランザクション関係の辺りを見ましたところ、 トランザクションを開始し、 TABLEをDROPしようとしましたが、存在しなかった(ようだ)。 (PQexecがエラーでリターン) 存在しないけれど、commit してトランザクションを終わらせている。 のが原因かなと思いました。 なので、PQexec()がエラーの場合はcommitしなければいいのかと はずしましたが結果は同じでした。 トランザクションが無いのだからrollbackもいらないですよね。 そこで質問ですが drop文、1ステップのSQL実行も明示的にトランザクションの処理をしたほうがいいのでしょうか? このワーニングは通常のトランザクションの処理の中で、どういう時にでるのでしょうか? oracleとpostgresqlの明示的・暗黙的な制御に戸惑っています。 (oracleからpostgresqlに移行することになりました) 叱咤でも何でもかまいませんので、アドバイスよろしくお願いいたします。
- ベストアンサー
- PostgreSQL
- jg1wjz
- 回答数1
- 特定の人の最高を出すようなSQL
例えば単純化して 出席番号と点数と登録時刻を登録すようなテーブルにて seiseki table bangou int //出席番号 tensu int //点数 instime timestamp//登録時刻 出席番号1番の人が20 点 25点 40点という成績を順にとって 1 20 2014-01-04 1 40 2014-03-20 1 25 2014-05-11 とレコードがあった場合 一番点数がよいレコードの登録期日を求めるにはどうやったらよいでしょか・・・
- ベストアンサー
- PostgreSQL
- muuming2001
- 回答数1
- 複数のテーブルから登録順にデータ取得
複数のテーブルから登録順にデータ取得なんてことできるのでしょうか? table_A A_id int A_time timestamp A_title text table_B B_id int B_time timestamp B_title text とtable_A table_Bにデータが存在するときに AB関係なく A_titleもしくはB_title を登録順のA_timeもしくはB_time 順に10個とかSQL一発でかけるのでしょうか? そもそもこのような作りにするな!ということでしょうが・・・
- ベストアンサー
- PostgreSQL
- muuming2001
- 回答数1
- DBで大文字小文字を区別せずINSERTする方法
データベースに関する質問です。 現在、学校でデータベースを使用したシステムを開発しています。 データベースは主にPostgreSQLを使用しています。 データをINSERTする際に大文字小文字を区別せず、 同じ文字列であるかどうかチェックする方法はありますか? たとえば、「abc123」と「aBc123」を同一とみなし INSERTできないようにしたいです。(主キーのため) システム側ではなく、できればデータベース側で判定を行いたいです。 宜しくお願い致します。
- 締切済み
- PostgreSQL
- pop_pop7610
- 回答数3
- PostgreSQLでの複数結果のまとめ方
下記の様テーブルよりproduct_idごとに【結果】の様な形として 出力したいと考えております。 【TableA】 order_id|product_id|product_name | quantity 001 product001 商品名1 2 002 product001 商品名1 1 002 product002 商品名2 2 003 product002 商品名2 1 003 product003 商品名3 1 【結果】 product_id|product_name|quantity|order_id product001 商品名1 3 001, 002 product002 商品名2 3 002, 003 product003 商品名3 1 003 SELECT product_id, max(product_name), sum(quantity), order_id FROM TableA GROUP BY product_id, order_id としてみたのですが、 product_id|product_name|quantity|order_id product001 商品名1 3 001 product001 商品名1 1 002 product002 商品名2 2 002 product002 商品名2 1 003 product003 商品名3 1 003 となってしまい、order_idを上記の様にセルにまとめて表示する方法をお教え頂けますと幸いです。 MySQLではGROUP_CONCAT関数を使う事で実現出来たのですが PostgreSQLでの実現方法が分かりかねています。 尚、PostgreSQLのバージョンはPostgreSQL 8.1.23です。 どなたかご教示頂けますと幸いです。
- 締切済み
- PostgreSQL
- kojikoji0801
- 回答数1
- PostgreSQLのメモリ使用量について
お世話になります。 漠然とした質問になってしまうのですが、 postgresのメモリ使用量が増加し続け、 最終的にメモリ不足になる現象で困っております。 もし、PostgreSQLのチューニングで解消できるようでしたら ご教示頂けないでしょうか? 詳細(ざっくりですが、、、)は、 周期的にSELECTを実施しているプロセスがあるのですが、 psで監視すると、postgresのメモリ使用量が、 少しずつですが増加し続け SELECTをやめると増加は止まるのですが、 増えたままで減りません。 (試験的にSLEEPしてSELECTを止めた状態を作成) ちなみにSELECTしているプロセス(C言語)自体は メモリリークしておりません。。。 漠然としてて申し訳ございませんが お知恵をお借りできるとうれしいです。
- 締切済み
- PostgreSQL
- alp_tomy
- 回答数1
- 特定の位置が特定の範囲に含まれるかどうか
よろしくお願いいたします。 PostgrSQLでPosGIS対応にし、テーブルにGeomカラムを作り、そこにPoint型で地理情報をインサートしました。 次に、特定の範囲に、何件Geomカラムの位置が入っているのかを調べようと思い、次のようなSQLを書きました。 SELECT * FROM hogetable WHERE ST_Within(geom, ST_GeomFromText('POLYGON((10 10, 10 20, 20 20, 20 10))',4326)); これを実行すると、POLYGONのところが、パースエラーになります。どこがおかしかったのでしょうか? Postgresqlは、あまり触ったことがないので、変なことを書いてしまっていたらごめんなさい。 環境は、CentOS6.3 64bit Postgresql9.3 Postgis2.1です。 よろしくお願いいたします。
- ベストアンサー
- PostgreSQL
- valox
- 回答数1
- データベースのフィールドのデータ型について
くだらない質問で申し訳ありませんが宜しくお願いします。 下記のようなデータを格納するテーブルを構築しています。 ・ユーザーID ・名前 ・カタカナ ・パスワード ・年齢 ・郵便番号 ・住所1 ・住所2 ・住所3 ・電話番号 ・メールアドレス ・備考 ・削除フラグ ・登録者 ・登録日 ・更新者 ・更新日 上記の内容を下記のようなテーブルのフィールドのデータ型を考えました。 ・ユーザーIDのデータ型をVARCHAR(4) ・名前のデータ型をVARCHAR(32) ・カタカナのデータ型をVARCHAR(32) ・パスワードのデータ型をVARCHAR(255) ・年齢のデータ型をINTEGER ・郵便番号のデータ型をVARCHAR(8) ・住所1のデータ型をVARCHAR(255) ・住所2のデータ型をVARCHAR(255) ・住所3のデータ型をVARCHAR(255) ・電話番号のデータ型をVARCHAR(18) ・メールアドレスのデータ型をVARCHAR(255) ・備考のデータ型をTEXT ・削除フラグのデータ型をVARCHAR(1) ・登録者のデータ型をVARCHAR(4) ・登録日のデータ型をTIMESTAMP ・更新者のデータ型をVARCHAR(4) ・更新日のデータ型をTIMESTAMP そうしたら下記のような風にテーブルのフィールドのデータ型にしたら格納する文字列の桁エラーが起こらないからどうといわれました。 ・ユーザーIDのデータ型をVARCHAR(4) ・名前のデータ型をTEXT ・カタカナのデータ型をTEXT ・パスワードのデータ型をTEXT ・年齢のデータ型をTEXT ・郵便番号のデータ型をTEXT ・住所1のデータ型をTEXT ・住所2のデータ型をTEXT ・住所3のデータ型をTEXT ・電話番号のデータ型をTEXT ・メールアドレスのデータ型をTEXT ・備考のデータ型をTEXT ・削除フラグのデータ型をVARCHAR(1) ・登録者のデータ型をVARCHAR(4) ・登録日のデータ型をTIMESTAMP ・更新者のデータ型をVARCHAR(4) ・更新日のデータ型をTIMESTAMP ※現在、使用しているデータベースはPostgreSQLですが、Microsoft SQL ServerやOracleやMySQL等の他のデータベースでもいいものなのかもご教授いただけると助かります。 私の知識不足でどちらがいいのかがわからず投稿させてもらいました。 申し訳ありませんが皆さんのお知恵をお貸し下さい。 宜しくお願いします。
- ベストアンサー
- PostgreSQL
- wakaba1972
- 回答数3
- PostgreSQLでの日本語検索するには
PostgreSQLを使用しております。 バージョンは9.1です。 日本語の検索を行いたいので、create index ・・・を使用してインデックスを作成し select * from hoge where item like '%ほげ%'; といった形で検索をかけてみました。 正常?に検索でき結果が出力されました。 いろいろネットを調べてみると、PostgreSQLで日本語の検索をやるにはpg_trgmやpg_bigmを インストールしないとダメなようなことが書いてあるのですが、私がやったことは誤っているのでしょうか? やはりpg_trgmなどをインストールしなければ日本語の検索はできないのでしょうか? 詳しい方教えてください。
- ベストアンサー
- PostgreSQL
- spring3333
- 回答数2
- select文の書き方で分からないところがあります
どうしても分からないので教えてください。 先人の書いたphpの記述を解析しています。 postgreSQLとやり取りしている部分に、次のようなselect文の記述があります。 select lpad(seq_no,shiyo_keta,'0'),seq_min,seq_max from seqno_info where seq_key='YAMATODENPYO'; 実行すると次のようなエラーがでます。 ERROR: 関数lpad(bigint, smallint, unknown)は存在しません 茵 1: select lpad(seq_no,shiyo_keta,'0'),seq_min,seq_max from seqn... (lpadのあたりに印が付いていましたが、ここではずれるので消してあります。) HINT: 指定名称、指定引数型に合う関数がありません。明示的な型キャストが必要かも しれません テーブルの型は次のようになっています。 \d seqno_info Table "public.seqno_info" Column | Type | Modifiers ------------+----------+----------- seq_key | text | not null seq_no | bigint | seq_min | bigint | seq_max | bigint | shiyo_keta | smallint | 以下がそれぞれに入っているデータです。 select seq_no from seqno_info; seq_no -------- 999 (1 row) select shiyo_keta from seqno_info; shiyo_keta ------------ 3 (1 row) 調べても有力な情報が見当たらず困っています。 どなたか、ご教示ください。
- ベストアンサー
- PostgreSQL
- TKM2005
- 回答数1
- SQLで期間をずらした集計処理
以下のようなテーブルがあったとします。 select * from T1; +------------+------+ | date | num | +------------+------+ | 2014-01-01 | 1 | | 2014-01-02 | 2 | | 2014-01-03 | 2 | | 2014-01-05 | 1 | | 2014-01-07 | 1 | +------------+------+ このとき、「各日付を起点として、その日を含む過去3日分の合計num数を出力」させるためにはどのようなSQLを書けばいいのでしょうか。 以下のような結果が返ってくることを期待しています。 | date | sum_num | +------------+------+ | 2014-01-01 | 1 | | 2014-01-02 | 3 | ※ 1+2 | 2014-01-03 | 5 | ※ 1+2+2 | 2014-01-05 | 3 | ※ 2+1 | 2014-01-07 | 2 | ※ 1+1 +------------+------+ PostgreSQL 8系なのですが、環境の問題でwith recursive句を使うことができません。 相関サブクエリをうまく使って取得する方法は無いでしょうか。 よろしくお願いいたします。
- ベストアンサー
- PostgreSQL
- ypsilon2
- 回答数4
- Postgreのupdateコマンドでエラー
教えてください。 現在、ある人の書いたPHPを解析しています。 その中で、postgreSQLを使ってデータをアップデートしている以下の記述があります。 begin;update goods_belong_cat set belong_cat_1='10002', belong_cat_2='10025', belong_cat_3='10086', belong_cat_4='' ,goods_id='1000402' or goods_id='1000393' or goods_id='1000412' or goods_id='1000232' or goods_id='1000241' or goods_id='1000240' or goods_id='1000840' ;commit work; (一行です。) この記述を実行すると、以下のようなエラーが出ます。 BEGIN ERROR: boolean型への入力構文が無効です: "1000402" 茵 1: ..., belong_cat_3='10086', belong_cat_4='' ,goods_id='1000402' ... ^ ROLLBACK どこに誤りがあるのか分かりません。 どなたかご教示願えませんでしょうか。 Postgreのバージョンは、psql (PostgreSQL) 8.4.13です。 古いバージョンのPostgreでは正常に動いていました。
- ベストアンサー
- PostgreSQL
- TKM2005
- 回答数1
- 講座のある日を抽出したい
以下にある二つのテーブル(coursemaster, opencourses)を結合して 月ごとに講義があるかをo,xで一覧にして[期待結果]の様な表を抽出したいです。 coursemaster テーブル course_id | course_name 1 | 経理講義 2 | 財務講義 3 | 簿記講義 4 | 税理講義 opencoursesテーブル month course_id 200706 | 1 200706 | 3 200706 | 4 200707 | 4 200708 | 2 200708 | 4 [期待結果] 経理講義 財務講義 簿記講義 税理講義 200706 ○ × ○ ○ 200707 × × × ○ 200708 × ○ × ○ 以下の様なSQL文で表を結合してみたのですが 日付の値が重複されてしまい、期待通りの結果になりません。 誰かご教授いただけないでしょうか? SELECT month AS 開講日 ,CASE WHEN course_name='経理講義' THEN '○' ELSE '×' END AS 経理講義 ,CASE WHEN course_name='財務講義' THEN '○' ELSE '×' END AS 財務講義 ,CASE WHEN course_name='簿記講義' THEN '○' ELSE '×' END AS 簿記講義 ,CASE WHEN course_name='税理講義' THEN '○' ELSE '×' END AS 税理講義 FROM OpenCourses AS OC INNER JOIN CourseMaster AS CM ON OC.course_id = CM.course_id ORDER BY 1 ;
- ベストアンサー
- PostgreSQL
- yoshi2519
- 回答数1