gpt4 book ai didi

sql - 如何仅在表存在时删除 Amazon Redshift 中的表

转载 作者:行者123 更新时间:2023-12-02 08:35:50 26 4
gpt4 key购买 nike

我正在尝试在 Amazon Redshift 中实现一个需要自动重新创建某些表的 ETL 过程,并且我需要脚本仅在这些表已存在于数据库中时才删除这些表。

是否有任何表目录可供我检查表是否存在?或者类似于 PSQL 中的 DROP TABLE IF EXISTS 的命令?

最佳答案

更新:

现在 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;

这是一个示例结果。

 schemaname | tablename 
------------+-----------
my_schema | access_log
my_schema | error_log
my_schema | vmstats_log
public | users
public | groups

有关详细信息,请参阅以下链接。

关于sql - 如何仅在表存在时删除 Amazon Redshift 中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21637330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com