PostgreSQL

全1196件中41~60件表示
  • postgresの関数内で変数からの時間の足し算

    postgresの関数内で変数からの時間の足し算の仕方を教えてください。 DECLARE result timestamp with time zone; l_minuteinteger := 15; BEGIN result := current_timestamp + '15 minute'; RETURN result; END; このように 直接「 + '15 minute'」を足す方法は分かるのですが、 例えば、上記のユーザー変数l_minuteを使っての足し算がの仕方が分かりません。 よろしくお願いします。

  • Postgreの日付関数に関して教えてください。

    Postgreの日付関数に関して教えてください。 表9.30 日付/時刻関数の例を実行していますが、 make_ で始まる関数がすべて失敗します。 PostgreSQL 9.6.2文書 9.9. 日付/時刻関数と演算子 https://www.postgresql.jp/document/9.6/html/functions-datetime.html 表9.30 日付/時刻関数 select age(timestamp '2001-04-10', timestamp '1957-06-13') select age(timestamp '1957-06-13')  : : select make_date(2013, 7, 15) select make_interval(days => 10) select make_time(8, 15, 23.5) select make_timestamp(2013, 7, 15, 8, 15, 23.5) select make_timestamptz(2013, 7, 15, 8, 15, 23.5) make_dateの失敗のメッセージ ERROR: function make_date(integer, integer, integer) does not exist LINE 1: select make_date(2013, 7, 15) ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. ********** エラー ********** ERROR: function make_date(integer, integer, integer) does not exist SQLステート:42883 ヒント:No function matches the given name and argument types. You might need to add explicit type casts. 文字:8 何が悪いのでしょうか。

  • ポスグレで指定した中で最大のレコードを1件取得する

    ポスグレで指定した中で最大のレコードを1件取得する方法を教えてください。 下記の項目を持つテーブルがあるとします。 ・部署 ・氏名 ・日付 ・連番 ・内容 KEY(部署,氏名,日付,連番) 部署と氏名を指定した中で直近のレコードを1件だけ取得したいです。 例えば select * from テーブル where 部署 = 値 and 氏名 = 値 order by 日付 desc ,連番 desc で頭の1件を抜ければよいのですが、 limit 1を指定しても、どうやらorder byより先にlimitがかかっているようで、並び替えた後の最初の1件をとれません。 また、 ソート項目が1つだけなら select * from テーブル where 部署 = 値 and 氏名 = 値 and 日付 = (select max(日付) from テーブル t1 where t1.部署 = 値 and t1.氏名 = 値) という事もできますが、 日付が最大の中での連番が最大というのはさらに一手間必要です。 何か良い方法はありませんか? 全件持ってきた後にアプリ側で最初の1件だけ使うのではなく、postgres内で1件にしてアプリ側に渡したいです。

  • sudo createdbをnopasswdで実行

    sudoをnopasswdで設定しているにも関わらずpostgresユーザーで sudo createdb を行うとパスワードを聞いてきます。 sudo 設定内容 postgres ALL=NOPASSWD: ALL 実際に行ったコマンド -bash-4.1$ sudo -u hogehoge /usr/bin/createdb -U hogehoge -W hogehoge -E UTF-8 -D hogehoge -w [sudo] password for postgres: nopasswdで実行出来れば最終的にcronでの定期実行を考えています。 環境は以下の内容です。 CentOS-6.2-x86_64 PostgreSQL 9.3.16 よろしくお願い致します。

    • kozax05
    • 回答数2
  • pgAdmin4はまだ使い物になりませんか?

    pgAdmin4はまだ使い物になりませんか? postgresql-9.6.2-1-windows-x64.exeをインストールし、pgAdmin4を使ってみました。 日本語化する方法もよくわかりませんでした。 そのまま英語バージョンで使おうとしましたが、動作が遅すぎるし、そのままフリーズする事もしばしば。 右クリックから動かなかったりする機能も多く、結局、pgAdmin IIIを入れました。 取ってきたヤツが悪かったのですか? まだ使い物にならないレベルなのですか?

  • postgresのtimestampの『witho

    postgresのtimestampの『without time zone』と『with time zone』の違いを教えてください。 timestamp [ (precision) ] without time zone timestamp [ (precision) ] with time zone PostgreSQL 9.6.1文書を読んでみましたがイマイチ理解できていません。 https://www.postgresql.jp/document/9.6/html/datatype-datetime.html#datatype-datetime-input ざっくり何が違って、どういう用途で使い分けるのか教えてください。

  • postgresのストアドファンクションでエラーの

    postgresのストアドファンクションでエラーの拾い方を教えてください。 insertして重複したらアップデートに切り替えるというサンプルをよく見かけます。 DECLARE BEGIN insert文 RETURN TRUE; EXCEPTION WHEN unique_violation THEN update文 END; それと同じノリで、何かしらのエラーがあった時に、 『RETURN FALSE;』するか、もしくはエラーコードをそのまま拾って返すというようなサンプルが欲しいです。 DECLARE BEGIN 何かしらのSQL RETURN TRUE; EXCEPTION WHEN すべてのエラー THEN RETURN FALSE; END; DECLARE BEGIN 何かしらのSQL RETURN TRUE; EXCEPTION WHEN すべてのエラー THEN RETURN エラーコード; END;

  • postgresqlのトランザクションについて

    開発環境(centOS、apatch、php、postgresql) postgrsqlで「current transaction is aborted, commands ignored until end of transaction block」 のエラーが出てしまいました。 ・複数テーブルに対してinsertを行っています。 ・複数tableのinsert中のどこかでエラーになった場合、全tableをrollbackしたいです。 ・複数テーブルのうち、ひとつのtableでは5回insertを行っています。   for文でまわしているのですが、ここで2回目のinsertの時に   上記のエラーになってしまいます。 で、トランザクション(begin、rollback、commit)を全てはずしたところ、全てのtableで正常にinsertできました。 上記のエラーを調べてみても rollbackしていない・・・みたいなことしか調べられませんでした。 エラーにはなっていないのでrollbackはしないし、ここでcommitしてしまうと、次のinsertなどでエラーになった時、rollbackできなくなってしまうし。。。 上記のエラーをなくすために どのような対策をすればいいのかアドバイスをお願いいたします!

    • jg1wjz
    • 回答数3
  • 文字列をバイト単位で取り出したい

    PostgreSQL 9.5.2を使用しています。 「ABCde」を先頭5バイト分で「AB」と取り出したいです。 但し、例のように「C」が中途半端に範囲にかかるときは、取り出さないようにしたい のですが、どのようにすれば、可能なのでしょうか。 お忙しい中、申し訳ありませんが、ご教授頂けると助かります。 宜しくお願いいたします。

  • PostgreSQLの同期・非同期について

    社内で稼働しているシステムの更新で 今までオラクルを使用していましたが、 PostgreSQLに移行すべく, 2台のサーバーでレプリケーションするつもりでいます。 ポスグレにはレプリケーションで、同期と非同期がありますが、 どちらも一長一短があり、迷っています。 製造工場のシステムに使用している為、 クライアント端末からサーバーへのアクセスは、 1日20時間程度。 障害時の復旧は、長くても2時間程度以内が希望です。 1日の追加行数は7千行程度。 2台のサーバーは物理的に分かれておりますが、 同じ部屋で稼働。 OS:WindowsServer 2012 R2 DB:PostgreSQL9.6 現行のオラクルは、同期モードがライセンス上できませんでしたので、 非同期で運用していますが、 ポスグレはどちらも選べますので、迷います。 同期・非同期 どちらにしたら良いと思われますか? 他に良い方法があるようでしたらご教授ください。

    • near0
    • 回答数1
  • pg_dump スキーマ バックアップでエラー

    スキーマ単位でバックアップをしたいと思ってます。 が・・ pg_dumpにてあるスキーマを指定して実行すると「PG_DUMP: no matching tables were found」のエラーが表示されます。 【環境】 PostgreSQL :9.6.0 サーバー :Windows2008 R2 クライアント:Windows7 データベース:postgres ユーザ :postgres -- スーパユーザ スキーマ :SCM -- 注意 大文字 【コマンド】エラー時 パターンA PG_DUMP -h 192.168.xxx.xxx -U postgres -p 5432 -f D:\POSGRESQL_DUMP\SCM_DUMP.DAT -n SCM -Fc postgres 【コマンド】エラー時 パターンB (スキーマに”をつける) PG_DUMP -h 192.168.xxx.xxx -U postgres -p 5432 -f D:\POSGRESQL_DUMP\SCM_DUMP.DAT -n "SCM" -Fc postgres ちなみに -n スイッチを外すと正常に実行されます。 【コマンド】正常時(-n SCMを外す) PG_DUMP -h 192.168.xxx.xxx -U postgres -p 5432 -f D:\POSGRESQL_DUMP\SCM_DUMP.DAT -Fc postgres どうか、お助け下さい。よろしくお願いします。

  • 大容量のCSVファイルをインポートするには。

    お世話になります。 Windows版のPostgreSQLをインストールしてCSVファイルを読み込ませようとしていますが途中でエラーが発生してしまい困っています。 取り込んでいるCSVファイルの件数は約65万件です。 その際に実行している下記のコマンドは以下の通りです。 SET client_encoding TO 'SJIS'; COPY T_SAMPLE FROM 'C:\test.csv' WITH CSV; また途中で発生したエラーの内容は以下の通りです。 ERROR: メモリ不足です DETAIL: 1073708532バイトを持つ文字列バッファを65534バイト多く、大きくすることができません。 CONTEXT: T_SAMPLEのCOPY。行番号 231916 どのようにしたら大容量のCSVファイルをデータベースにインポートする事ができるのでしょうか。 大変、申し訳ありませんがどうか私を助けて下さい。 些細な事でも何でも構いませんのでアドバイスいただけませんでしょうか。 私の環境のOSは「Windows Vista Ultimate」でPostgreSQLは「PostgreSQL 9.5.4」です。 何卒、宜しくお願いします。では、失礼します。

  • PostgresqlのILIKEについて

    現在、PostgresqlのILIKEを用いて、あるDBに検索をかけています、 半角英字の場合は検索でうまくいくのですが、全角文字で検索をかけるとILIKEでうまく検索をかけてくれません。(動作がLIKEと同じ)。 他のDBだとILIKEは使えるのですが、検索をしたいDBではILIKEがつかえません。 これはDBのロケールの問題なのでしょうか? 大変お手数ですが、ご教授お願い致します。 検索対象DBのロケール:C Postgresqlのバージョン:9.3.13

  • 自動採番について

    お世話になります。 データベースのシーケンスによるシリアル型について質問があります。 例えば下記のような商品テーブルがあるとします。 ・商品コード ・商品名 ・価格 ・備考 ※商品コードは重複しない値(一意)を格納。 このようなマスタを作成する際にシーケンスによるシリアル型による自動採番のフィールドを指定した方がいいのでしょうか。またシーケンスによるシリアル型をどのような場合に使うのが一般的なのでしょうか。 大変、お手数をお掛けしますが説明していただけませんでしょうか。 くだらない質問ですみませんが宜しくお願いします。

  • postgresql-CSV生成時の文字化け

    お世話になります。 実行環境:  OS:Win8.1 64bit  PostgreSQLのバージョン:9.5.3-1  client_encoding:SJIS  データベースエンコーディング:EUC_JP C C 以上のような環境でローカルフォルダにCSVを出力することを 考えていますが、ファイル名に日本語が含まれるCSVを出力 すると文字化けします。 正常なケース:  COPY (select * from db) TO 'D:\pos\hoge.csv' (FORMAT csv); 異常なケース:  COPY (select * from db) TO 'D:\pos\ほげほげ.csv' (FORMAT csv);  →ファイル名が文字化け。   ただし、レコードの中身は文字化けせず出力できている。 文字化けせずに日本語ファイルを出力できるのが理想です。 対処法はありますでしょうか? --そもそもCOPYコマンドのファイル名のエンコードはどこで設定するのでしょうか?

  • VPSにpostgresインストールで気を付ける事

    VPSのLinuxにpostgresqlをインストールする上でセキュリティ上で気を付ける事を教えて下さい。 postgresqlの環境をセットアップしたくて、レンタルVPSの無料期間を利用し試しに構築してみました。 すると、僅か数時間で乗っ取られ、サーバーの管理者から連絡があり、サーバーを止められました。 VPSのOSはLinuxでした。 VPS上のpostgresqlをインストールして、DBやテーブルを作り、pgadmin3でPCから弄ったり、 ダンプを取ったり、取ったダンプをリストアしたり、 firewallを起動させて使えなくしたり、 firewallにpostgresqlの通信を許可したり、 環境構築を一通りやってそのまま放置したところ、翌日には乗っ取られていてサーバーを止められました。 原因は、postgresqlをインストールすると生成されるlinuxユーザー(postgres)のパスワードが脆弱だった事です。 いろんな操作を試したかっただけなので、パスワードはテキトーでした。 postgresとか、passwordとかそういう類のパスワードでした。 容易に推測され、 sshでログインされ、 postgresでパイソンで作ったマルウェアをインストールされ、 cronにマルウェアを起動するスケジュールを組まれていました。 linuxユーザーのpostgres、ロールのpostgresともに複雑なパスワードにしなければ速攻でやられる事は分かりました。 そもそも、postgresユーザーで直接ログインする必要もないので、nologinにしといた方が良いのでしょうか? それ以外を含め、セキュリティ上で気を付けるべき事を教えて下さい。 なお、この質問は「VPSなど外部サーバーのLinuxにpostgresqlをインストールする上で」に限定しています。

    • ngwave
    • 回答数1
  • PostgreSQLのタイムアウトについて

    VB.NETとPostgreSQLで社内システムを作っています。 更新クエリを実行すると15秒くらいでタイムアウトしてしまいます。 (エラーコードはメモを持ち帰るのを忘れたため覚えておりません…が、割と急いでいるので質問させて頂いてます) Statement_Timeoutはいじっておらず、値は0のままです。 プロバイダはnpgsqlです。 タイムアウトしないようにするにはどうすればいいでしょうか。 アドバイスお願いいたします。

  • postgresqlトリガー

    現在、保守対応を行っているシステムにて、 不明点があり、皆様にご助言を頂ければ幸いで御座います。 ■使用環境 "PostgreSQL 8.1.23 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-51)" ■現状 update tbl_result_interview set {割愛} where {割愛} を実行すると mst_exam_resultというテーブルも更新がされます。 恐らくトリガーが引かれているのかと考えているのですが、 実態が確認出来ず苦慮しております。 =================================================== \d+ tbl_result_interview Column | Type | Modifiers | Description --------------+-----------------------------+-------------- {割愛} Indexes: "tbl_result_interview_pkey" PRIMARY KEY, btree (app_id) Foreign-key constraints: "tbl_result_interview_app_id_fkey" FOREIGN KEY (app_id) REFERENCES tbl_app_exam(app_id) Has OIDs: no =================================================== \d+ mst_exam_result Column | Type | Modifiers | Description --------+------------------------+-----------+----------------------------------------- {割愛} Indexes: "mst_exam_result_pkey" PRIMARY KEY, btree (code) Has OIDs: no =================================================== ちなみにpgadminで確認しても、トリガ関数(0)と出ており、 トリガはなさそうです。 関数は数個ありますがmst_exam_resultに更新処理を行う様な記述は見れません。 update tbl_result_interview set {割愛} where {割愛}により、 mst_exam_resultが更新されるのですが、 実態がわからず、確認項目でも構いませんので、 ご助言、ご指摘頂ければ幸いで御座います。 以上、引き続き宜しくお願い致します。

  • postgresqlにて「psql」コマンド

    postgresqlを使用してます。 既存をリプレイスしたく、 VMでバージョンを上げて試してます。 引き継いだ案件で今までほっておいたのですが、 設定がわからず、確認箇所があれば、 ご教示頂きたいです。 □既存 (1)あるユーザでサーバにログインします。 (2)psqlのみでDBに接続します。 ここで、伺いたいのですが、 psqlのみの場合、ログインに(1)のあるユーザが適用されるかと考えてましたが、 実態は別のユーザー。 ※ちなみに-Uで別のユーザーを指定してみましたが同じ挙動です。 お伺いしたい事は以下です。その下は補足です。 「-U省略と別ユーザを紐づけている箇所がわかりません。思い当たる箇所があればご教示頂きたいです。」 ~/.pgpassに設定があったので、それかと考えもしましたが、 この設定はパスワードを省略出来る??と記載があり、ユーザー名までは違う? 新しくVMで作った方に入れてみても、[psql]のみではユーザー名は変更出来ませんでした。 psqlのみの時、-Uがどこか連携する箇所あればご教示頂きたいです。 どうして別ユーザーで入れるのかわからずとん挫しております故、 何卒宜しくお願い致します。

  • PostgreSQLのリプリケーション アーカイブ

    実行環境  OS:win7 64bit     プライマリーとスタンバイをローカルLANで接続  PosgreSQLのバージョン:9.4 以下のように設定しました。 A.プライマリのpostgres.confを修正    1.wal_level=hot_standby    2.max_wal_sender=3    3.archive_mode=off    4・wal_keep_segment=8 B.basebackupを行う C.スタンバイの設定    1.recovery.conf       standby_mode='on'       primary_conninfo='host=192.168.1.100 port=5432 user=repli possword=xxx'    2.postgres.conf       hot_stndby=on 以上のように設定すると、リプリケーションが可能ですが、 これをアーカイブモードにすると、COPYコマンドでエラーが発生します。 プライマリサーバーにアーカイブ場所を設定すればエラーは出ないのですが、 スタンバイ側に設定するとエラーになります。 アーカイブのコマンドは  プライマリのpostgres.confに   archive_mode=on   archive_command='copy "c:\\postgresql\\data\\%p" "\\standbyPC\\srch\\%f""' と設定しています。 この設定でサービスを起動すると、以下のようなLOGが出力されます。 指定されたパスが見つかりません。 2015-08-16 07:48:25 JST LOG: アーカイブコマンドがリターンコード 1で失敗しました 2015-08-16 07:48:25 JST 詳細: 失敗したアーカイブコマンドは次のとおりです: copy "c:\PostgreSQL\data\pg_xlog\000000010000000000000019" "\standbyPC\PostgreSQL\arch\000000010000000000000019"  コマンドプロンプトから実行すると、正常にコピーされます。 どこが間違っているのでしょうか?