Redshift中的解决方法"如果不存在则添加列#34;

时间:2017-03-08 10:48:48

标签: amazon-redshift ddl

我试图通过Spark-Redshift执行S3复制操作,我想在运行copy命令之前修改Redshift表结构,以便添加任何缺少的列(它们应该是所有VARCHAR )。

我能够做的是在运行副本之前发送SQL查询,所以理想情况下我会喜欢ALTER TABLE ADD COLUMN IF NOT NOT EXISTS column_name VARCHAR(256)。不幸的是,Redshift不支持ADD COLUMN IF NOT NOT EXISTS,所以我目前正在寻找解决方法。

我试图查询pg_table_def表以检查列是否存在,这是有效的,但我不确定如何使用ALTER TABLE语句将其链接。这是我查询的当前状态,我对完成上述任何建议持开放态度。

select 
    case when count(*) < 1 then ALTER TABLE tbl { ADD COLUMN 'test_col' VARCHAR(256) }
    else 'ok'
    end
from pg_table_def where schemaname = 'schema' and tablename = 'tbl' and pg_table_def.column = 'test_col'

此外,我已经看到了这个问题:Redshift: add column if not exists,但是接受的答案并未提及如何实现这一目标。

0 个答案:

没有答案