SAS和Curl:';环境';url中的错误导致错误

SAS和Curl:';环境';url中的错误导致错误,sas,Sas,我正在尝试将CURL与SAS 9.3结合使用。我让它为普通网页工作。但是,当我尝试将其与带有“env”的URL一起使用时,会收到以下错误消息:“env”未被识别为内部或外部命令、可操作程序或批处理文件。是否有一些CURL函数可以在filename语句中使用,以便CURL将“env”识别为URL的一部分?此外,我尝试了proc http,但无法使其与代理一起工作。这就是我开始使用CURL的原因。非常感谢你的建议 SAS代码: %let url=%NRSTR(https://query.yahooa

我正在尝试将CURL与SAS 9.3结合使用。我让它为普通网页工作。但是,当我尝试将其与带有“env”的URL一起使用时,会收到以下错误消息:“env”未被识别为内部或外部命令、可操作程序或批处理文件。是否有一些CURL函数可以在filename语句中使用,以便CURL将“env”识别为URL的一部分?此外,我尝试了proc http,但无法使其与代理一起工作。这就是我开始使用CURL的原因。非常感谢你的建议

SAS代码:

%let url=%NRSTR(https://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20yahoo.finance.option_contract%20WHERE%20symbol%3D'YHOO'&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys);

filename curl pipe "curl -K &url 2>&1";

data _null_;
  infile curl lrecl=32767;
  input;
  put _infile_;
run;

我会尝试添加将传递到Windows的引号

差不多

"curl -k ""&url."" 2>&1"

双引号作为一个“字符”传递到Windows。

是的,我以前遇到过这个问题,花了一段时间才弄清楚

事实证明,无论何时通过命令行管道处理,都需要使用插入符号来屏蔽任何放大器和
&
字符。现在回想起来,我不知道我是如何解决的

另外-我相信您需要使用小写的
-k

我把它清理了一点,这对我来说很好:

%let query= %sysfunc(urlencode(SELECT * FROM yahoo.finance.option_contract WHERE symbol='YHOO'));
%let env  = %sysfunc(urlencode(store://datatables.org/alltableswithkeys));
%let url  = https://query.yahooapis.com/v1/public/yql?q=&query^%nrstr(&)diagnostics=true^%nrstr(&)env=&env;

filename curl pipe "d:\sasdev\common\bin\curl\curl.exe -k &url 2>&1";

data _null_;
  infile curl lrecl=32767;
  input;
  put _infile_;
run;

请注意,您需要将路径更改为curl。

在Windows或UNIX上执行此操作的是什么?我在Windows 7上执行此操作。感谢您的提示!filename语句现在执行。但是,现在我收到一个不同的错误。日志显示:尝试从https//query.yahooapi.com读取配置时出错……文件curl:未指定URL!请注意我想现在执行filename语句是因为与您在问题中列出的大写字母
-k
相比,小写字母
-k
。Robert,非常感谢您分享如何在SAS中构造yql url。这可能节省了我数小时的工作。再次感谢!后续问题:如何让curl输出XML文件在本例中?是否需要使用curl命令来指定输出文件类型?注意,我尝试了-H“Content-type:text/xml”“但是它不起作用。非常感谢。Curl将重复Web服务器返回的任何内容。您需要的是找到一种方法来告诉Web服务器返回XML。根据站点的API,可以通过添加诸如“&type=xml”或类似的参数来完成这类操作。我建议您阅读该网站的文档,或者如果可能的话,在web浏览器中以交互方式访问该网站,查看是否有选项,运行它,并查看URL如何更改。如果上面的答案解决了问题,也不要忘记将其标记为已接受。谢谢你的想法。我会试试你的建议。欢迎来到SAS=)中处理web和xml的乐趣是的32k限制太疯狂了。我建议问一个新问题,因为如果我试着在这里引导你,评论会变得非常难看。。。