【发布时间】:2021-02-20 13:34:31
【问题描述】:
我有一个 *.csv 文件,其中包含列式数字和字符串(磁盘上 13GB),我将其导入新的duckdb(或 sqlite)数据库并将其保存,以便稍后在 R 中访问它。但是重新连接会重复它并且是很慢,这是错的吗?
在 R 中,我正在执行以下操作:
library(duckdb)
library(dplyr)
library(DBI)
#Create the DB
con <- dbConnect(duckdb::duckdb(), "FINAL_data.duckdb")
#Read in the csv
duckdb_read_csv(con, "data", "FINAL_data_new.csv")
然后我关闭 R 并重新启动它以查看它是否有效:
#这超级慢(大约 10 分钟),因为它看起来像是在某处再次写入数据库。但为什么呢?
con <- dbConnect(duckdb::duckdb(), "FINAL_data.duckdb")
注意。我添加了 sqlite 作为标签,因为我认为这不是鸭子数据库所特有的
【问题讨论】:
-
哪一部分慢?如果它是
dbConnect,这对于您的设置或duckdb包都是特定的。使用odbc和DBI连接到我曾经使用过的任何 SQL 类型的数据库总是非常快。 -
哦,这真的很有趣...... dbconnect 在 RStudio 中非常慢。从终端窗口看,闪电般的速度……真奇怪。任何想法为什么?
-
你试过更新rstudio吗?我没有明显的理由。
-
或者可能是从 rstudio 启动速度很慢,因为您有很多从之前的会话中保存的大变量。
rm(list =ls()) ; save.image()可以解决这个问题。 -
我会试试的,谢谢。仔细检查一下,您是否使用 tbl(con, "data) 作为要查询的对象?