r - 有没有办法使用 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 的初学者,所以我想获得制作数据库的提示。
解决方案
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 可执行文件。
推荐阅读
- html - 无法将自定义 CSS 类添加到图像
- mysql - Caml查询 - 查看没有时间戳的日期类型列
- python - 如何在每个 Qlabel PyQt5 中显示两个图像
- google-apps-script - 如何在 google docs / google apps 脚本中删除 pdf 导出的白色背景层?
- puppeteer - Puppeteer - 处理基本身份验证弹出窗口(单击链接后出现)
- visual-studio-code - 无法使用 task.json 在 macOS Catalina 的 vscode 中编译 fortran 90 代码
- javascript - 多次调用链接到异步函数js的函数
- android - audiomanager.setspeakerphoneon(true) 不适用于 android pie
- amazon-web-services - 如何使用 AWS iOS SDK 获取其他用户的个人资料
- android - 我可以通过使用 int 而不是 string 来减少 Firebase 实时数据库中的下载和/或存储大小吗?