2013-02-12 65 views
1

我有一百個左右的數據庫文件,我繼承了我目前正在閱讀的「Paradox dBase Access Reader」,並且手動導出到管道分隔的文本文件。我喜歡用某種訪問庫來做到這一點,它可以讓我直接將這些文件讀入R.將dBase/Paradox數據讀入R?

讀者工具指出這些文件是「Paradox 5.0 for Windows」,並且它們有一個.db擴展名他們。

我希望我可以使用foreign包來閱讀,因爲它在文檔的read.dbf()功能狀態:

DBF是用於網絡連接的LES擴展爲'XBASE的家庭書面 數據庫語言,覆蓋的dBase,快船時,FoxPro,和他們 的Windows當量視覺的dBase,可視化對象和Visual FoxPro中, 再加上一些老產品的

不幸的是,未能在DBFOpen C函數,在大約425行:

if(fread(pabyBuf, nHeadLen-32, 1, psDBF->fp) != 1) 
{ 
    fclose(psDBF->fp); 
    free(pabyBuf); 
    free(psDBF); 
    return NULL; 
} 

任何人有其他的解決方案,或者洞察read.dbf()是否是這裏的好或壞的比賽?

+0

約書亞,這是完美的!將您的評論更改爲答案,我會選中它。 – 2013-02-12 17:08:41

回答

2

rseek.org上搜索「paradox db」會得到gnumeric package,它表示它可以讀取Paradox文件。我沒有任何方法來測試該功能,但它可能會工作...

+0

完美。我沒有直接使用'gnumeric'軟件包直接導入數據,但使用Gnumeric附帶的'ssconvert'工具可以很好地轉換數據,我可以通過'connection'將它傳遞給R。 – 2013-02-12 17:14:36

0

該清單並沒有明確提及Paradox 5.0,但您使用read.dbf來閱讀它的努力失敗了。它的文件是靜態的,即不再改變,我只是創建一個腳本來導出它們一次,將它們讀入到R中,然後使用save轉儲結果,這樣您就可以使用load將數據讀入到R中。

如果數據不是很大,這將是一個快速的過程,並允許您輕鬆讀取所有數據並提取您喜歡的任何子集。如果它很大,你可以投入一些時間將文件轉儲到更現代的數據庫中,例如sqlite(雖然這不是一個完整的數據庫,它很好,很輕)。我不會花太多時間從R獲取這些古代文件的直接訪問權限,如果它不是絕對必要的話...

+0

這樣可以,但是提取的工具是什麼? – 2013-02-12 17:08:08

+0

你談到了你的問題中的一個工具,你可以使用它? – 2013-02-12 17:24:51

+0

哦,這是一個GUI,需要手動點擊每個文件。我想避免這種情況並自動迭代。 – 2013-02-12 21:21:53