Redshift 中“ADD COLUMN IF NOT EXISTS”的解决方法

2024-03-31

我正在尝试通过 Spark-Redshift 执行 S3 复制操作,并且希望在运行复制命令之前修改 Redshift 表结构,以便添加任何缺失的列(它们应该都是 VARCHAR)。

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

我试图查询pg_table_deftable 来检查该列是否存在,这可行,但我不确定如何将其与 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:如果不存在则添加列 https://stackoverflow.com/questions/42035068/redshift-add-column-if-not-exists,但是接受的答案并未提及如何实际实现这一目标。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redshift 中“ADD COLUMN IF NOT EXISTS”的解决方法 的相关文章

随机推荐