如何在java中查询DBF文件

时间:2011-08-04 02:40:50

标签: java jdbc dbf

我有一个相当大的DBF文件,大约40兆,我需要能够查询。现在我正在读取DBF,它只是表格文本,进入h2数据库并查询h2数据库。这有效,但似乎......愚蠢。我一直在寻找DBF的4类JDBC驱动程序,但没有任何运气。这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:3)

对于大型数据交换等任务 - 这种使用JDBC桥的方式在我看来非常缓慢。 您还可以在数据交换期间获得一些运行时错误。

最好的方法是使用文件IO库。 几年后,我发布了这样纯粹的纯轻量级库,并将为您呈现。 (根据LGPL)

您可以从here

下载

请参阅下面的dbf阅读代码。这很简单。

public class Fp26Reader {
  private static void testRead() {
        DbfIterator dbfIterator = DbfEngine.getReader(

        Fp26Reader.class.getResourceAsStream("FP_26_SAMPLE.DBF"), null);

        while (dbfIterator.hasMoreRecords()) {
              DbfRecord dbfRecord = dbfIterator.nextRecord();
              String string = dbfRecord.getString("string");
              float sumFloat = dbfRecord.getFloat("sum_f");
              BigDecimal sumNumeric = dbfRecord.getBigDecimal("sum_n");
              boolean bool = dbfRecord.getBoolean("bool_val");
              Date date = dbfRecord.getDate("date_val");

              System.out.println(string + " " + sumFloat + " " + sumNumeric + " "+ bool + " " + date);
        }
  }

  public static void main(String[] args) {
        Fp26Reader.testRead();
  }

}

答案 1 :(得分:2)

http://developers.sun.com/product/jdbc/drivers有一个JDBC驱动程序注册表。您可以选择平台,例如DBase for DBF文件并查找驱动程序。对于dBase,它列出了一堆驱动程序,其中许多是类型4.我没有查看是否有任何这些驱动程序是免费的。

答案 2 :(得分:0)

您也可以尝试将Jython与我的python dbf module一起使用。它允许搜索(强力和索引)以及pythonic使用模式。注意:我没有使用Jython进行测试,但对响应请求非常敏感。