我经常使用具有 >10,000 列的大型 CSV 文件 (>50GB)。我正在考虑将信息读入RSQLite以便我可以轻松进行查询和子集化。
问题
SQLite 在单个 SQL 中限制为 2000 个字段和 999 个主机参数(请参阅SQLite 网站)。根据此,有一种方法来改变这些参数的SQLite(即,由再从源代码编译的SQLite)。
题
如果我使用的是RSQLite包,如何进行上述更改?有趣的是,根据包的更新日志,默认值早在 2011-12-01 的 0.11.0 版本就已经分别增加到 30,000 和 40,000。但是当我使用 10,000 列的数据框进行测试时,RSQLite v2.1.1仍然抛出错误。
我在这里缺少什么?如果我需要重新编译 SQLite 来更改这些值,我该如何RSQLite使用该新版本?
提前致谢!
我已将列数限制减少到RSQLite 1.1 中的默认值:
编译限制
SQLITE_MAX_VARIABLE_NUMBER并SQLITE_MAX_COLUMN已重置为默认值。文档建议设置为如此高的值是一个坏主意。
SQLite 将数据按行存储在磁盘上。查询单个列将需要读取整个文件或其中的一个重要子集。
你考虑过DuckDB吗?这是一个新的
嵌入式数据库旨在在嵌入另一个进程时快速执行分析 SQL 查询。它的设计易于安装和使用。... DuckDB 具有C/C++、Python 和R 的绑定。
(强调我的。)
有人告诉我,它以组合的行列顺序在内部组织数据:查询整列只需要读取文件的一小部分,但返回整行(过滤后)仍然很快。您可以通过 DBI 和 dbplyr 访问 DuckDB 数据库。
警告:我不知道列数是否有类似的限制,但如果限制比 2³¹ 小得多,我会感到非常惊讶。请让我知道这对你有没有用。
| 归档时间: |
|
| 查看次数: |
204 次 |
| 最近记录: |