Таблица 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
Не имеет отношения к вашему вопросу, но не является функцией. Я предлагаю вам убрать скобки, чтобы избежать путаницы. Во-вторых, вы могли бы также удалить его отдельно, поскольку в одной схеме не может быть двух таблиц с одинаковыми именами.
Леннарт
Каков результат select schemaname, tablename from pg_table_def:?
Леннарт
Вы уверены, что ваше имя схемы - «db», потому что оно выглядит как «имя базы данных»?
Сентил

Ответы:

13

PG_TABLE_DEF в Redshift возвращает только информацию о таблицах, которые видны пользователю, другими словами, он покажет вам только те таблицы, которые находятся в схемах, которые определены в переменной 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 будет возвращать информацию только для таблиц в схемах, которые включены в путь поиска. Ссылка

Билл С.Ю.
источник