【问题标题】:Import excel file located on a UNIX server to SAS将位于 UNIX 服务器上的 excel 文件导入 SAS
【发布时间】:2012-04-01 04:48:47
【问题描述】:

我正在尝试使用 SAS 将 excel 文件导入数据集,但是常规方法:

PROC IMPORT OUT= test.test
            DATAFILE= "M:/excelfile.xls"
            DBMS=EXCEL REPLACE;
     SHEET="Sheet1";
     GETNAMES=YES;
     MIXED=NO;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
RUN;

仅适用于 Windows。

我正在使用 SAS 9.2 .. 我尝试了不同的 DBMS,例如 XLS、EXCELCS,但没有运气... 我已经在这方面投入了很多时间,我想知道是否可能.. 我无法访问除 SAS 和 SHELL(无 PERL)以外的任何其他语言

有没有办法完成我正在寻找的东西?

这些是已安装的基础产品

操作系统:AIX 64
---基础产品
---SAS/STAT

---SAS/图形

---SAS/ETS
---SAS/OR ---SAS/CONNECT
---SAS集成技术
---或选择
---或PRS
--- 或 IVS
---或LSO
--- SAS/ACCESS 接口到 DB2

【问题讨论】:

    标签: excel dataset sas


    【解决方案1】:

    如果 AIX 上已安装的基本产品列表正确,则您没有在 UNIX 上获得许可的 SAS Access to PC File Formats 产品。由于您提到“远程提交”并且您的 PC 上有 SAS Access,您可以将文件传输到您的 PC,使用 PROC IMPORT,然后将 SAS 数据集传输回服务器:

    rsubmit;
    proc download infile='M:/excelfile.xls'
                  outfile='c:\temp\excelfile.xls'
                  binary;
    run;
    endrsubmit;
    
    PROC IMPORT OUT=work.test
                DATAFILE= 'c:\temp\excelfile.xls'
                DBMS=EXCEL REPLACE;
        SHEET="Sheet1";
        GETNAMES=YES;
        MIXED=NO;
        SCANTEXT=YES;
        USEDATE=YES;
        SCANTIME=YES;
    RUN;
    
    rsubmit;
    proc upload data=test out=test.test;
    run;
    endrsubmit;
    

    希望这会有所帮助, 鲍勃

    【讨论】:

    • 谢谢 Bob,我认为 --SAS/ACCESS Interface to DB2 意味着我拥有它,您的建议基本上就是我现在所做的,但是为了自动化我们的一些脚本,我们需要它仅在 UNIX 端完成
    • 不,DB2 指的是该名称的 IBM 数据库产品。如果您正在谈论自动化,那么使用分隔文件(制表符、逗号或其他内容)而不是 Excel 工作簿可能会更好。然后您可以将 PROC IMPORT 与 DBMS=DLM 一起使用。从 Windows 将文本文件放在 UNIX 文件系统上时要小心;确保以“文本”而不​​是“二进制”传输。
    • 好的,那我想我没有,问题是这个 excel 文件是由供应商倾销的,我无能为力而不打扰管理,但我找到了解决方法,我制作了一个 PERL 脚本,将 XLS 转换为 CSV,然后按照您的建议使用 proc import。
    【解决方案2】:

    我知道这已经晚了,但作为记录,您应该能够使用 XML 数据引擎和 SAS 支持提供的自定义 XMLMAP 导入带有 SAS 的 xlsx(XML Excel 数据表)。

    有关如何执行此操作以及从何处获取 XMLmap 的详细信息,请参阅此处的论文 http://www2.sas.com/proceedings/sugi31/115-31.pdf

    【讨论】:

    • 你好 DaveG,谢谢!是的,我知道,但是我读取了一个 xls 文件,该文件被转储到一个 sahed 文件夹中,无论如何我最终使用 perl 读取文件并将其转换为 xml 或文本
    【解决方案3】:

    请参阅here - 您可以使用的选项似乎取决于您指定的 DBMS(例如,看起来您不能将 GETNAMES 与 EXCELCS 一起使用)。您是否尝试过将 PROC IMPORT 剥离回来,即通过删除一些选项:

    proc import out=work.test
      datafile = "/path/to/file.xls"
      dbms = EXCELCS replace;
      sheet = "Sheet1";
    run;
    

    【讨论】:

    • 我收到的唯一输出是不支持 DMBS。
    • 您是否拥有适当的许可证(SAS/ACCESS Interface to PC 文件)?您可以运行 PROC SETINIT;RUN;告诉你,日志应该包含“SAS/ACCESS Interface to PC Files”这一行。
    • 是的,我有,这些界面在 windows 上运行良好,excel 文件在 unix 上,proc 导入在 unix 服务器上的 rsubmit 中执行
    • 可能模块没有安装在 unix 服务器上。也许你可以重新提交 PROC SETINIT;RUN;看看有没有安装?
    【解决方案4】:

    问题可能只是您需要使用-noterminal 选项运行SAS,如here 所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      • 2013-02-23
      • 2011-04-15
      • 2019-10-12
      • 2014-10-10
      • 1970-01-01
      • 2020-11-30
      相关资源
      最近更新 更多