使用Python的adodbapi读取sas7bdat文件

时间:2014-08-19 00:45:20

标签: python sas

我试图将SAS(SAS Institute的产品)中的sas7bdat文件读入Python。

是的,我知道我们可以导出到* .csv文件,但我试图避免这种情况,因为这会使我们需要创建的文件数量增加一倍。

在Visual Basic中执行此操作有很好的文档。不过,我想在Python中使用它。例如,在VB中你可以写...

Dim cn as ADODB.Connection
Dim rs as ADODB.Recordset

obConnection.Provider = "sas.LocalProvider"
obConnection.Properties("Data Source") = "c:\MySasData"
obConnection.Open

rs.Open "work.a", cn, adOpenStatic, adLockReadOnly, adCmdTableDirect

打开数据集。

但我无法破解坚果,让它在python中运行。

我可以输入......

import adodbapi

cnstr = 'Provider=sas.LocalProvider;c:\\MySasData'

cn = adodbap.connect(cnstr)

一个人可以得到一个光标......

cur = cn.cur()

但除此之外,我很难过。我找到了一个cur.rs,听起来像一个记录集,但它是一个类型为None的对象。

另外,要抢占一些替代方法......

  1. 我不想在SAS中创建* .csv文件。
  2. 使用Python的计算机没有安装SAS,但安装了OLE DB的提供程序。我知道我提供的VB代码在只读模式下无SAS工作。您可以在此处下载这些驱动程序:http://support.sas.com/downloads/browse.htm?cat=64
  3. 我不是SAS的专家。老实说,我发现他们的工具很麻烦,容易记录,而且速度慢。我注意到其他一些产品被列为" IOMProvider"和" SAS / SHARE"。如果使用这些ADO提供程序更容易实现此操作,请随时记录它。但是,我真正想要的是一种完全在Python中使用相对简单的代码完成此操作的方法。
  4. 哦,我已经了解了Python的sas7bdat软件包,但是我们使用的是Python 3.3.5并且它似乎并不兼容。另外,我无法弄清楚如何在2.7上使用它,因为这里没有很多文档甚至是关于如何使用该工具的问题,到目前为止还没有答案。 Python sas7bdat module usage
  5. 谢谢!

1 个答案:

答案 0 :(得分:0)

没有使用SAS测试它,因为我目前没有安装提供程序,它应该是这样的:

cn = adodbapi.connect(cnstr)

# print table names in current db
for table in cn.get_table_names():
    print(table)

with cn.cursor() as c:
    #run an SQL statement on the cursor
    sql = 'select * from your_table'

    c.execute(sql)

    #get the results
    db = c.fetchmany(5)

    #print them
    for rec in db:
        print(rec)

cn.close()

编辑: 刚刚找到此http://support.sas.com/kb/30/795.html,因此您可能需要为此方法使用其他提供程序,请查看IOM privoder(https://www.connectionstrings.com/sas-iom-provider/http://support.sas.com/documentation/tools/oledb/gs_iom_tasks.htm