【问题标题】:Using SAS X Command with PCFILES server将 SAS X 命令与 PCFILES 服务器一起使用
【发布时间】:2014-01-21 18:27:21
【问题描述】:

我有一些 SAS 代码写入 Excel 工作簿中的特定工作表。其他工作表具有与此工作表相似的公式,因此工作簿基本上是一个模板,在我的代码运行时会被填充。

我希望能够多次运行代码,并在每次运行时得到不同版本的模板。我在想实现这一点的最简单方法是写出模板,然后使用 x 命令或其他东西来复制工作簿,然后重命名它。

SAS 在 linux 服务器上,我使用 pc 文件服务器写入 excel。如何设置 x 命令来复制文件并在远程服务器上更改其名称?

【问题讨论】:

  • 工作簿物理上是否在 linux 服务器上(或在它映射的共享上)?
  • 工作簿位于 Windows 服务器上。我已经在使用 proc export 远程连接和使用带有 pcfiles 引擎的 libname 之间来回切换。
  • 那么,linux服务器不能直接“看到”工作簿?
  • 如果它不能直接看到工作簿,我不相信它可以复制它(使用x 或其他任何东西)。您可以导入工作簿并创建它的新副本,如果这不会损害它,但如果其中有连接或宏,那将无法解决您的问题。您可以考虑使用脚本解决方案;例如,Chris Hemedinger 的“复制文件”任务可能具有适应性。
  • 我不确定你所说的“看”是什么意思。 SAS 能够访问它并写入它(使用 proc 导出或 libname 和数据步骤),我可以通过 libname 或文件路径告诉 SAS 它位于何处。

标签: excel sas enterprise-guide


【解决方案1】:

对不起,回答晚了,但我自己也遇到了这个问题,可以提供解决方案。

您可以通过 windows(使用 SMB 共享或类似方式)访问 sas 服务器上的文件吗?这是最简单的方法。如果不能,通常很容易在 linux 上设置 Samba。

首先,将 excel 模板存储在 SAS 服务器上,以便从您的 windows 计算机上看到它(上面有 PC 文件服务器)。

假设该文件位于 SAS 服务器上的“/home/files/template.xlsx”中,并且该目录在您的 Windows 服务器上作为“\linuxservername\files\template.xlsx”(或 \192.168 .1.5\files\template.xlsx 如果您使用的是 IP 地址)

现在您只需将 SMB 路径用于 PCFILES 内容,并将本地 linux 路径用于 x 命令。类似的东西

x 'cp /home/files/template.xlsx /home/files/output.xlsx';
libname output PCFILES 
  path='\\linuxservername\files\template.xlsx'
  server='PCFilesServerName'
  port=1234;

请注意,在为 PCFiles 提供路径时,您使用网络地址(因为您的 windows 框必须能够读取和写入它),当您发出复制命令时,您使用本地地址。

根据您的系统配置,您还可以对所有内容使用网络路径。当我尝试它时,我无法让它工作,因为 unix 服务器不喜欢它(它通过 SMB 共享文件夹,但它不知道如何从命令行访问它)。

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多