現在、一度に 100 億を超えるデータを Android に挿入する必要があります。ただし、メモリ不足の問題により、プログラムがクラッシュします。sqlite 挿入テストは非常に単純です。forループを使用してSQL挿入コマンドを生成し、「begin」と「commit」でwrqppedするだけです。
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 のジョブを処理することはできますか?