在SAS中插入Proc SQL Passthrough

时间:2013-10-22 17:52:11

标签: sql-server odbc sas proc-sql

我有一台SQL Server 2012计算机托管一个数据库,其中包含我定期查询的大量数据。为了进行查询,我需要上传唯一ID列表,然后查询与这些唯一ID相关的数据。为了使数据和连接速度很慢,工作顺利进行,我正在使用PROC SQL传递工具进行选择。我想知道的是,我是否也可以使用传递工具从本地SAS数据集进行插入?我目前正在使用libname语句连接,然后在PROC SQL中使用“connect to”语句,但这并不优雅。

我想做点什么:

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

可以这样做吗?

1 个答案:

答案 0 :(得分: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;

需要注意的是,这些是两个单独的会话,因此您不能使用特定于会话的临时表 - 您必须使用永久表,或者在会话之间保留的其他内容。