La tabella Redshift non viene visualizzata nelle tabelle per lo schema?


12

Su Redshift, perché la mia tabella non viene visualizzata nella seguente query? Esiste sicuramente, come mostrato dalla prossima query che eseguo. Voglio un modo per elencare tutte le tabelle per uno schema:

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
Non correlato alla tua domanda, ma distinto non è una funzione. Ti suggerisco di rimuovere le parentesi per evitare confusione. A pensarci bene potresti anche rimuovere distinto se stesso poiché non ci possono essere due tabelle con lo stesso nome in uno schema.
Lennart,

Qual è il risultato di select schemaname, tablename from pg_table_def:?
Lennart,

Sei sicuro che il tuo nome-schema sia "db", perché sembra un "nome di database" ?.
Senthil,

Risposte:


13

PG_TABLE_DEF in Redshift restituisce solo informazioni sulle tabelle che sono visibili all'utente, in altre parole, ti mostrerà solo le tabelle che si trovano negli schemi che sono definite nel variabile search_path. Se PG_TABLE_DEF non restituisce i risultati previsti, verificare che il parametro search_path sia impostato correttamente per includere gli schemi pertinenti.

Prova questo -

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

Quindi esegui la query:

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

Modifica la tua risposta per fornire maggiori informazioni rispetto a "fai questo".
RLF,

1

PG_TABLE_DEF restituirà informazioni solo per le tabelle negli schemi inclusi nel percorso di ricerca. collegamento

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.