[英]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.