在 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';
是否可以在 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';