我正在从服务器上下载一个csv。我必须将其数据插入到sqlite数据库表(单个表)中。我从服务器获取文件文件并将其保存在SD卡上。这是我阅读Csv文件的代码
public synchronized void insertAllDataToDB(String path) {
FileReader file = null;
try {
file = new FileReader(path);
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader buffer = new BufferedReader(file);
String line = "";
sqLite.beginTransaction();
try {
while((line = buffer.readLine()) != null) {
String[] str = line.split(",");
ContentValues values=new ContentValues(4);
if(str.length!=8){
continue;
}
values.put(col1,str[0]);
values.put(col2,str[1]);
values.put(col3,str[2]);
values.put(col4,str[3]);
values.put(col5,str[4]);
values.put(col6,str[5]);
values.put(col7,str[6]);
sqLite.insert(TABLE_NAME,null, values);
Log.e("Inserted",values.toString());
}
} catch (SQLException | IOException e) {
e.printStackTrace();
Log.e("Exception",e.getLocalizedMessage());
}
finally{
}
sqLite.setTransactionSuccessful();
sqLite.endTransaction();
}
它工作得很好,但问题是我的Csv文件数据在其列数据中有逗号本身,当我从逗号分割它时它也分割数据..任何人都可以告诉我如何摆脱这个问题。或者任何人都有另一种方法来实现这一点提前谢谢..我被困了
答案 0 :(得分:2)
我这样做是为了将美国的状态加载到我的应用程序中:
Scanner scanner = new Scanner(mContext.getResources().openRawResource(R.raw.states_csv));
db.beginTransaction();
String line;
while(scanner.hasNextLine() && ((line = scanner.nextLine()) != null)) {
String[] values = line.split(",");
if(values.length != 4)
continue;
for(int i = 0; i < values.length; i++)
values[i] = values[i].replace("\"", "");
ContentValues contentValues = new ContentValues();
contentValues.put(States.NAME, values[2]);
contentValues.put(States.CODE, values[1]);
contentValues.put(States.COUNTRY_CODE, values[3]);
db.insert(States.TABLE_NAME, null, contentValues);
}
db.setTransactionSuccessful();
db.endTransaction();
我将.csv文件放入res / raw文件夹,它运行正常。