我有一个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();
}
}
}
EDIT 添加了编码
答案 0 :(得分:0)
有一种bulkInsert
方法。它应该会提高性能。
据我所知,您正在本地阅读.csv文件。您可以在SQLite
文件夹中发送带有效assets
数据库的APK,而不是阅读.csv文件,然后您可以将文件移动到数据库文件夹,如下面链接中所述:
http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/