문제

sqldf and RMySQL are both R packages that allow access to a MySQL database (the former using the latter). They both allow statements like this:

RMySQL: "Run an arbitrary SQL statement and extract all its output (returns a 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])

So what are the differences? What does sqldf offer that RMySQL doesn't?

도움이 되었습니까?

해결책

sqldf is used to issue SQL statements, and have them act on data frames. iris is not a database table, but a built-in data set.

> 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 is not used to connect to databases.

다른 팁

Besides the observation by Lundberg that dataframes are acceptable targets for SQL-commands, there is also the point that sqldf can go against any (disk-resident) table in SQLite (the default), H2, MySQL, or postgresSQL: https://code.google.com/p/sqldf/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top