【问题标题】:Redshift: add column if not existsRedshift:如果不存在则添加列
【发布时间】: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


    【解决方案1】:

    没有与 ADD COLUMN IF NOT EXISTS 等效的 Amazon Redshift 命令。

    见:ALTER TABLE documentation

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

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        猜你喜欢
        • 2018-02-02
        • 2019-03-12
        • 1970-01-01
        • 1970-01-01
        • 2021-05-19
        • 1970-01-01
        • 2014-03-17
        • 1970-01-01
        相关资源
        最近更新 更多