用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; }