繁体   English   中英

使用SAS中另一个表中的数据更新oracle表

[英]Update an oracle table with data from another table in SAS

我正在尝试运行以下代码以从click_summ表中的数据更新表摘要。

data temp(index=(comp=(card_number package_sk)));
set click_summ(where=(^missing(e_1st_click_dt)));
keep card_number package_sk e_1st_click_dt;
run;

data summary(drop=new_date) ;
set summary;
set temp(rename=(e_1st_click_dt= new_date) in=a) key=comp;
if a then do;
   e_1st_click_dt = min(e_1st_click_dt,new_date);
end;
else
   _ERROR_ = 0; /*No need for IORC errors*/
run;

这段特定的代码抛出一个错误,说:

错误:已为输出打开ORACLE表摘要。 该表已存在,或者与现有对象名称冲突。 该表将不会被替换。 该引擎不支持REPLACE选项。

相同的解决方法是什么? 这个问题与我之前提出的一个问题有关( 在SAS中总结表格

只需将表名从摘要更改为其他名称,然后尝试..am不确定是否可以将摘要用作表名,因为存在proc摘要...不确定但请尝试看看

如错误消息所述,您不能在DATA步骤中替换oracle表。 解决方法是:

1)在临时SAS数据集中进行所有数据处理;

2)使用PROC SQL ... DELETE ...删除原始Oracle表中的所有行;

3)使用PROC APPEND将新数据(临时数据集)添加到空的Oracle表中。

data temp;
set click_summ(where=(^missing(e_1st_click_dt)));
keep card_number package_sk e_1st_click_dt;
run;

data summary(drop=new_date) ;
modify summary temp(rename=(e_1st_click_dt= new_date) in=a);
by card_number, package_sk;
if a then do;
   e_1st_click_dt = min(e_1st_click_dt,new_date);
end;
else
   _ERROR_ = 0; /*No need for IORC errors*/
run;

修改是关键。 这也可以与Oracle表一起使用。 而且也很快。

暂无
暂无

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

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