中插入大量數據到sqlite中,我必須一次向我的android插入超過10億的數據。但是,內存不足會導致程序崩潰。 sqlite插入測試非常簡單。只需使用for循環來生成sql insert命令,並通過「begin」和「commit」來wrqpped。目前在android
private ArrayList<String> sqlInsertCmd = new ArrayList<String>();
int QUERIES_TIMES = 10000000;
private void CreateInsertQueries()
{
Random localRandom = new Random();
int i = 0;
while (i < QUERIES_TIMES)
{
int j = localRandom.nextInt(100000);
sqlInsertCmd.add("insert into " + TABLE + " (a,b,c) values (" + i + "," +
j + ",'" + String.valueOf(j) + "')");
++i;
}
}
Then..
mDB.beginTransaction();
for (int i=0; i<this.QUERIES_TIMES; i++)
{
mDB.execSQL(sqlInsertCmd.get(i));
}
mDB.setTransactionSuccessful();
mDB.endTransaction();
有沒有什麼想法可以避免內存不足?
謝謝大家,但上面的代碼只是一個簡單的例子。在我的程序中,它更復雜。我必須在容器中存儲一些東西(比如hashMap)並動態地構建sql語句。我可以創建10個服務,每個服務處理1/10個工作嗎?
很好的問題+1。 – Herry
請訪問我的[回覆](http://stackoverflow.com/a/9141116/996493),這可能會給你一些想法 – Lucifer
Logcat說什麼?在這裏展示。 – Herry