DBI::dbWriteTable 没有将 SQLite table 写入磁盘

DBI::dbWriteTable isn't writing a SQLite table to disk

我刚刚开始使用 DBI 访问(本地)SQLite 数据库,我似乎在读写磁盘时遇到了基本问题。这是一个代表:

library(DBI)

con = dbConnect(RSQLite::SQLite(), path = 'test.db')
dbWriteTable(conn = con, name = "Tbl_test", value = mtcars)
dbListTables(conn = con)
#> [1] "Tbl_test"
dbDisconnect(con)

con = dbConnect(RSQLite::SQLite(), path = 'test.db')
dbListTables(conn = con)
#> character(0)
dbDisconnect(con)

sessionInfo()
#> R version 4.0.0 (2020-04-24)
#> Platform: x86_64-apple-darwin17.0 (64-bit)
#> Running under: macOS Catalina 10.15.5
#> 
#> Matrix products: default
#> BLAS:   /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
#> 
#> locale:
#> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] DBI_1.1.0
#> 
#> loaded via a namespace (and not attached):
#>  [1] Rcpp_1.0.4.6    digest_0.6.25   magrittr_1.5    evaluate_0.14  
#>  [5] RSQLite_2.2.0   highr_0.8       rlang_0.4.6     stringi_1.4.6  
#>  [9] blob_1.2.1      vctrs_0.3.1     rmarkdown_2.1   tools_4.0.0    
#> [13] stringr_1.4.0   bit64_0.9-7     bit_1.1-15.2    xfun_0.13      
#> [17] yaml_2.2.1      compiler_4.0.0  pkgconfig_2.0.3 memoise_1.1.0  
#> [21] htmltools_0.4.0 knitr_1.28

reprex package (v0.3.0)

于 2020-06-23 创建

第一位似乎使用 mtcars 中的数据正确添加了新的 table。但是没有任何内容写入工作目录中的磁盘(或其他任何地方,基于 Finder 搜索)。第二位不会抛出找不到数据库文件的错误;它只是安静地找不到任何 tables.

连接数据库时需要指定dbname参数。
如果不这样做,数据库将在内存中创建并在您断开连接时消失。
path 不属于 SQLlite arguments 并且未被考虑在内:数据库是在您的工作目录中创建的。

library(DBI)

con = dbConnect(RSQLite::SQLite(),dbname = 'test.db', path = "#?*_~")
dbWriteTable(conn = con, name = "Tbl_test", value = mtcars)
dbListTables(conn = con)
#> [1] "Tbl_test"
dbDisconnect(con)

dir(".")
#>[1] "test.db"  

con = dbConnect(RSQLite::SQLite(), dbname = 'test.db')
dbListTables(conn = con)
#> [1] "Tbl_test"
dbDisconnect(con)