如何读取SAS数据集?

时间:2010-03-03 19:11:25

标签: sas

我有很多SAS格式的文件,我希望能够在SAS之外的程序中阅读它们。除了安装基础SAS系统之外,我什么都没有。我可以手动转换每一个,但我想要一种自动完成的方法。

5 个答案:

答案 0 :(得分:6)

您需要运行SAS会话才能充当数据服务器。然后,您可以使用ODBC访问SAS数据,请参阅SAS ODBC drivers guide

要运行本地SAS ODBC服务器,您需要:

  1. 按照SAS ODBC驱动程序指南中的说明定义SAS ODBC服务器设置。在下面的示例中,我将连接到使用名称“loclodbc”设置的服务器。
  2. 在服务文件中添加一个条目(C:\ WINDOWS \ system32 \ drivers \ etc \ services),如下所示:

    • loclodbc 9191 / tcp

    ...设置端口号(此处为:9191),使其适合您的本地设置。服务“loclodbc”的名称必须与ODBC设置中定义的服务器名称匹配。请注意,术语“服务器”与PC的物理主机名无关。

  3. 您的SAS ODBC服务器现在已准备好运行,但没有可用的已分配数据资源。通常,您可以在SAS ODBC设置过程的“库”选项卡中进行设置,但由于您希望“即时”指向数据源,因此我们将其省略。

    现在,您可以从客户端应用程序连接到SAS ODBC服务器,指向要访问的数据资源,然后获取数据。

    SAS指向数据资源的方式是通过“LIBNAME”的概念。 libname是指向数据集合的逻辑指针。

    因此

    LIBNAME sasadhoc 'C:\sasdatafolder';
    

    将文件夹“C:\ sasdatafolder”指定为逻辑句柄“sasiodat”。

    如果您从SAS内部想要访问驻留在SAS数据表文件“C:\ sasdatafolder \ test.sas7bdat”中的数据,您可以执行以下操作:

    LIBNAME sasadhoc 'C:\sasdatafolder';
    PROC SQL;
      CREATE TABLE WORK.test as
      SELECT *
      FROM sasadhoc.test
      ;
    QUIT;
    

    所以我们需要做的是告诉我们的SAS ODBC服务器从我们的客户端应用程序为C:\ sasdatafolder分配一个libname。我们可以通过使用DBCONINIT参数在启动时向它发送此资源分配请求来完成此操作。

    我已经为此做了一些示例代码。我的示例代码也是用BASE SAS语言编写的。由于显然有更聪明的方式来访问SAS数据,而SAS通过ODBC连接到SAS,这个代码仅作为示例。

    您应该能够使用有用的位并在您正在使用的编程环境中创建自己的解决方案......

    SAS ODBC连接示例代码:

    PROC SQL;
      CONNECT TO ODBC(DSN=loclodbc DBCONINIT="libname sasadhoc 'c:\sasdatafolder'");
      CREATE TABLE temp_sas AS
      SELECT * FROM CONNECTION TO ODBC(SELECT * FROM sasadhoc.test);
    QUIT;
    

    魔法发生在代码的“CONNECT TO ODBC ...”部分,将libname分配给所需数据所在的文件夹。

答案 1 :(得分:4)

现在有一个python包可以让你读取.sas7bdat文件,或者如果你愿意,可以将它们转换为csv

https://pypi.python.org/pypi/sas7bdat

答案 2 :(得分:3)

您可以制作SAS到CSV转换程序。

将以下内容保存在sas_to_csv.sas

proc export data=&sysparm
    outfile=stdout dbms=csv;
run;

然后,假设您要访问libname.dataset,请按以下步骤调用此程序:

sas sas_to_csv -noterminal -sysparm "libname.dataset"

SAS数据转换为CSV,可以通过管道传输到Python。在Python中,以编程方式生成“libname.dataset”参数非常容易。

答案 3 :(得分:2)

我想你可以使用ADO, 有关详细信息,请参阅SAS support site

声明:

  1. 我暂时没看过这个
  2. 我不是100%确定这不需要额外的许可
  3. 我不确定你是否可以使用Python
  4. 来做到这一点

答案 4 :(得分:2)

我从未尝试http://www.oview.co.uk/dsread/,但它可能正是您所寻找的:“一个简单的命令行实用程序,用于处理SAS7BDAT文件格式的数据集。”但要注意“这个软件应该被认为是实验性的,并不保证是准确的。你使用它需要您自担风险。它现在仅适用于未压缩的Windows格式的SAS7BDAT文件。”