使用Python的adodbapi读取sas7bdat文件
我想把一个sas7bdat文件(这是SAS公司的一种文件格式)从SAS导入到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。
另外,为了避免一些其他的方法...
- 我不想在SAS中创建*.csv文件。
- 我的Python电脑上没有安装SAS,但安装了OLE DB的提供程序。我知道我提供的VB代码在只读模式下可以工作,而不需要SAS。你可以在这里下载这些驱动程序:http://support.sas.com/downloads/browse.htm?cat=64
- 我对SAS不是很精通。老实说,我觉得他们的工具很繁琐,文档也让人困惑,而且速度慢。我注意到还有一些其他的产品叫做"IOMProvider"和"SAS/SHARE"。如果用这些ADO提供程序有更简单的方法,请随意记录下来。不过,我真正想要的是在Python中用相对简单的代码来实现这个功能。
- 哦,我知道Python有一个sas7bdat的包,但我们用的是Python 3.3.5,似乎不兼容。而且我也搞不清楚在2.7上怎么用,因为文档不多,甚至有个关于如何使用这个工具的问题到现在都没有人回答。Python sas7bdat模块的使用
谢谢!
1 个回答
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提供程序 (https://www.connectionstrings.com/sas-iom-provider/, http://support.sas.com/documentation/tools/oledb/gs_iom_tasks.htm)