【问题标题】:Import csv to database将csv导入数据库
【发布时间】:2011-08-09 23:48:31
【问题描述】:

我正在尝试将数据从 csv 文件传输到我的应用程序的数据库中。 csv 文件不是从我的数据库生成的,所以有些字段我对传输不感兴趣。我该怎么做呢?

CSV:日期、参考、数量、类型、颜色、类别
DB:日期、数量、颜色、类别

【问题讨论】:

  • 张贴 CSV 的形状和表格的形状。

标签: android


【解决方案1】:

试试这样的...

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();

【讨论】:

    【解决方案2】:

    要打包静态数据,在开发时使用任何 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(",");
    

    【讨论】:

    • 这是一次性的,对于我的个人数据库,它不包含在应用程序中。问题是 csv 文件的列比我的数据库多。
    • 罗杰,我会将 csv 文件导入到包含所有列的临时表中,然后删除不必要的列。这将是您完成此任务的最简单和最快的方法。看看我的 csv-import 命令链接。
    【解决方案3】:

    对于 Java 程序员,dbis 很有用。您无需单行代码即可实现。 请在下方查看。

    https://dbisweb.wordpress.com/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-11
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      相关资源
      最近更新 更多