2008-09-01 3 views
21

У меня есть куча файлов DBF FoxPro (VFP9) в моей системе Ubuntu, есть ли библиотека, чтобы открыть их в Python? Мне нужно только прочитать их и, желательно, иметь доступ к полям memo.Самый простой способ прочитать файл DBF FoxPro с Python?

Обновление: Спасибо @cnu, я использовал Yusdi Santoso's dbf.py, и он работает красиво. Один из них: расширение имени файла напоминания должно быть в нижнем регистре, то есть .fpt, а не .FPT, каким было имя файла из Windows.

ответ

7

Вы можете попробовать это recipe on Active State.

Существует также DBFReader module, который вы можете попробовать.

Для поддержки memo fields.

+5

код [Модуль DBFReader] (http://www.garshol.priv.no/download/software/python/dbfreader.py) в настоящее время является мертвой ссылке. – Caltor 2012-10-22 22:09:19

+1

В программе полей memo оно дает число не точных данных, как извлекать данные на основе этого номера индекса, где он хранится. – MONTYHS 2013-12-10 07:32:16

+0

С сентября 2008 года (время ответа) существует еще много вариантов (ноябрь 2015 г.), например: https://pypi.python.org/pypi/dbf, https://pypi.python.org/pypi/ dbfread /, http://sourceforge.net/projects/dbfpy/. Я лично выбрал dbfread, потому что он хорошо документирован. – 2015-11-03 16:27:09

16

Я предпочитаю dbfpy. Он поддерживает чтение и запись файлов .DBF и может справиться с большинством вариантов формата. Это единственная реализация, которую я нашел, которая могла бы читать и записывать старые DBF-файлы некоторых старых систем, с которыми я работал.

9

Если вы все еще проверяете это, у меня есть конвертер GPL FoxPro-to-PostgreSQL по адресу https://github.com/kstrauser/pgdbf. Мы используем его для регулярного копирования наших таблиц в PostgreSQL для быстрой отчетности.

+0

Я случайно увидел это, проверяя что-то еще. Теперь ценитель postgreSQL, поступающий из VFP и MS SQL, очень ценится. Благодаря! – 2015-10-07 15:35:40

5

Заканчивать http://groups.google.com/group/python-dbase

В настоящее время она поддерживает DBase III и Visual FoxPro 6.0 файлы БД ... не уверен, что если изменить расположение файла в VFP 9 или нет ...

8

я был в состоянии читать DBF-файл (со связанными файлами BAK, CDX, FBT, TBK **) с использованием пакета dbf от PyPI http://pypi.python.org/pypi/dbf. Я новичок в python и ничего не знаю о файлах DBF, но он легко работал, чтобы читать DBF-файл из бизнеса моей подруги (созданный с помощью приложения POS для музыкального магазина под названием AIMsi).

После установки пакета DBF (я использовал способности и установил DBF версии 0.88, я думаю), следующий код питона работал:

from dbf import * 
test = Table("testfile.dbf") 
for record in test: 
    print record 
    x = raw_input("") # to pause between showing records 

Это все, что я знаю сейчас, но мы надеемся, что это полезно старт для кого-то другой, кто находит этот вопрос!

21 апреля 2012 СЖК Edit: Per комментарий Итана Фурмана, я должен отметить, что я на самом деле не знаю, который файлы данных были необходимы, кроме файла DBF. В первый раз, когда я запускал скрипт, только с доступным DBF, он жаловался на отсутствующий файл поддержки. Итак, я только что скопировал BAK, CDX, FPT (а не FBT, как я уже говорил до редактирования), файлы TBK, а затем он сработал.

4

Сейчас 2016 год, и мне пришлось возиться с пакетом dbf, чтобы заставить его работать. Вот версия python3 просто экспортировать файл DBF в CSV

import dbf 

d=dbf.Table('mydbf.dbf') 
d.open() 
dbf.export(d, filename='mydf_exported.csv', format='csv', header=True) 

У меня был некоторый Юникод ошибки в первом, но получил вокруг этого, отключив памятки.

import dbf 

d=dbf.Table('mydbf.dbf', ignore_memos=True) 
d.open() 
dbf.export(d, filename='mydf_exported.csv', format='csv', header=True)