Ric*_*yes 2 sql amazon-web-services amazon-redshift
我正在尝试在Amazon Redshift中实现一个需要自动重新创建某些表的ETL过程,并且我需要脚本只有当这些表已经存在于数据库中时才删除它们.
是否有任何表格目录,我可以检查是否存在表格?或者类似于DROP TABLE IF EXISTSPSQL 的命令?
更新:
现在,Redshift支持带有IF EXISTS子句的DROP TABLE. http://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE.html
由于Redshift不支持DROP TABLE IF EXISTS,我们通过获取现有的表名来处理它.
要在Redshift上获取表名,我正在使用pg_table_def表.例如,我运行以下sql以获取除系统表之外的所有表名.
SELECT
schemaname, tablename
FROM
pg_table_def
WHERE
schemaname <> 'pg_catalog'
AND schemaname <> 'information_schema'
AND schemaname !~ '^pg_toast'
GROUP BY
schemaname,tablename;
Run Code Online (Sandbox Code Playgroud)
这是一个示例结果.
schemaname | tablename
------------+-----------
my_schema | access_log
my_schema | error_log
my_schema | vmstats_log
public | users
public | groups
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅以下链接.