将 dBase / Paradox 数据读入 R?

Posted

技术标签:

【中文标题】将 dBase / Paradox 数据读入 R?【英文标题】:Read dBase / Paradox data into R? 【发布时间】:2013-02-12 16:41:44 【问题描述】:

我继承了大约一百个数据库文件,目前正在使用“Paradox dBase Access Reader”读取这些文件,并手动导出到以竖线分隔的文本文件。我很想用某种访问库来做到这一点,它可以让我将这些文件直接读入 R。

阅读器工具声明这些文件是“Paradox 5.0 for Windows”,它们有一个.db 扩展名。

我希望我可以使用 foreign 包来阅读它们,因为它在文档中声明了 read.dbf() 函数:

DBF 是用于为“XBASE”系列编写的文件的扩展名 数据库语言,涵盖 dBase、Clipper、FoxPro 及其 Windows 等效项 Visual dBase、Visual Objects 和 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()在这里是好是坏?

【问题讨论】:

约书亚,太棒了!将您的评论更改为答案,我会勾选它。 【参考方案1】:

在rseek.org 上搜索“paradox db”会得到gnumeric package,它表示它可以读取 Paradox 文件。我没有任何方法可以测试该功能,但它可能会起作用......

【讨论】:

完美。我使用gnumeric 包直接导入数据并没有立即成功,但是Gnumeric 附带的ssconvert 工具可以很好地转换数据,我可以使用connection 将其通过管道传输到R。 【参考方案2】:

该列表没有明确提及 Paradox 5.0,您使用 read.dbf 阅读它的努力失败了。如果文件是静态的,即不再更改,我只需创建一个脚本将它们导出一次,将它们读入 R,然后使用save 转储结果,这样您就可以使用load 将数据读入 R。

如果数据不是太大,这将是一个快速的过程,并允许您轻松读取所有数据并提取您喜欢的任何子集。如果它很大,您可以花一些时间将文件转储到更现代的数据库中,例如sqlite(虽然这不是一个完整的数据库,但它很好而且轻量级)。如果不是绝对必要的话,我不会花太多时间从 R 直接访问这些古老的文件......

【讨论】:

那很好,但是这样的提取工具是什么? 您在问题中提到了一个工具,您可以使用它吗? 哦,这是一个需要手动点击每个文件的 GUI。我想避免这种情况并自动迭代。

以上是关于将 dBase / Paradox 数据读入 R?的主要内容,如果未能解决你的问题,请参考以下文章

如何优雅的将数据从sqlite3迁移到mysql

Paradox DB SQL 多重连接

将数据从 Paradox 迁移到 SQL Server

将 PHP 连接到 Paradox 数据库

将 paradox / borland 数据库作为单个文件打开

如何将 Dbase 数据库实时复制到 MYSQL?