2011-02-09 12 views
1

私はPostgresDB(55GB)に大きなテーブルを持っています。 QTでC++でスキャンし、結果を要約してDBに送り返したいと思います。私が理解する限り、デフォルトでは、QSqlQueryはすべてのデータをメイン・メモリに転送します。オブジェクトの明示的なバッファサイズを指定することは可能ですか? QT/Postgresに、データをコミットしてからC++プログラムに送信した後ではなく、徐々に答えを出したいと言うことも可能ですか?QSqlQueryバッファサイズ

私が使用していたコードは以下の通りです:

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL"); 
db.setHostName("server"); 
db.setDatabaseName("db"); 
db.setUserName("user"); 
db.setPassword("pass"); 
bool ok = db.open(); 

QSqlQuery query; 
query.setForwardOnly(true); 
query.prepare("select attributes veryLargeTable"); 
while (query.next()) { 
    int i = query.value(0).toInt(); // and work with the data 
} 

私は最近、ネット上で答えを見ましたが、私は、任意の成功せず、再び答えを探して時間を過ごしました。

答えて

0

私は(もちろん、トランザクションで)私の選択を分割します。私は今一度だけ1000行広告を読みたい場合は、私は、1000年Xは0から反復することができます。この

SELECT attribute FROM veryLargeTable LIMIT 1000 OFFSET X 

のようなsomethinを行うことができ、

SELECT COUNT(*) FROM veryLargeTable 

:最初のSELECTのようなのiMaxLinesサイズを決定、2000、...、iMaxLines-1000

よろしくお願いします。Lars

関連する問題