【发布时间】:2014-08-01 13:12:36
【问题描述】:
我在 Oracle 中有一个从 SAS 插入的 1000 万行表。每周都会在 SAS 中更新该表,其中包含一些新行,并且基于某些条件(如日期、位置等)在某些行中进行了一些更改。我知道如何从 SAS 将表附加到 oracle 中。 这是我目前正在使用的代码。
libname ABC oracle user='aaa' password='ppp' path = xyz;
proc append base=table_10m
data=additional_rows;
run;
在执行此操作之前,我首先必须确定 SAS 表中添加的行。对于更新的行,我也必须在 SAS 中做同样的事情。下面是旧表和新表的示例:
Old Table
colA colB colC colD
BAC Jul-31-2014 45 2.24
CAD Jul-31-2014 98 10.2
New Table
colA colB colC colD
BAC Jul-31-2014 65 2.24
CAD Jul-31-2014 98 10.2
BAC AUG-01-2014 22 3.3
ABC AUG-01-2014 32 5.2
如您所见,新表增加了 2 行,并且更新了 row1 colc 值。
这是我用来从 SAS 更新 oracle 中的表的代码。
PROC SQL;
UPDATE old_table as a SET new_table = (SELECT b.colc
FROM sas.new_table as b
WHERE a.colA=b.colA and
a.colB = b.colB
)
WHERE exists
(select * from sas.new_table as b
WHERE a.colA=b.colA and a.colB = b.colB
);
QUIT;
有没有办法将 Oracle 中的旧表更新为 SAS 中的新表,其中包含额外的行和更改的行?有没有更简单的方法,请告诉我。 谢谢
【问题讨论】: