big*_*nbt 4 amazon-web-services amazon-redshift
我在让这个表创建查询工作时遇到了一些麻烦,我想知道我是否遇到了 redshift 的限制。
这就是我想要做的:我有需要在模式之间移动的数据,我需要为数据动态创建目标表,但前提是它们不存在。
以下是我知道有效的查询:
create table if not exists temp_table (id bigint);
Run Code Online (Sandbox Code Playgroud)
如果它不存在,这将创建一个表,并且它工作得很好。
create table temp_2 as select * from temp_table where 1=2;
Run Code Online (Sandbox Code Playgroud)
这样就创建了一个与前一个结构相同的空表。这也很好用。
但是,当我执行此查询时:
create table if not exists temp_2 as select * from temp_table where 1=2;
Run Code Online (Sandbox Code Playgroud)
Redshift 窒息并说 as 附近有错误(为了记录,我确实尝试删除“as”,然后它说 select 附近有错误)
我在 redshift 文档中找不到任何内容,此时我只是在猜测如何解决这个问题。这是我在红移中无法做到的吗?
我应该提一下,我绝对可以分离出有选择地创建表并用数据填充它的查询,我可能最终会这样做。我主要只是好奇是否有人可以告诉我该查询有什么问题。
编辑:
我不相信这是重复的。链接到的帖子提供了许多依赖于用户定义函数的解决方案……redshift 不支持 UDF。他们最近确实实现了一个基于 python 的 UDF 系统,但我的理解是它处于测试阶段,我们不知道如何实现它。
不过还是谢谢你看。
我在 redshift 文档中找不到任何内容,此时我只是在猜测如何解决这个问题。这是我在红移中无法做到的吗?
实际上,这种CREATE TABLE ... AS SELECTAND组合IF NOT EXISTS在 Redshift 中是不可能的(根据文档)。关于 PostgreSQL,从9.5 版开始就有可能。
在 SO 上,这里讨论了这一点:PostgreSQL: Create table if not exists AS。接受的答案提供了不需要任何 UDF 或程序代码的选项,因此它们也可能与 Redshift 一起使用。
| 归档时间: |
|
| 查看次数: |
3395 次 |
| 最近记录: |