我正在进行一个过程改进,该过程将在r中使用SQL来处理大型数据集。当前,源数据存储在几个不同的MS Access数据库中。我最初的方法是使用RODBC将所有源数据读入r,然后根据需要使用sqldf()汇总数据。我什至在开始使用sqldf()之前就已经用光了RAM。
我是否有更有效的方法使用r完成此任务?我一直在寻找一种运行SQL查询的方法,该查询将之前的各个数据库读入r,但是到目前为止,我还没有找到任何支持此功能的软件包。
答案 0 :(得分:1)
如果您的数据位于 a 数据库dplyr
(tidyverse的一部分)中,它将是您要寻找的工具。
您可以使用它来连接到本地/远程数据库,将联接/过滤器/添加到其中,然后将结果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也可能有帮助。