【问题标题】:Issues reading .mdb files in R在 R 中读取 .mdb 文件时出现问题
【发布时间】:2014-04-11 17:29:00
【问题描述】:

我正在尝试在 R 中读取一系列 microsoft access 数据库。我从使用 mdb- 的 Hmisc 包中找到了 mdb.get 函数工具

这是我针对一个特定 .mdb 文件的工作流程

system("wget http://www.dgis.salud.gob.mx/descargas/zip/BDSS_2004.zip")
unzip("BDSS_2004.zip")
mdb.get("SECTORIAL2004.mdb")
   Can't alloc filename
   Couldn't open database.
   named list()
   Warning message:
   running command 'mdb-tables -1 SECTORIAL2004.mdb' had status 1 

我尝试使用 System() 直接传递突击队以提供 mdb-tables 命令,但得到的结果非常相似。

system("mdb-tables SECTORIAL2004.mdb")   
   Can't alloc filename
   Couldn't open database.

主要问题是,当我直接在终端中执行此操作时,它对于相同的文件效果很好。我想我可以使用 shell 脚本来完成,但我更愿意在 R 中完成。任何帮助将不胜感激。

编辑

我忘了说我在 RStudio 中运行此代码,我尝试单独在 R 终端中运行它并且它可以工作,这让我认为它与 的文件路径有关mdb-tools 或类似的东西。话虽如此,我仍然希望能够在 RStudio 中做到这一点。谢谢!

【问题讨论】:

    标签: r ms-access database-connection hmisc


    【解决方案1】:

    ...我试图重现您的错误,但对我来说一切正常。

    从错误消息(“无法分配文件名”)和您所说的(“Microsoft Access 数据库的系列”)来看,我敢打赌,您正在达到内存限制R 可以处理的内容。

    以下是一些可以帮助您的建议:

    1. 您可以使用rm 释放一些无用的东西。运行gc() 以在加载文件之前触发垃圾收集器,这样您就可以确保所有可用内存都可用。这可能足以解决您的问题。

    2. 如果这还不够:按顺序导入 mdb 文件,一次一个,将每个文件以另一种格式保存在硬盘驱动器中(如默认的.RData)和彻底清除您的工作区。当您稍后打开它们时,您可能仍然需要担心空间,对它们进行分析,但至少您不必通过 mdb -> R em> 转换步骤。

    3. 最后,您真的需要 R 来读取该数据库吗?如果没有,您只需使用其他技术(python?)来读取您的数据库就可以省去很多麻烦。

    最后,处理大量数据的一个通用建议:你应该真正考虑学习如何使用data.tables,以防你还不知道它。

    【讨论】:

    • 您好,谢谢回复。我不认为我的问题是大小,我什至可以在 R 上读取一个小的 .mdb,但我可以在终端中轻松读取它。我试图使用 RStudio 阅读此内容,我认为这是问题所在,因为如果我在 R 中但在终端中运行相同的代码,我可以读取所有 .mdbs。
    • @eclark:您能尝试在 R(终端版本)或 Rstudio 中执行 same 脚本吗?我敢打赌,他们可能会遇到同样的问题。
    • @eclark:否则,如果没有可重现的示例,我们将无法帮助您!
    • 好的,我试过在R(终端版本)上执行它,它没有问题,当我在RStudio中运行时出现问题。
    • 我已经重新安装了 RStudio,它现在可以工作了。我不知道发生了什么事。但是感谢您的帮助!
    猜你喜欢
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    相关资源
    最近更新 更多