Postgresで他のセッションの一時テーブルにアクセスする方法はありますか?
-
16-10-2019 - |
質問
(ローカル)Postgresデータベースを使用し、いくつかの情報を一時テーブルに保存するWindowsアプリケーションを使用しています。一時的なテーブルを見たいのですが、pgadminとdbvisは教えてください。 ERROR: cannot access temporary tables of other sessions
データを照会しようとするとき。スキーマとテーブルの権限を変更しようとしましたが、プログラム自体と同じユーザーを持つデータベースにアクセスしていても、これは役に立たなかったようです(少なくともDBVIで)。データベース内のすべてのセッションへの「ルート」アクセスを可能にするデータベースに変更できる設定はありますか?
解決
他のセッションで一時テーブルへのアクセスがないことは、許可の問題ではなく、設計の技術的な制限です。 PostgreSQLバックエンド できません 一時的なテーブルに対して同時アクセスを許可するための通常のハウスキーピングがないため、別のバックエンドの一時テーブルにアクセスしてください。
9.2では、を使用する必要があります UNLOGGED
代わりにテーブル。これは他のセッションから見ることができますが、一時的なテーブルのパフォーマンスの利点のほとんどを保持します。
他のヒント
これがあなたを助けることができるかどうかはわかりませんが、試してみることができます。
次のシステムカタログテーブルクエリは、データベース内の他のセッションで作成されたすべての一時テーブルをリストできるはずです。
pn.nspname、pc.relname pg_class pc、pg_namespace pn from pc.relnamespace = pn.oid and pc.relname ilike 'your_temp_table_name';を選択します。
PostgreSqlごと doc, Temporary tables exist in a special schema
通常、名前が付けられて作成されます pg_temp_xxx
. 。だから、使用 schemaname
.relationname
上記のクエリから、一時テーブルを照会できるはずです。ここで見ることができるように、一時テーブルはスキーマ資格のある名前で参照されます。
例: select * from pg_temp_20.your_temp_table_name