2011-04-21 201 views
0

我试图将数据从csv文件传输到我的应用程序上的数据库。 csv文件不是从我的数据库生成的,所以有些字段我不感兴趣传输。我会怎么做呢?将csv导入数据库

CSV:日期,参考文献,数量,类型,颜色,类别
DB:日期,数量,颜色,类别

+0

发布CSV的形状和表格的形状。 – 2011-04-21 03:18:05

回答

2

尝试这样的事情......

FileReader fr = new FileReader(fileName); 
BufferedReader br = new BufferedReader(fr); 
String data = ""; 
String tableName ="MY_TABLE"; 
String columns = "date,quantity,color,category"; 
String InsertString1 = "INSERT INTO " + tableName + " (" + columns + ") values("; 
String InsertString2 = ");"; 

db.beginTransaction(); 
while ((data = br.readLine()) != null) { 
    StringBuilder sb = new StringBuilder(InsertString1); 
    String[] sarray = data.split(","); 
    sb.append("'" + sarray[0] + "',"); 
    sb.append(sarray[2] + "',"); 
    sb.append(sarray[4] + "',"); 
    sb.append(sarray[5] + "'"); 
    sb.append(InsertString2); 
    db.execSQL(sb.toString()); 
} 
db.setTransactionSuccessful(); 
db.endTransaction(); 
1

若要打包静态数据,使用任何UI或csv-import command在开发时,船舶此sqlite db file into asset folder,然后,您可以copy the entire sqlite file onto the device when your application is first run.

在运行时插入了大量的数据,bulk insert using transactions是最好的性能

您还可以使用BufferReader

BufferedReader in = new BufferedReader(csvfilepath); 
     String reader = ""; 
     while ((reader = in.readLine()) != null){ 
      String[] RowData = reader.split(","); 
+0

这是一次性的事情,对于我的个人数据库,它不包含在应用程序中。问题是csv文件比我的数据库有更多的列。 – Roger 2011-04-21 03:28:46

+1

Roger,我会将csv文件导入临时表与所有列,然后删除不必要的列。这将是您执行此任务的最简单,最快捷的方式。看看我的csv-import命令链接。 – Priyank 2011-04-21 03:37:09