r-来自多个访问数据库的大型数据集上的SQL

时间:2018-07-09 19:47:18

标签: r dplyr data.table sqldf rmysql

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

我是否有更有效的方法使用r完成此任务?我一直在寻找一种运行SQL查询的方法,该查询将之前的各个数据库读入r,但是到目前为止,我还没有找到任何支持此功能的软件包。

2 个答案:

答案 0 :(得分:1)

如果您的数据位于 a 数据库dplyrtidyverse的一部分)中,它将是您要寻找的工具。

您可以使用它来连接到本地/远程数据库,将联接/过滤器/添加到其中,然后将结果collect()作为数据框使用。您会在http://db.rstudio.com/dplyr/

上找到整齐的总结过程

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

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

答案 1 :(得分:1)

您发布的链接看起来很有希望。如果没有达到预期的结果,请考虑将一个Access DB链接到所有其他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"))

这些URL也可能有帮助。

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

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