我可以使用 R 中的 DBI 库将一个 SQLite 数据库附加到另一个数据库吗?

Can I attach one SQLite database to another with the DBI library in R?

我正在尝试将一个 SQLite 数据库附加到另一个数据库。在终端上,我可以使用 ATTACH 命令非常简单地完成此操作,但我在 R 脚本中工作,我想让它通过 DBI 连接工作。我已经能够附加系统调用,但是通过数据库连接来完成它会非常好。

DBI 连接尝试:

library(DBI)

NewDBFile <- "new.db"
archiveFile <- "archive.db"

con <- dbConnect(RSQLite::SQLite(), NewDBFile)

rs <- dbExecute(conn = con, paste0("ATTACH ", archiveFile, " AS archive;"))

dbDisconnect(con)

有了这个我得到一个“错误:没有这样的列:[数据库名称]”

关于我将如何做这件事有什么想法吗?

ATTACH 在 R 中的演示:

con1 <- DBI::dbConnect(RSQLite::SQLite(), "dat1.sqlite3")
DBI::dbWriteTable(con1, "tbl1", data.frame(id=1:3, aa=1:3))
con2 <- DBI::dbConnect(RSQLite::SQLite(), "dat2.sqlite3")
DBI::dbWriteTable(con2, "tbl2", data.frame(id=1:3, bb=11:13))
DBI::dbExecute(con1, "attach database 'dat2.sqlite3' as dat2")
# [1] 0

DBI::dbGetQuery(con1, "
  select t1.*, t2.bb
  from tbl1 t1
    left join dat2.tbl2 t2 on t1.id=t2.id")
#   id aa bb
# 1  1  1 11
# 2  2  2 12
# 3  3  3 13

顺便说一句,这不会在单个查询中显示附加表:

DBI::dbGetQuery(con1, "select * from sqlite_master")
#    type name tbl_name rootpage                                                       sql
# 1 table tbl1     tbl1        2 CREATE TABLE `tbl1` (\n  `id` INTEGER,\n  `aa` INTEGER\n)

DBI::dbGetQuery(con1, "select * from dat2.sqlite_master")
#    type name tbl_name rootpage                                                       sql
# 1 table tbl2     tbl2        2 CREATE TABLE `tbl2` (\n  `id` INTEGER,\n  `bb` INTEGER\n)

我的基本信息:

packageVersion("DBI")
# [1] '1.1.1'
packageVersion("RSQLite")
# [1] '2.2.1'
R.version
#                _                           
# platform       x86_64-w64-mingw32          
# arch           x86_64                      
# os             mingw32                     
# system         x86_64, mingw32             
# status                                     
# major          4                           
# minor          0.5                         
# year           2021                        
# month          03                          
# day            31                          
# svn rev        80133                       
# language       R                           
# version.string R version 4.0.5 (2021-03-31)
# nickname       Shake and Throw