Redshiftテーブルがスキーマのテーブルに表示されませんか?


12

Redshiftで、次のクエリにテーブルが表示されないのはなぜですか?私が実行する次のクエリが示すように、それは間違いなく存在します。スキーマのすべてのテーブルを一覧表示する方法が必要です。

mydb=# select distinct(tablename) from pg_table_def where schemaname = 'db';
 tablename 
-----------
(0 rows)

mydb=# \d db.some_table
                    Table "db.some_table"
     Column      |            Type             | Modifiers 
-----------------+-----------------------------+-----------
...correct info shows up here...
...but nothing showed up above?

3
あなたの質問とは無関係ですが、distinctは関数ではありません。混乱を避けるために、括弧を削除することをお勧めします。1つ目のスキーマに同じ名前のテーブルが2つ存在することはできないので、考え直して、それ自体を個別に削除することもできます。
Lennart

結果は何select schemaname, tablename from pg_table_defですか?
Lennart、2015年

「データベース名」のように見えるので、スキーマ名は「db」になっていますか?
Senthil、2015

回答:


13

RedshiftのPG_TABLE_DEFは、ユーザーに表示されるテーブルに関する情報のみを返します。つまり、変数search_pathで定義されているスキーマにあるテーブルのみが表示されます。PG_TABLE_DEFが予期した結果を返さない場合は、search_pathパラメータが適切に設定され、関連するスキーマが含まれていることを確認してください

これを試して -

mydb=# set search_path="$user",db;

次に、クエリを実行します-

mydb=# select tablename from pg_table_def where schemaname = 'db';

回答を編集して、「これを行う」よりも多くの情報を提供してください。
RLF、

1

PG_TABLE_DEFは、検索パスに含まれているスキーマ内のテーブルの情報のみを返します。 リンク

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.