Amazon web services 在红移中,如何将CTA和;“如果不存在”;条款

Amazon web services 在红移中,如何将CTA和;“如果不存在”;条款,amazon-web-services,amazon-redshift,Amazon Web Services,Amazon Redshift,我在让这个表创建查询正常工作时遇到了一些问题,我想知道我是否遇到了红移的限制 以下是我想做的: 我有需要在模式之间移动的数据,我需要动态地为数据创建目标表,但前提是它们不存在 以下是我知道有效的查询: create table if not exists temp_table (id bigint); 这将创建一个表,如果它还不存在,并且工作正常 create table temp_2 as select * from temp_table where 1=2; 这样就创建了一个与前一个表具

我在让这个表创建查询正常工作时遇到了一些问题,我想知道我是否遇到了红移的限制

以下是我想做的: 我有需要在模式之间移动的数据,我需要动态地为数据创建目标表,但前提是它们不存在

以下是我知道有效的查询:

create table if not exists temp_table (id bigint);
这将创建一个表,如果它还不存在,并且工作正常

create table temp_2 as select * from temp_table where 1=2;
这样就创建了一个与前一个表具有相同结构的空表。这也很好

但是,当我执行此查询时:

create table if not exists temp_2 as select * from temp_table where 1=2;
Redshift阻塞并表示as附近有错误(根据记录,我确实尝试删除了“as”,然后它表示select附近有错误)

我在红移文档中找不到任何东西,现在我只是在猜测如何解决这个问题。这是我在红移时不能做的吗

我应该提到,我完全可以分离出有选择地创建表并用数据填充它的查询,我可能最终会这样做。我只是好奇是否有人能告诉我这个问题出了什么问题

编辑:

我不相信这是重复的。链接到的帖子提供了许多依赖于用户定义函数的解决方案…redshift不支持UDF。他们最近确实实现了一个基于python的UDF系统,但我的理解是它是beta版的,我们不知道如何实现它

不过谢谢你的关注

我在红移文档中找不到任何东西,现在我 只是猜测如何解决这个问题。这是我不能做的吗 红移

实际上,
创建表的组合。。。AS选择
,如果不存在,则不能在红移(per)中选择。关于PostgreSQL,这是可能的,因为版本9.5


因此,这里将对此进行讨论:。接受的答案提供了不需要任何UDF或程序代码的选项,因此它们也可能与红移一起工作。

可能的重复对我来说不象重复。他们说该功能在Postgres9.1中已经修复,但我们使用的是红移,它是Postgres早期版本的分支。此外,链接文章中提供的解决方案依赖于UDF,而红移不支持UDF。