Как я могу запросить файл DBF в Java - PullRequest
3 голосов
/ 04 августа 2011

У меня довольно большой файл DBF, около 40 мегабайт, который я должен иметь возможность запрашивать.Сейчас я читаю DBF, это просто табличный текст, в базу данных h2 и опрашиваю базу данных h2.Это работает, но кажется ... глупым.Я искал драйвер JDBC типа 4 для DBF, но мне не повезло.Как правильно это сделать?

Ответы [ 3 ]

3 голосов
/ 25 декабря 2012

Для таких задач, как обмен данными большого размера - этот способ использования моста JDBC кажется мне очень медленным.Также вы можете получить некоторые ошибки во время обмена данными.

Наилучшим способом является использование файловых библиотек ввода-вывода.Через несколько лет я выпустил такую ​​чистую легковесную библиотеку и представлю вам.(Под 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();
  }

}

2 голосов
/ 04 августа 2011

В реестре драйверов JDBC http://developers.sun.com/product/jdbc/drivers.Вы можете выбрать свою платформу, например, dBase для файлов DBF и найти драйвер.Для dBase в нем перечислены драйверы, и многие из них относятся к типу 4. Я не уточнял, свободны ли какие-либо из этих драйверов.

0 голосов
/ 09 сентября 2011

Вы также можете попробовать использовать Jython вместе с моим python dbf модулем .Это позволяет искать (грубой силой и индексируется), а также шаблоны использования питона.Примечание. Я не тестировал Jython, но очень отзывчив на запросы о помощи.

...