我经常使用>10000列的大型CSV文件(>50 big )。我正在考虑将这些信息读入RSQLite,这样我就可以轻松地查询和细分。
问题
SQLite在单个SQL中限制为2000个字段和999个主机参数(参见SQLite网站)。根据这,有一种方法可以更改SQLite的这些参数(即从源代码重新编译SQLite )。
问题
如果使用RSQLite包,如何进行上述更改?有趣的是,根据软件包的变化量g,在2011-12-01年,默认值已经分别增加到30,000和40,000,最早为0.11.0。但是,当我用10,000列的dataframes进行测试时,RSQLite v2.1.1仍然抛出一个错误。
我在这里错过了什么?如果我需要重新编译SQLite以更改值,如何让RSQLite使用该新版本?
提前感谢!
发布于 2019-12-30 11:32:53
我已经将列数的限制降低到了RSQLite 1.1中的默认值
编译限制已将
SQLITE_MAX_VARIABLE_NUMBER和SQLITE_MAX_COLUMN重置为默认值。文档表明,设置这么高的值是个坏主意。
SQLite将数据存储在磁盘上的行中。查询单个列将需要读取整个文件或其中的实质性子集。
你考虑过DuckDB吗?这是一个新的
嵌入式数据库设计用于在嵌入另一个进程时快速执行分析性SQL查询。它被设计成易于安装和使用。DuckDB为 C/C++、和R提供了绑定。
(强调我的)
我被告知,它在内部按照合并的行列顺序组织数据:查询整个列只需要读取文件的一小部分,但返回整行(过滤后)的速度仍然很快。您可以通过DBI和dbplyr访问DuckDB数据库。
警告:我不知道列的数量是否有类似的限制,但如果限制远远小于2立柱数,我会感到非常惊讶。如果对你有用的话请告诉我。
https://stackoverflow.com/questions/59529266
复制相似问题