Redshift表未显示在架构表中?


12

在Redshift上,为什么我的表没有显示在以下查询中?如我运行的下一个查询所示,它确实存在。我想要一种列出架构的所有表的方法:

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
与您的问题无关,但与众不同不是功能。我建议您删除括号以避免混淆。再次考虑一下,您最好也删除与众不同的自身,因为在一个模式中不能有两个名称相同的表。
Lennart'3

结果是select schemaname, tablename from pg_table_def什么?
Lennart'3

您确定您的架构名称是“ db”,因为它看起来像是“数据库名称”吗?
Senthil

Answers:


13

Redshift中的PG_TABLE_DEF仅返回有关用户可见表的信息,换句话说,它将仅向您显示在变量search_path中定义的模式中的表。如果PG_TABLE_DEF没有返回预期的结果,请验证是否正确设置了search_path参数以包含相关的架构。

尝试这个 -

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

然后运行查询-

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

请修改您的答案,以提供比“执行此操作”更多的信息。
RLF

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.