¿La tabla Redshift no aparece en las tablas para el esquema?

12

En Redshift, ¿por qué mi tabla no aparece en la siguiente consulta? Definitivamente existe, como se muestra en la siguiente consulta que ejecuto. Quiero una forma de enumerar todas las tablas para un 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?
Algún chico
fuente
3
Sin relación con su pregunta, pero distinta no es una función. Te sugiero que elimines los paréntesis para evitar confusiones. Pensándolo bien, también podría eliminar el distintivo, ya que no puede haber dos tablas con el mismo nombre en un esquema.
Lennart
¿Cuál es el resultado de select schemaname, tablename from pg_table_def:?
Lennart
¿Está seguro de que su nombre de esquema es "db" porque parece un "nombre de base de datos"?
Senthil

Respuestas:

13

PG_TABLE_DEF en Redshift solo devuelve información sobre las tablas que son visibles para el usuario, en otras palabras, solo le mostrará las tablas que están en los esquemas que están definidos en la variable search_path. Si PG_TABLE_DEF no devuelve los resultados esperados, verifique que el parámetro search_path esté configurado correctamente para incluir los esquemas relevantes.

Prueba esto -

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

Luego ejecute su consulta -

mydb=# select tablename from pg_table_def where schemaname = 'db';
Kamlesh Gallani
fuente
Edite su respuesta para proporcionar más información que 'hacer esto'.
RLF
1

PG_TABLE_DEF solo devolverá información para tablas en esquemas que se incluyen en la ruta de búsqueda. Enlace

Bill SY
fuente