使用Java将未知数据类型导入SQLite

时间:2014-08-14 17:43:12

标签: java sqlite

我有一个巨大的CSV文件(500K行x 212列),我想将其导入Java桌面应用程序中的SQLite数据库。如果列包含整数,实数或文本,我不知道提前知道。所以我把所有类型的TEXT都安全起来。虽然它生成了500MB的db文件,但这样可以正常工作。接下来,我按如下方式在JTable中显示数据:

  DefaultTableModel model = new DefaultTableModel();
  Object[] row = new Object[numCols];
  ResultSet rs = stmt.executeQuery("SELECT * FROM " +tableName);
  while (rs.next()) {   //for each row
    for (int i=0; i<numCols; i++) { //for each col
      row[i] = rs.getObject(i+1);
    }
    model.addRow(row);
  }

这适用于前158,000行,但随后会耗尽堆内存。我将堆设置为32b系统的最大值,并确认可用的ram。我认为问题在于,因为我将SQLite中的所有内容都存储为TEXT类型,所以rs.getObject()可能会返回字符串,即使大多数列(事实证明)都是整数,这会占用很多冲压。

有人可以建议如何在正确的数据类型中动态创建SQLite列,和/或在用完ram之前将JTable列动态设置为正确的类吗?

0 个答案:

没有答案