【发布时间】:2017-06-21 11:07:35
【问题描述】:
以下works in Postgres 9.6 但不在 Redshift 中:
ALTER TABLE stats
ADD COLUMN IF NOT EXISTS panel_exit timestamp;
在 Redshift 中可以实现相同的功能吗?
【问题讨论】:
标签: sql amazon-redshift ddl
以下works in Postgres 9.6 但不在 Redshift 中:
ALTER TABLE stats
ADD COLUMN IF NOT EXISTS panel_exit timestamp;
在 Redshift 中可以实现相同的功能吗?
【问题讨论】:
标签: sql amazon-redshift ddl
没有与 ADD COLUMN IF NOT EXISTS 等效的 Amazon Redshift 命令。
要复制此功能,您的应用程序首先需要查询表元数据,然后决定是否发出 ADD COLUMN 命令。
【讨论】:
John 的回答让我朝着正确的方向前进,这是我发现在 Redshift 中检查列是否存在最有效的命令。
SELECT EXISTS(
SELECT * FROM pg_table_def
WHERE schemaname = '<my_schema_name>'
and tablename = '<my_table_name>'
and "column" = '<my_column_name>'
);
注意“列”两边需要双引号,因为column 也是关键字。
另外,如果您感兴趣的表不在public 模式中。您可能需要先修改搜索路径,以便按预期返回结果:
set SEARCH_PATH to <schema_name>;
有关详细信息,请参阅PG_TABLE_DEF AWS Docs。
【讨论】: