【发布时间】:2013-01-26 03:30:20
【问题描述】:
sqldf 和RMySQL 都是允许访问 MySQL 数据库的 R 包(前者使用后者)。它们都允许这样的语句:
RMySQL:“运行任意 SQL 语句并提取其所有输出(返回 data.frame):”
dbGetQuery(con, "select count(*) from a_table")
dbGetQuery(con, "select * from a_table")
sqldf:
library(sqldf)
sqldf("select * from iris limit 5")
sqldf("select count(*) from iris")
sqldf("select Species, count(*) from iris group by Species")
# create a data frame
DF <- data.frame(a = 1:5, b = letters[1:5])
那么有什么区别呢? sqldf 提供了哪些 RMySQL 没有的功能?
【问题讨论】:
-
sqldf允许您针对数据帧发出 SQL 语句。 -
意思是,对来自任何地方(可能不是 SQL 数据库)的数据进行 SQL 分析?
-
如果您有兴趣从 R 连接到 MySQL 数据库,请坚持使用 RMySQL(或 RODBC)。
-
sqldf 通过使用 RMySQL(或 RSQLite、RH2 或 RPostgreSQL)连接到后端数据库来操作工作区中的数据帧——默认为 RSQLite。如果您的数据源是 R 工作区中的数据框,那么您将使用 sqldf。如果您的数据源在 MySQL 数据库中,那么您将直接使用 RMySQL。