3

我们有一个企业指南项目,其中有多个流程。每个流程流的输出都保存到名为“SAVE”的特定库中,由 LIBNAME 语句定义。这样做是为了让我们可以更轻松地跳转和处理任何流程,而无需运行所有上述流程(当然,使用 LIBNAME 语句初始化 SAVE 库的流程除外)。

但是,当我们想在 PRODUCTION 服务器上运行此代码时,我们希望此 SAVE 库指向 SAS WORK 数据库,因为我们不需要此中间数据​​。

是否可以使用 LIBNAME 语句(例如“LIBNAME SAVE SAS.WORK;”)将库定向到 WORK 数据库?

4

3 回答 3

4

定义一个 libref 使用 LIBNAME 语句。要查找现有 libref 使用的路径,请使用 PATHNAME() 函数。

libname save %sysfunc(quote(%sysfunc(pathname(work)))) ;

小心使用这个技巧,因为 SAVE.memname 和 WORK.memname 现在将引用同一个物理文件。由于名称冲突,在您的开发环境中工作的代码可能无法工作。

于 2015-06-26T18:37:55.183 回答
2

好的,我找到了一种方法。

%let workLocation=%sysfunc(getoption(work));
libname SAVE "&workLocation.";

还有更简单的解决方案:

libname SAVE (work);
于 2015-06-25T13:15:54.323 回答
1

您可以做的一件事是重新分配 WORK 库,使其指向您的 SAVE 库所在的位置。

在这里,在第 1 点,他们解释了如何做到这一点:https ://riskopedia.wordpress.com/2007/03/06/reassign-location-on-sas-work-folder/

于 2015-06-25T13:18:16.870 回答