如果表名是红移的,是否可以检索模式名并在找不到表时返回错误? SELECT * FROM PG_TABLE_DEF WHERE tablename = 'tablename'; 似乎不起作用。
SELECT * FROM PG_TABLE_DEF WHERE tablename = 'tablename';
bcs8qyzn1#
pg_table_def 只允许您查看当前用户可见的表—这可能不是您要搜索的表的情况。你可以用 pg_tables 相反(这最初是一个postgre目录视图,在redshift中记录为部分可访问):
pg_table_def
pg_tables
select schemaname from pg_tables where tablename = 'mytable';
如果您的表是使用区分大小写的标识符创建的,那么您可能还面临一些大小写问题。在这种情况下:
where lower(tablename) = 'mytable';
1条答案
按热度按时间bcs8qyzn1#
pg_table_def
只允许您查看当前用户可见的表—这可能不是您要搜索的表的情况。你可以用
pg_tables
相反(这最初是一个postgre目录视图,在redshift中记录为部分可访问):如果您的表是使用区分大小写的标识符创建的,那么您可能还面临一些大小写问题。在这种情况下: