繁体   English   中英

将生成的序列插入到Redshift表中

[英]Insert the generated sequence into the Redshift table

我遇到了 Redshift 的问题。 我正在生成一个日期序列,并希望将其嵌入到一个表中以使用该范围。 但是Redshift只支持在leader节点上生成。 无法在节点上插入数据。 我在文档中的任何地方都找不到有关如何将生成的序列插入表中的信息。 也许有人遇到过这样的问题,可以分享一下解决的经验吗? 我的顺序:

SELECT date '2019-12-31' + INTERVAL AS date_range
  FROM generate_series(1, (date '2041-01-01' - date '2020-01-01')) INTERVAL;

我的查询:

CREATE TABLE public.date_sequence AS (                
SELECT date '2019-12-31' + INTERVAL AS date_range
  FROM generate_series(1, (date '2041-01-01' - date '2020-01-01')) INTERVAL
);

我还尝试从 cte 插入数据。 将数据插入临时表。 结果是一样的:错误:Redshift 表不支持指定的类型或函数(每个 INFO 消息一个)。

在 amazon redshift 中,你不能用create table填充数据表,据我所知你必须使用插入,我的建议是这样的

INSERT INTO public.date_sequence
SELECT date '2019-12-31' + INTERVAL AS date_range
FROM generate_series(1, (date '2041-01-01' - date '2020-01-01')) INTERVAL;

Generate_series() 是 Redshift 上不受支持的 function。 虽然它仍然可以在领导节点上工作,但将您的解决方案基于这些功能并不是一个好主意。

更好且受支持的方法是使用递归 CTE - 请参阅https://docs.aws.amazon.com/redshift/latest/dg/r_WITH_clause.html

我在这个答案中写了一个制作一系列日期的例子—— 试图在 Redshift 中创建一个日期表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM