我的mySQL数据库中有一个大约有1亿行的表 - 我想将其导出为不同的格式。
我正在使用libmysqlcppconn7从C ++连接到数据库。在运行如下所示的查询时,该过程占用了我所有的记忆:
unique_ptr<sql::PreparedStatement> statement(getConnection()->prepareStatement(
"SELECT " + joinedColumnNames + " FROM " + table
));
unique_ptr<sql::ResultSet> queryResult(statement->executeQuery());
while (queryResult->next()) {
// process columns and store them elsewhere
}
这是因为上面的代码试图将整个表加载到内存中。我想逐行阅读。我找到了FLAG_NO_CACHE
和php&#39; mysql_use_result
,但我找不到libcppconn的任何内容。
如何在C ++中执行此操作?
我目前的解决方法是首先SELECT count(*) FROM table
,然后在查询中使用LIMIT start,1000000
一次获取100万行。这有效,但感觉不对。