Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中查询DBF文件_Java_Jdbc_Dbf - Fatal编程技术网

如何在java中查询DBF文件

如何在java中查询DBF文件,java,jdbc,dbf,Java,Jdbc,Dbf,我有一个相当大的DBF文件,大约40兆,我需要能够查询。现在我正在将DBF(只是表格文本)读入h2数据库并查询h2数据库。这是可行的,但似乎。。。愚蠢的我一直在为DBF寻找一个类型4 JDBC驱动程序,但没有任何运气。正确的方法是什么?在上有JDBC驱动程序注册表。您可以选择您的平台,例如DBF文件的dBase,并查找驱动程序。对于dBase,它列出了一组驱动程序,其中许多是类型4。我没有详细了解这些驱动程序是否是免费的。您也可以尝试与我的一起使用。它允许搜索(暴力和索引)以及Python使用模

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

在上有JDBC驱动程序注册表。您可以选择您的平台,例如DBF文件的dBase,并查找驱动程序。对于dBase,它列出了一组驱动程序,其中许多是类型4。我没有详细了解这些驱动程序是否是免费的。

您也可以尝试与我的一起使用。它允许搜索(暴力和索引)以及Python使用模式。注意:我没有使用Jython进行测试,但是我对帮助请求的响应非常迅速。

对于大型数据交换之类的任务,这种使用JDBC桥的方式在我看来非常缓慢。 此外,在数据交换期间,您可能会遇到一些运行时错误

最好的方法是使用文件IO库。 几年后,我发布了这样一个纯轻量级的库,并将向您展示。(根据LGPL)

你可以从

请参阅下面的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();
  }

}

谢谢,这是一个很好的参考资料。我想那一页一定是在我看的时候掉下来的(那是几个月前)。我找到了它的链接,但它是404'ed之类的。看起来这些都不是开源/免费的。当然,没有什么反对为软件付费的,只是很难为这个特定的项目辩护。哦,好吧。再次感谢!如果您使用的是单个DBF文件,只需将其视为二进制文件就更容易了。我记得在80年代中期实现了一个Turbo Pascal模块,该模块根据《程序员杂志》中的DBF文件格式描述读取DBF文件。我在谷歌上搜索了一下,发现了以下内容:。我在上发布了DbfEngine Java API的1.05版本。这个版本允许读取Foxpro的xBase.mem文件(内存变量文件)(可能是Clipper)