Redshift:如果不存在则添加列

时间:2017-02-04 00:19:07

标签: sql amazon-redshift ddl

以下SystemJS.registerDynamic or SystemJS.set但不在Redshift中:

ALTER TABLE stats
    ADD COLUMN IF NOT EXISTS panel_exit timestamp;

可以在Redshift中实现相同的功能吗?

2 个答案:

答案 0 :(得分:5)

没有相当于ADD COLUMN IF NOT EXISTS的Amazon Redshift命令。

请参阅:ALTER TABLE documentation

要复制此功能,您的应用程序首先需要查询表元数据,然后决定是否发出ADD COLUMN命令。

答案 1 :(得分:0)

John的回答让我朝着正确的方向前进,这是我在Redshift中发现最好的命令来检查列的存在。

SELECT EXISTS(
    SELECT * FROM pg_table_def
    WHERE schemaname = '<my_schema_name>'
    and tablename = '<my_table_name>'
    and "column" = '<my_column_name>'
);

请注意&#34;列&#34;周围的双引号是必需的,因为column也是关键字。

此外,如果您感兴趣的表不在public架构中。您可能需要先修改搜索路径,以便按预期返回结果:

set SEARCH_PATH to <schema_name>;

有关详细信息,请参阅PG_TABLE_DEF AWS Docs