我有一个csv文件,你需要迁移数据库。我创建了一个类,用于它的解析和传输到数据库,但速度相当慢。导入大约需要三分钟。有什么办法让它更快吗?我为我的英语道歉。提前感谢!
final String[] SCANCODES = {"CODEPRODUCT", "SCANCODE"};
dbSync.importCSV(SCANCODES, "SCANCODES.CSV", "SCANCODES");
////
.....
////
public void importCSV(String[] tableCol, String nameFile, String nameTable) {
final File DATABASE_DIRECTORY = new File(
Environment.getExternalStorageDirectory(), "ImportExport");
final File PATH = new File(DATABASE_DIRECTORY,"SCANCODES.CSV");
ContentValues cv = new ContentValues();
BufferedReader br = null;
String s = "";
boolean skipLines = true;
String[] data;
db.beginTransaction();
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(PATH), "Windows-1251"));
while ((s = br.readLine()) != null) {
//skip header
if (skipLines) {
skipLines = false;
continue;
}
//- 1 not skip blank
data = s.split(";", -1);
for (int i = 0; i < data.length - 1; ++i) {
cv.put(tableCol[i], data[i]);
}
db.insert(nameTable, null, cv);
}
db.setTransactionSuccessful();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
db.endTransaction();
br.close();
new Folder().deleteFolder();
} catch (IOException e) {
e.printStackTrace();
}
}
}编辑添加编码
发布于 2014-03-18 13:34:03
有一个bulkInsert方法。它应该能大大提高性能。
据我所知,您正在本地读取该.csv文件。与读取.csv文件不同,您可以在assets文件夹中使用有效的SQLite数据库发布APK,然后只需将该文件移动到数据库文件夹,如下所示:
http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
https://stackoverflow.com/questions/22480727
复制相似问题