【问题标题】:r - SQL on large datasets from several access databasesr - 来自多个访问数据库的大型数据集的 SQL
【发布时间】:2018-12-17 13:52:18
【问题描述】:

我正在改进流程,将在 r 中使用 SQL 来处理大型数据集。目前,源数据存储在几个不同的 MS Access 数据库中。我最初的方法是使用 RODBC 将所有源数据读入 r,然后根据需要使用 sqldf() 汇总数据。不过,在我开始使用 sqldf() 之前,我的 RAM 已经用完了。

我有没有更有效的方法来使用 r 完成这项任务?我一直在寻找一种方法来运行一个 SQL 查询来连接单独的数据库之前将它们读入 r,但到目前为止我还没有找到任何支持此功能的包。

【问题讨论】:

  • dbplyr 允许您在 R 中收集输出之前对数据连接/数据库执行多项操作。

标签: r dplyr data.table sqldf rmysql


【解决方案1】:

如果您的数据在a 数据库中,dplyrtidyverse 的一部分)将是您正在寻找的工具。

您可以使用它连接到本地/远程数据库,将您的联接/过滤器/任何内容推送到那里,并将结果collect() 作为数据框。你会发现这个过程在http://db.rstudio.com/dplyr/

我不太确定 - 但它不是 R 问题,而是 MS Access 问题 - 是跨 多个 MS Access 数据库访问数据的方法。

您可能需要为此编写自定义 SQL 代码并通过 DBI::dbGetQuery() 将其传递到其中一个数据库,并让 MS Access 处理数据库链接。

【讨论】:

  • 有趣。我也许能够创建一个链接到其他数据库中所有相关表的单个 Access 数据库,因此这可能是一种临时解决方法。我在以下链接中发现了一个类似的问题,我也可以利用它 - stackoverflow.com/questions/50327140/…
  • 如果您能够在 MS Access 中创建一个包含所有数据的视图,那么它就是一个简单的dplyr 案例
【解决方案2】:

您发布的链接看起来很有希望。如果它没有产生预期的结果,请考虑将一个 Access DB 链接到所有其他数据库。链接几乎不占用内存。合并链接并从那里获取数据。

# Load RODBC package
library(RODBC)

# Connect to Access db
channel <- odbcConnectAccess("C:/Documents/Name_Of_My_Access_Database")

# Get data
data <- sqlQuery(channel , paste ("select * from Name_of_table_in_my_database"))

这些网址也可能有帮助。

https://www.r-bloggers.com/getting-access-data-into-r/

How to connect R with Access database in 64-bit Window?

【讨论】:

    猜你喜欢
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多