如何将 SQL 查询结果存储到 R 中的数据框中

How to store SQL query result into data frame in R

我想将 SQL 查询存储到数据框中以进行可视化,因为很难直接从 SQL 查询结果中绘制图表。下面是我到目前为止的 R 代码:

mydb = dbConnect(MySQL(),
                 user='root',
                 password='XXXXX',
                 dbname='Databasename',
                 port=3306)
dbListTables(mydb)

rs <- dbSendQuery(mydb, "SELECT XXX FROM XXX WHERE X = Y;") 
dbFetch(rs)

如何使用 R 将 rs 存储到数据框?显然不能直接用data.frame函数转换。

我们可以将 dbFetch 输出分配给一个对象,然后使用 dbClearResult

清除结果
rs1 <- dbFetch(rs)
dbClearResult(rs)

现在,检查

str(rs1)

或者不使用 dbSendQuery/dbFetch,而是使用 dbGetQuery

rs <- dbGetQuery(mydb, "SELECT XXX FROM XXX WHERE X = Y;")

使用可重现的例子

library(DBI)
con <- dbConnect(RSQLite::SQLite(), ":memory:")
dbWriteTable(con, "mtcars", mtcars)
rs <- dbSendQuery(con, "SELECT * FROM mtcars WHERE cyl = 4")
rs1 <- dbFetch(rs)
dbClearResult(rs)
dbDisconnect(con)