La table Redshift n'apparaît pas dans les tables du schéma?

12

Sur Redshift, pourquoi ma table n'apparaît-elle pas dans la requête suivante? Il existe définitivement, comme le montre la prochaine requête que j'exécute. Je veux un moyen de lister toutes les tables pour un schéma:

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?
Un gars
la source
3
Sans rapport avec votre question, mais distinct n'est pas une fonction. Je vous suggère de supprimer les parenthèses pour éviter toute confusion. À la réflexion, vous pouvez tout aussi bien supprimer distinct it self car il ne peut pas y avoir deux tables portant le même nom dans un même schéma.
Lennart
Quel est le résultat de select schemaname, tablename from pg_table_def:?
Lennart
Êtes-vous sûr que votre nom de schéma est "db", car il ressemble à un "nom de base de données"?.
Senthil

Réponses:

13

PG_TABLE_DEF dans Redshift ne renvoie que des informations sur les tables visibles par l'utilisateur, en d'autres termes, il ne vous montrera que les tables qui se trouvent dans le ou les schémas définis dans la variable search_path. Si PG_TABLE_DEF ne renvoie pas les résultats attendus, vérifiez que le paramètre search_path est correctement défini pour inclure le ou les schémas appropriés.

Essaye ça -

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

Exécutez ensuite votre requête -

mydb=# select tablename from pg_table_def where schemaname = 'db';
Kamlesh Gallani
la source
Veuillez modifier votre réponse pour fournir plus d'informations que «faire ceci».
RLF
1

PG_TABLE_DEF renverra uniquement des informations pour les tables des schémas inclus dans le chemin de recherche. Lien

Bill SY
la source