タグ付けされた質問 「postgresql-9.5」

特にPostgreSQLバージョン9.5の場合

1
トリガーを使用せずにPostgreSQLマテリアライズドビューを自動的に更新する
view_table_A外部データラッパーテーブルで名前が付けられたマテリアライズドビューを作成しましたtable_A。私が欲しいのは、に新しい挿入が行われるたびにビューが自動的に更新されるようにすることtable_Aです。トリガーを使用してこれを実行しようとしましたが、機能しませんでした。 トリガーを使用せずにマテリアライズドビューを自動的に更新することは可能ですか?

1
別のマシンをターゲットとするpg_dump中に「pg_catalog.tablename」を作成する権限が拒否されました
一部のテーブルを9.5ベータ2から9.4.4サーバーにダンプしようとしています。私が使用しているコマンドの形式はかなり標準的です: pg_dump -t table dbname | psql -h hostname -d dbname 私はPostgresユーザーを使用していますが、これはおそらく理想的ではないと思いますが、これらはどちらも私が使用する開発データ処理ボックスであり、以下のエラーに関連しています。最初に、エラーが発生しました エラー:認識されない構成パラメーター "row_security" これは、この機能が9.5で新しく追加されたために予想されます。そうです。Postgresの異なるバージョン間でpg_dumpを実行することはお勧めできませんが、非常にあいまいなバグに遭遇し、大きな静的データの量。 したがって、この恐ろしいハックを使用してrow_securityエラーを削除し、最初のエラーで停止をオンにします。 pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'| psql -v ON_ERROR_STOP=1 -h hostname -d dbname 私は今得ます: エラー:「pg_catalog.tablename」を作成する権限が拒否されました詳細:システムカタログの変更は現在許可されていません Postgresユーザー/ロールを使用することは望ましくないかもしれませんが、私の理解では、このような性質の権限の問題はないはずです。これは1回限りの操作であり、これらはライブサービスに接続されていないデータ処理開発ボックスであるため、理想的な企業データアクセスポリシーよりも好都合です。そうは言っても、これを正しく行う方法を理解し、今後これを回避することは良いことです。

1
テーブル全体のクエリで使用されていないパーティションのインデックスに関する統計
次の結合では、パーティションで結合を行う場合とテーブル全体で結合する場合の行の見積もりが大きく異なります。 CREATE TABLE m_data.ga_session ( session_id BIGINT NOT NULL, visitor_id BIGINT NOT NULL, transaction_id TEXT, timestamp TIMESTAMP WITH TIME ZONE NOT NULL, day_id INTEGER NOT NULL, [...] device_category TEXT NOT NULL, [...] operating_system TEXT ); すべてのパーティション: CREATE TABLE IF NOT EXISTS m_data.ga_session_20170127 ( CHECK (day_id = 20170127) ) INHERITS (m_data.ga_session); …

2
COMMITはPostgreSQL 9.5の匿名のplgpsql関数内で機能しますか?
匿名のplpgsqlコードブロック内のループを使用して、多数の大きなファイルをいくつかのテーブルにインポートしてパーティション分割します$do$。 $do$ BEGIN FOR yyyy in 2012..2016 THEN EXECUTE $$COPY table$$||yyyy||$$ FROM 'E:\data\file$$||yyyy||$$.csv DELIMITER ',' CSV;$$; END LOOP; END; $do$ LANGUAGE plpgsql このプロセス全体には約15時間かかります。ある時点でインポートエラーが発生した場合、すべてのインポートがロールバックされないことを願っています。 IIRC COMMITは、関数全体が単一のトランザクションとして扱われるため、ストアド関数内では機能しません。 のドキュメントから$do$ コードブロックは、パラメーターのない関数の本体であるかのように扱われ、voidを返します。解析と実行は1回です。 これは、全体$do$が1つのトランザクションであるため、ブロック内のコミットが機能しないことを想定しています。私は正しいですか?

1
PostgresでCASE式のインデックスを作成する方法
次のように、CASE式にインデックスを作成しようとしています CREATE TABLE test(i INT, j INT); CREATE UNIQUE INDEX test_index ON test(CASE WHEN i=1 THEN j END); このエラーを取得する: ERROR: syntax error at or near "CASE" LINE 1: CREATE UNIQUE INDEX test_index ON test(CASE WHEN i=1 THEN j ... ^ ********** Error ********** ERROR: syntax error at or near "CASE" …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.