RSQLite:如何增加列数和参数?

RSQLite: How to increase number of columns and parameters?

我经常处理超过 10,000 列的大型 CSV 文件 (>50GB)。我正在考虑将信息读入 RSQLite 以便我可以轻松查询和子集化。

问题

SQLite 在单个 SQL 中有 2000 个字段和 999 个主机参数的限制(参见 SQLite website). According to this,有一种方法可以更改这些参数 SQLite(即通过从源代码重新编译 SQLite)。

问题

如果我使用 RSQLite 包,我该如何进行上述更改?有趣的是,根据软件包的 changelog,早在 2011-12-01 的 0.11.0 版本中,默认值就已经分别增加到 30,000 和 40,000。但是当我用 10,000 列的数据帧进行测试时,RSQLite v2.1.1 仍然抛出错误。

我在这里错过了什么?如果我需要重新编译 SQLite 来更改值,我如何让 RSQLite 使用新版本?

提前致谢!

我已将列数限制减少到 RSQLite 1.1 中的默认值:

Compilation limits SQLITE_MAX_VARIABLE_NUMBER and SQLITE_MAX_COLUMN have been reset to the defaults. The documentation suggests setting to such high values is a bad idea.

SQLite 将数据按行存储在磁盘上。查询单个列将需要读取整个文件或其中的大部分子集。

你考虑过DuckDB吗?这是一个新的

embedded database designed to execute analytical SQL queries fast while embedded in another process. It is designed to be easy to install and easy to use. ... DuckDB has bindings for C/C++, Python and R.

(强调我的。)

我听说它在内部按行-列组合顺序组织数据:查询整列只需要读取文件的一小部分,但返回整行(过滤后)仍然很快。 您可以通过 DBI 和 dbplyr 访问 DuckDB 数据库。

注意事项:我不知道列数是否有类似的限制,但如果该限制远小于 2³¹,我会感到非常惊讶。让我知道它是否适合你。