作者:jgfioirejmf | 来源:互联网 | 2023-05-16 23:05
IcurrentlyhaveaCSVfilethatIparseandamtryingtoinsertthedataintotheandroiddatabase.
I currently have a CSV file that I parse and am trying to insert the data into the android database. The problem I am having is that it is taking way too long to insert all of the data. It's a good amount of data but I feel like it shouldn't take 20min or so to complete.
我现在有一个CSV文件,我解析并试图将数据插入到android数据库中。我的问题是,要插入所有数据的时间太长了。这是一个很好的数据,但我觉得不应该花20分钟左右完成。
Basically, I create my database, then begin the parsing. While parsing through each individual CSV row, I grab the required data and insert it into the database. In total there are around 40000 rows.
基本上,我创建了我的数据库,然后开始解析。在解析每个CSV行时,我获取所需的数据并将其插入到数据库中。总共大约有40000行。
Is there any way I can speed up this process? I have tried batch inserts but it never really helped (unless I did it wrong).
有什么办法可以加快这个过程吗?我尝试过批量插入,但它从来没有真正的帮助(除非我做错了)。
Code down below.
下面的代码。
Thanks.
谢谢。
DatabaseHelper (i have two insert commands based on the amount of data in each csv row):
DatabaseHelper(根据每个csv行中的数据量,我有两个insert命令):
// add zipcode
public void add9Zipcode(String zip, String city, String state, String lat,
String longi, String decom) {
// get db and content values
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
db.beginTransaction();
try{
// add the values
values.put(KEY_ZIP, zip);
values.put(KEY_STATE, state);
values.put(KEY_CITY, city);
values.put(KEY_LAT, lat);
values.put(KEY_LONG, longi);
values.put(KEY_DECOM, decom);
// execute the statement
db.insert(TABLE_NAME, null, values);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
db.close();
}
public void add12Zipcode(String zip, String city, String state, String lat,
String longi, String decom, String tax, String pop, String wages) {
// get db and content values
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
db.beginTransaction();
try{
// add the values
values.put(KEY_ZIP, zip);
values.put(KEY_STATE, state);
values.put(KEY_CITY, city);
values.put(KEY_LAT, lat);
values.put(KEY_LONG, longi);
values.put(KEY_DECOM, decom);
values.put(KEY_TAX, tax);
values.put(KEY_POP, pop);
values.put(KEY_WAGES, wages);
// execute the statement
db.insert(TABLE_NAME, null, values);
db.setTransactionSuccessful();
} finally{
db.endTransaction();
}
db.close();
}
Parse File:
解析文件:
public void parse(ArrayList theArray, DatabaseHandler db) {
String[] data = null;
// while loop to get split the data into new lines
// for loop to split each string in the array list of zipcodes
for (int x = 0; x
1 个解决方案