如何在java中查询DBF文件
我有一个相当大的DBF文件,大约40兆,我需要能够查询。现在我正在将DBF(只是表格文本)读入h2数据库并查询h2数据库。这是可行的,但似乎。。。愚蠢的我一直在为DBF寻找一个类型4 JDBC驱动程序,但没有任何运气。正确的方法是什么?在上有JDBC驱动程序注册表。您可以选择您的平台,例如DBF文件的dBase,并查找驱动程序。对于dBase,它列出了一组驱动程序,其中许多是类型4。我没有详细了解这些驱动程序是否是免费的。您也可以尝试与我的一起使用。它允许搜索(暴力和索引)以及Python使用模式。注意:我没有使用Jython进行测试,但是我对帮助请求的响应非常迅速。对于大型数据交换之类的任务,这种使用JDBC桥的方式在我看来非常缓慢。 此外,在数据交换期间,您可能会遇到一些运行时错误 最好的方法是使用文件IO库。 几年后,我发布了这样一个纯轻量级的库,并将向您展示。(根据LGPL) 你可以从 请参阅下面的dbf读取代码。这很简单如何在java中查询DBF文件,java,jdbc,dbf,Java,Jdbc,Dbf,我有一个相当大的DBF文件,大约40兆,我需要能够查询。现在我正在将DBF(只是表格文本)读入h2数据库并查询h2数据库。这是可行的,但似乎。。。愚蠢的我一直在为DBF寻找一个类型4 JDBC驱动程序,但没有任何运气。正确的方法是什么?在上有JDBC驱动程序注册表。您可以选择您的平台,例如DBF文件的dBase,并查找驱动程序。对于dBase,它列出了一组驱动程序,其中许多是类型4。我没有详细了解这些驱动程序是否是免费的。您也可以尝试与我的一起使用。它允许搜索(暴力和索引)以及Python使用模
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();
}
}谢谢,这是一个很好的参考资料。我想那一页一定是在我看的时候掉下来的(那是几个月前)。我找到了它的链接,但它是404'ed之类的。看起来这些都不是开源/免费的。当然,没有什么反对为软件付费的,只是很难为这个特定的项目辩护。哦,好吧。再次感谢!如果您使用的是单个DBF文件,只需将其视为二进制文件就更容易了。我记得在80年代中期实现了一个Turbo Pascal模块,该模块根据《程序员杂志》中的DBF文件格式描述读取DBF文件。我在谷歌上搜索了一下,发现了以下内容:。我在上发布了DbfEngine Java API的1.05版本。这个版本允许读取Foxpro的xBase.mem文件(内存变量文件)(可能是Clipper)