Redshift中的存储过程将数据加载到表中
Posted
技术标签:
【中文标题】Redshift中的存储过程将数据加载到表中【英文标题】:Stored procedure in Redshift to load data into a table 【发布时间】:2020-04-11 21:19:07 【问题描述】:我有一个 sql 查询,它从 4 个表中获取数据,我想使用这个脚本将数据加载到 Redshift 中的另一个表中,我正在尝试创建一个存储过程,但我不断收到错误。下面是我的脚本。
CREATE or replace PROCEDURE ABC1 (SOURCE_SYS CHAR(3), FILE_NBR BIGINT)
AS
BEGIN
INSERT INTO SP1 (SOURCE_SYS,FILE_NBR)
VALUES(
SELECT 'WT', PK_ORDERNO
FROM table_1
JOIN table_2 ON table_1.file_nbr = table_2.file_nbr
LEFT OUTER JOIN table_3 ON table_2.file_nbr = table_3.file_nbr
)
END;
【问题讨论】:
语法是INSERT INTO SP1(...) SELECT ... FROM ...
(所以没有VALUES()
)。不过,目前还不清楚您要做什么。看起来查询实际上并没有使用过程的参数。请提供样本数据、期望的结果以及您的目的说明。
我有 2 个表表 1 和表 2。现在我创建了另一个表 Tablenew。这个 tablenew 将从连接 table1 和 table2 的 sql 语句中获取数据。现在我想创建一个 sp 将数据插入 tablenew。
【参考方案1】:
你应该这样做:
CREATE OR REPLACE PROCEDURE ABC1 (SOURCE_SYS CHAR(3),FILE_NBR BIGINT)
AS $$
BEGIN
INSERT INTO SP1 (SOURCE_SYS,FILE_NBR)
SELECT 'WT',PK_ORDERNO FROM
table_1 join table_2 on table_1.file_nbr=table_2.file_nbr
left outer join
table_3 on table_2.file_nbr = table_3.file_nbr ;
END;
$$ LANGUAGE plpgsql;
【讨论】:
我收到以下错误。[Amazon](500310) 无效操作:“$1”或附近的语法错误;以上是关于Redshift中的存储过程将数据加载到表中的主要内容,如果未能解决你的问题,请参考以下文章