CSV raw file size is 11.6 MB.
Here is the code I do with Apache CSVReader & SQLCipher.
Here is the function to read string from raw.
private String readRawText(int rawId) {
InputStream inputStream = cxt.getResources().openRawResource(rawId);
InputStreamReader inputreader = new InputStreamReader(inputStream);
BufferedReader bufferedreader = new BufferedReader(inputreader);
String line;
StringBuilder stringBuilder = new StringBuilder();
try {
while ((line = bufferedreader.readLine()) != null) {
stringBuilder.append(line);
stringBuilder.append('\n');
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
return stringBuilder.toString();
}
Here is the function to insert data from strings read from readRawText(int rawId)
:
public void insertDefaultBible() {
StringReader str = new StringReader(readRawText(R.raw.kjv));
SQLiteDatabase.loadLibs(cxt);
File databaseFile = new File(Values.database.file);
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
databaseFile, "test123", null);
Iterable<CSVRecord> records = null;
try {
records = CSVFormat.EXCEL.parse(str);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (CSVRecord record : records) {
ContentValues content = new ContentValues();
content.put("scripture_code", record.get(1));
content.put("chapter_number", record.get(2));
content.put("verse_number", record.get(3));
content.put("content", record.get(4));
database.insert("kjv", null, content);
}
}
It takes several minutes. How can I make it faster to insert? What makes it slow? Why make it slow?