用cursor.
https://stackoverflow.com/questions/23332978/c-postgres-libpqxx-huge-query
try {
work W(Conn);
pqxx::stateless_cursor<pqxx::cursor_base::read_only, pqxx::cursor_base::owned>
cursor(W, sql[sqlLoad], “mycursor”, false);
/ Assume you know total number of records returned /
for (size_t idx = 0; idx < countRecords; idx += 100000) {
/ Fetch 100,000 records at a time */
result r = cursor.retrieve(idx, idx + 100000);
for (int rownum = 0; rownum < r.size(); ++rownum) {
const result::tuple row = r[rownum];
vid1 = row[0].as();
vid2 = row[1].as();
vid3 = row[2].as();
…
}
}
} catch (const std::exception &e) {
std::cerr << e.what() << std::endl;
}