我有一個與我的應用程序sqlite表...但將需要儘快添加/刪除大量數據集。我有很多選擇。現在,我有大約35,000行,我可以在大約15秒內更新。我更喜歡更快的東西。本質上只需要一列作爲我的輔助文本。將大量數據導入到android上的sqlite數據庫 - 時間太長。需要替代品
現在,用戶下載一個txt文件,然後該文件被傳遞給下面的方法。
public boolean installLanguageFile(String resourceId) {
SQLiteDatabase db;
db = new DataBaseHelper(getContext()).getWritableDatabase();
try {
File mFile = new File(getActivity().getFilesDir() + resourceId);
InputStream insertsStream = new FileInputStream(mFile);
BufferedReader insertReader = new BufferedReader(new InputStreamReader(insertsStream));
long lengthOfFile = 34504;
long total = 0;
int rowId = 1;
String sql = "UPDATE Story_Data SET text2 = ('?') WHERE _id = ?";
db.beginTransaction();
SQLiteStatement stmt = db.compileStatement(sql);
while (insertReader.ready()) {
total += rowId;
stmt.bindString(1, insertReader.readLine());
stmt.execute();
stmt.clearBindings();
publishProgress("" + (rowId * 100/lengthOfFile));
rowId++;
}
db.setTransactionSuccessful();
db.endTransaction();
insertReader.close();
//mCallback.reloadView();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
是否存在本地更改,或者是否是來自服務器的所有數據?如果它全部來自服務器,最快的方法就是下載一個新的數據庫文件。 –
如果由於其他表具有用戶輸入而無法執行此操作,但此表來自服務器 - 刪除此表並重新創建它,所有插入操作可能會比更新每一行更快。但是這需要您進行基準測試和複查。 –
如果您不在每次迭代中發佈進度,您是否嘗試過快多快?對於初學者嘗試完全刪除它 –