[英]SAS Proc SQL Database Table Insert
使用SAS的Proc SQL,是否可以將SAS數據集的記錄插入到打開的SQL Server連接中的表中? 像這樣的東西(不起作用):
proc sql exec;
connect to sqlservr as DataSrc (server=my-db-srvr database=SasProcSqlTest);
create table Items as select * from connection to DataSrc (
SELECT * FROM tblItem
);
update Items
set Name = Name + Name,
Value * 2;
insert into tblItem (Name, Value)
select Name, Value
from Items;
disconnect from DataSrc;quit;run;
quit;
run;
據我所知,使用直通SQL會將您約束到數據庫服務器。 SAS文檔要求您最好對數據庫創建一個庫引用,然后像對待SAS表一樣對待數據庫表。 在您的情況下,這意味着僅普通proc sql。 這至少應該在最新的SAS版本中有效,但是對於大型表而言並不是最佳選擇。
我們為避免這種情況所做的工作是
您可以在打開的連接中執行所需的操作。
創建一個關聯的libname。
libname datasrc_lib sqlservr server=my-db-srvr database=SasProcSqlTest;
proc sql exec;
connect to sqlservr as DataSrc (server=my-db-srvr database=SasProcSqlTest);
create table Items as select * from connection to DataSrc (
SELECT * FROM tblItem
);
update Items
set Name = Name + Name,
Value * 2;
insert into datasrc_lib.some_temp_table select * from items;
execute( insert into tblItem where select * from some_temp_table ) by DataSrc ;
execute( drop table some_temp_table ) by DataSrc ;
disconnect from DataSrc;quit;run; quit; run;
上面的偽代碼應使您了解其工作方式。 您可能還需要在proc sql中創建“ some_temp_table”,或者有一個可用的永久登台表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.