R 在 sql 数据库中从 DBI 包中的函数中查找 table 时遇到问题,与 RSQLite 和 dbplyr 一起使用

R trouble finding the table in sql database from a function in DBI package, using with RSQLite and dbplyr

我一直在研究 Andrew Couch 关于 RSQLite、DBI 和 dbplyr 包的 YouTube 视频。 Here is the link.

但是,我 运行 遇到了一个错误,我不确定发生了什么。 YouTube 视频是一个很好的视频,但我认为 AC 运行 没有解决我遇到的同样问题,所以我认为它没有被诊断出来。

我首先加载库:

library(dbplyr)
library(RSQLite)
library(DBI)

然后我将 mtcars 重命名为 sql_mtcars 并创建到 SQLite 数据库的连接并将我的数据框复制到该数据库。

sql_mtcars <- mtcars
con <- RSQLite::dbConnect(SQLite(), ":memory:")
dplyr::copy_to(con, sql_mtcars)

我把它变成 table(我猜是因为我必须这么做?)

sql_mtcars_db <- tbl(con, "sql_mtcars")

我练习编写查询,然后测试查询的 SQL 版本。

sql_mtcars_db %>%
  dplyr::select(car, mpg, wt) %>%
  dplyr::show_query()

但这就是我卡住的地方。现在我尝试直接在下面编写 SQL 代码 来自 DBI 的 dbGetQuery 函数。

DBI::dbGetQuery(con, '
SELECT sql_mtcars_db.mpg 
FROM sql_mtcars_db
  ')

我收到此错误消息提示:

Error: no such table: sql_mtcars_db

但这让我感到困惑,因为当我 运行 这行代码调用 table:

sql_mtcars_db

我可以看到 table 在 SQLite 数据库中。

table 名称是 sq_mtcars- 即 select 语句是针对特定的 table 并且已经与数据库建立连接

DBI::dbGetQuery(con, '
SELECT sql_mtcars.mpg 
FROM sql_mtcars
  ')

-输出

  mpg
1  21.0
2  21.0
3  22.8
4  21.4
5  18.7
6  18.1
7  14.3
8  24.4
9  22.8
10 19.2
11 17.8
...

如有疑问,请列出table和

dbListTables(con)
[1] "sql_mtcars"   "sqlite_stat1" "sqlite_stat4"