簡體   English   中英

使用Python的adodbapi讀取sas7bdat文件

[英]Reading sas7bdat files with Python's adodbapi

我正在嘗試將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模塊用法

謝謝!

由於當前未安裝提供程序,因此未使用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提供商/http://support.sas.com/documentation/tools/oledb/gs_iom_tasks.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM