首页 > 解决方案 > 有没有办法使用 R 或 SQLlite 管理几个大的 sqlite 文件?

问题描述

我想通过管理和合并几个大的sqlite文件来制作数据库。有 100 个 sqlite3 文件,总大小为 500GB。

对于小型数据库(<2GB),我使用 R 来导入和合并几个 sqlite 文件,例如:(可能是结合 R 和 sqlite 的基本代码)

  temp_path = "D:/Wi-Fi/data/13. Campus sensing/"
  temp_filename_sqlite3 <- list.files(path= temp_path, pattern = "sqlite3$",
                                      recursive = TRUE)

  load_sql <- function(list){
    lists <- paste0(temp_path, sprintf("%s", list))
    db <- tbl(dbConnect(SQLite(), dbname = lists), "packets") %>%
      collect()        
  } 

当我为大数据集(100 个文件共 500GB)运行代码时,出现错误(错误:无法分配大小为 22.4 Gb 的向量)。

我应该使用 sqlite 程序(即 SQLlite 的数据库浏览器)吗?但是,没有用于导入和加载多个 sqlite 文件以合并它们的代码。

我是使用 SQL 的初学者,所以我想获得制作数据库的提示。

标签: rsqlite

解决方案


However there is no code for importing and loading several sqlite files for merging them.

sqlite3 程序提供了 ATTACH 用于加载多个 sqlite 数据库,但可以在任何时候附加的数据库数量很少:

ATTACH 语句是一个 SQLite 扩展,它允许将两个或多个数据库关联到同一个数据库连接,并像它们是单个数据库一样操作。同时连接的数据库数量限制为 SQLITE_MAX_ATTACHED,默认设置为 10。附加数据库的最大数量不能增加到 125 以上。

https://www.sqlite.org/limits.html

SQLlite 的数据库浏览器确实支持 ATTACH,但考虑到您的内存要求和限制,您可能最好专注于 sqlite3 可执行文件。


推荐阅读