2013-10-22 128 views
0

我有一臺SQL Server 2012計算機託管一個數據庫,包含我定期查詢的大量數據。爲了進行查詢,我需要上傳一個唯一ID列表,然後查詢與這些唯一ID相關的數據。爲了讓事情順利地運行,數據量很大,連接速度很慢,我使用PROC SQL直通工具來進行選擇。我想知道的是,如果我也可以使用pass-through工具來從本地SAS數據集中插入數據?我目前正在連接一個libname語句,然後在PROC SQL中使用「connect to」語句,但這並不優雅。插入到SAS中的Proc SQL Passthrough中

我想這樣做:

connect to odbc as SQL_SERVER (datasrce=...); 
INSERT INTO CONNECTION TO SQL_SERVER... 

可以這樣做?

回答

0

這樣做在技術上是可行的,但可能不是最好的方法。

您可以將插入數據放入宏變量,然後使用INSERT INTO以及該信息,就好像它是程序語句中的純文本一樣。您不能完全按照您的要求進行操作(除非您通過SAS的ODBC驅動程序從SQL Server連接到SAS,並且有一些可以訪問SAS數據集的存儲過程?不知道這是否可能)不知道這是可能的。

但是,方式是使用libname連接來創建表格,然後用passthrough來做選擇。

libname sqlserv odbc (...); 
proc sql; 
connect to odbc as sql_server(...); 
create table sqlserv.temptable (select * from whatever); 
select * from connection sql_server (... your other query, which can access temptable ...); 
quit; 

事情要小心的是,這是兩個單獨的會話,所以你不能使用特定會話臨時表 - 你必須使用一個永久表,還是其他什麼東西,將堅持之間會話。

+0

我很害怕這個。我希望避免提示用戶輸入密碼兩次,我猜可以用一個宏變量和一些窗口代碼來完成。 –