在 Redshift 中查找给定 table 名称的架构名称

Find schema name given table name in Redshift

是否可以在 redshift 中检索给定 table 名称的架构名称,如果 table 未找到,return 会出错?

SELECT * FROM PG_TABLE_DEF WHERE tablename = 'tablename';

好像不行。

pg_table_def 让您只看到当前用户可见的 table——这大概不是您要搜索的 table 的情况。

您可以改用 pg_tables(这最初是一个 Postgre 目录视图,在 Redshift 中记录为 部分可访问):

select schemaname from pg_tables where tablename = 'mytable';

如果您的 table 是使用区分大小写的标识符创建的,您可能还会遇到一些大小写问题。在那种情况下:

where lower(tablename) = 'mytable';