sql-server - 从文件运行 SQL 语句以在 SAS 中创建数据

标签 sql-server sas

我在 SAS 方面的经验很少。我确实有 SQL 方面的经验。

我想做以下事情: - 使用存储在文本文件中的 SQL 语句将数据导入 SAS。

有效的方法是复制并粘贴 SQL 服务器查询并将其作为 SAS 中的传递查询运行。我得到了数据(几分钟后)。

但我希望能够在 SSMS 中管理和开发 SQL 脚本,并将脚本存储在 sql 文件中。所以我尝试了以下方法:

proc sql;
connect to ODBC("dsn=DatabaseOfInterest");
create table NewDataSet as select * from connection to odbc(
%include 'C:\sqlscript.sql';
);
quit ; 

这不起作用并会产生以下错误:

**ERROR: CLI prepare error: 
[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near '%'. 
**

有什么办法可以实现吗?

最佳答案

我不知道是否有真正干净的方法来解决这个问题。问题是连接到 SQL 正在将 %include 传递给 SQL 解析器,这与您的预期相比当然是不正确的。

但是,它将正确解析宏和宏变量,因此您可以将 SQL 命令读入宏变量并以这种方式使用它。下面是一种方法。

filename tempfile temp;  *imaginary file - this would be your SQL script;
data _null_;             *creating a mocked up SQL script file;
file tempfile;
put "select * from country";
run;

data _null_;             *reading the SQL script into a variable, hopefully under 32767?;
infile tempfile recfm=f lrecl=32767 pad;
input @1 sqlcode $32767.;
call symputx('sqlcode',sqlcode);  *putting it into a macro variable;
run;


proc sql;                *using it;
connect to oledb(init_string=&dev_string);
select * from connection to oledb(
&sqlcode.
);
quit;

关于sql-server - 从文件运行 SQL 语句以在 SAS 中创建数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21311275/

相关文章:

sql - 从同一 Azure SQL Server 上的其他数据库调用主数据库的函数

sql - 扁平化/反规范化 SQL 查找表的最佳方法?

sas - 将 CHAR 转换为具有不同小数位的 NUM

sas - 错误: P does not have a numeric suffix (SAS, RENAME)

sql - SAS 或 Postgresql :add column value according to another column value

SAS 查找多个数据集的平均值

SQL - 在日期范围内搜索表中每个月的最后一天并输出数据?

java - 在 Derby 中创建有条件的触发器

.net - 加密列后 SQL 查询性能下降

sql - SAS SQL 分层查询