【问题标题】:Difference between sqldf and rmysql?sqldf 和 rmysql 的区别?
【发布时间】:2013-01-26 03:30:20
【问题描述】:

sqldfRMySQL 都是允许访问 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。

标签: r rmysql sqldf


【解决方案1】:

sqldf 用于发出 SQL 语句,并让它们作用于数据帧。 iris 不是数据库表,而是内置数据集。

> head(iris, n=3)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa

sqldf 不用于连接数据库。

【讨论】:

    【解决方案2】:

    除了 Lundberg 观察到数据帧是 SQL 命令可接受的目标之外,还有一点是sqldf 可以针对 SQLite(默认)、H2、MySQL 或 postgresSQL 中的任何(磁盘驻留)表:https://code.google.com/p/sqldf/

    【讨论】:

      猜你喜欢
      • 2012-07-31
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 2020-08-15
      • 2013-08-07
      • 2011-10-20
      相关资源
      最近更新 更多