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?

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';

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.