我有一个相当大的DBF文件,大约40兆,我需要能够查询。现在我正在读取DBF,它只是表格文本,进入h2数据库并查询h2数据库。这有效,但似乎......愚蠢。我一直在寻找DBF的4类JDBC驱动程序,但没有任何运气。这样做的正确方法是什么?
答案 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进行测试,但对响应请求非常敏感。