A tabela Redshift não aparece nas tabelas do esquema?

12

No Redshift, por que minha tabela não aparece na consulta a seguir? Definitivamente existe, como mostra a próxima consulta que eu corro. Eu quero uma maneira de listar todas as tabelas para um esquema:

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?
Um cara
fonte
3
Não relacionado à sua pergunta, mas distinto não é uma função. Eu sugiro que você remova os parênteses para evitar confusão. Pensando bem, você também pode remover ele mesmo distinto, pois não pode haver duas tabelas com o mesmo nome em um esquema.
Lennart
Qual é o resultado de select schemaname, tablename from pg_table_def:?
Lennart
Você tem certeza de que o nome do esquema é "db", porque parece um "nome do banco de dados" ?.
Senthil

Respostas:

13

PG_TABLE_DEF no Redshift retorna apenas informações sobre tabelas visíveis ao usuário; em outras palavras, mostrará apenas as tabelas que estão nos esquemas definidos na variável search_path. Se PG_TABLE_DEF não retornar os resultados esperados, verifique se o parâmetro search_path está definido corretamente para incluir os esquemas relevantes.

Tente isto -

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

Em seguida, execute sua consulta -

mydb=# select tablename from pg_table_def where schemaname = 'db';
Kamlesh Gallani
fonte
Edite sua resposta para fornecer mais informações do que 'faça isso'.
RLF
1

PG_TABLE_DEF retornará apenas informações para tabelas em esquemas incluídos no caminho de pesquisa. Ligação

Bill SY
fonte