web-dev-qa-db-fra.com

Redshift: les colonnes de la table se trouvent dans information_schema.columns mais pas dans pg_catalog.pg_table_def

Je crée une table dans Redshift. Lorsque j'ai essayé de rechercher la définition de la table, je récupère les résultats de information_schema.columns en exécutant la requête suivante:

select * from information_schema.columns 
where table_name = 'table' and table_schema='schema'

Cependant, lorsque j'exécute une requête sur pg_catalog.pg_table_def, Je ne récupère aucun résultat.

select * from pg_catalog.pg_table_def 
where tablename = 'table' and  schemaname = 'schema'

Quelqu'un pourrait-il m'aider à comprendre pourquoi cela se produit? La table est créée et appartient au compte que j'utilise.

3
Lee

Vérifier show search_path; pour vous assurer que vous êtes sur le chemin actuel où la table a été créée. Comme indiqué sur le redshift AWS d'origine documentation .

PG_TABLE_DEF ne renvoie que des informations sur les tables visibles par l'utilisateur.

pour obtenir ce que vous voulez, vous devez exécuter

set search_path to '$user', '<#your_schema#>'; select * from pg_catalog.pg_table_def where tablename = '<#your_table#>';

J'espère que cela pourra aider.

3
Joao Caxias