我在SQLite
计算机上使用SRombauts SQLite Wrapper用于C ++和3.8.10.2
版本Debian Jessie
。
我可以INSERT
或SELECT
数据没有问题,但奇怪的是,数据库总是在56852480 bytes
停止增长(我从ls -l database.db
命令获得了这些信息)。
我想要完成的是将大(280'000
行)csv文件的数据插入数据库。
嗯,这是我的代码的简化版本:
#include <iostream>
#include <csv.h> //small csv class of mine
#include <SQLiteCpp/SQLiteCpp.h>
#include <string>
int main()
{
SQLite::Database db("database.db", SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE);
db.exec("DROP TABLE IF EXISTS bernd");
//simplified version of the table, there would be more columns
db.exec("CREATE TABLE bernd(id INTEGER PRIMARY KEY, loads_of_data TEXT)");
SQLite::Transaction tr;
SQLite::Statement stmt("INSERT INTO bernd(loads_of_data) values(?)");
Csv csv("file.csv");
while(csv.getNext())
{
stmt.bind(1, csv.getValue("loads_of_data"));
stmt.executeStep();
stmt.reset();
}
tr.commit();
}
我知道我应该使用一些try{} catch{}
块,但我想保持代码较小。
我阅读了一些关于SQLite
限制的内容,但是对于这种情况设置了唯一一个显着的SQLITE_MAX_PAGE_COUNT
,它的最大值没有任何区别。
这里发生了什么?似乎没有人遇到这个问题,我真的很困惑! 我们非常感谢您对正确方向的任何见解或暗示!