我有一台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...
可以这样做吗?
答案 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;
需要注意的是,这些是两个单独的会话,因此您不能使用特定于会话的临时表 - 您必须使用永久表,或者在会话之间保留的其他内容。