Rotverschiebungstabelle wird in Tabellen für Schema nicht angezeigt?


12

Warum wird meine Tabelle bei Redshift in der folgenden Abfrage nicht angezeigt? Es existiert definitiv, wie die nächste Abfrage zeigt, die ich ausführe. Ich möchte eine Möglichkeit, alle Tabellen für ein Schema aufzulisten:

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
Unabhängig von Ihrer Frage, aber eindeutig ist keine Funktion. Ich schlage vor, Sie entfernen die Klammern, um Verwirrung zu vermeiden. Beim zweiten Gedanken können Sie es auch selbst entfernen, da es nicht zwei Tabellen mit demselben Namen in einem Schema geben kann.
Lennart

Was ist das Ergebnis von : select schemaname, tablename from pg_table_def?
Lennart

Sind Sie sicher, dass Ihr Schemaname "db" ist, da er wie ein "Datenbankname" aussieht?
Senthil

Antworten:


13

PG_TABLE_DEF in Redshift gibt nur Informationen zu Tabellen zurück, die für den Benutzer sichtbar sind. Mit anderen Worten, es werden nur die Tabellen in den Schemas angezeigt, die in der Variablen search_path definiert sind. Wenn PG_TABLE_DEF die erwarteten Ergebnisse nicht zurückgibt, stellen Sie sicher , dass der Parameter search_path so eingestellt ist, dass er die relevanten Schemas enthält.

Versuche dies -

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

Führen Sie dann Ihre Abfrage aus -

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

Bitte bearbeiten Sie Ihre Antwort, um mehr Informationen als "Tun Sie dies" bereitzustellen.
RLF

1

PG_TABLE_DEF gibt nur Informationen für Tabellen in Schemas zurück, die im Suchpfad enthalten sind. Verknüpfung

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.