Otevření tabulky ve formátu .dbf

Wicked John

Otevření tabulky ve formátu .dbf
« kdy: 26. 01. 2017, 17:04:03 »
Zdravím,

potřeboval bych otevřít soubory .dbf a .mdx.. Naprogramoval sem si v Javě pro to aplikaci, která by měla číst z tabulky.. Bohužel ta tabulka je nějaká vadná. Stáhl jsem si Microsoft Visual Fox Pro, který by je měl přečíst, ale nedaří se. DBF Manager mi hlásí, že soubor má nepodporovaný formát(File header: DB1250CZ0). Nevíte někdo co s tím prosím?
« Poslední změna: 27. 01. 2017, 09:18:20 od Petr Krčmář »


lobo

Re:.Dbf tabulka
« Odpověď #1 kdy: 26. 01. 2017, 17:17:33 »
kukni do toho textovym/hexa editorom ci to dava zmysel podla DBF specifikacie...

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:.Dbf tabulka
« Odpověď #2 kdy: 26. 01. 2017, 17:43:53 »
.mdx je asi index. Jste si jist, ze to potrebujete otevrit?

.dbf, kdyby bylo nejhur, ma vyhodu v tom, ze ma pevnou delku zaznamu, takze pokud ho nic neotevre, mel by jit necim vydumpovat do csv. Jen si v hexaeditoru zjistite, jak dlouhy je zaznam a kde zacinaji pole. To neco si ale asi budete muset napsat.

Jinak .dbf by mohl jit otevrit v Libreoffice Calc, mozna Base. https://help.libreoffice.org/Calc/Importing_and_Exporting_dBASE_Files

Re:.Dbf tabulka
« Odpověď #3 kdy: 26. 01. 2017, 18:06:19 »
Zkuste `dbfread` knihovnu pro Python. Jak píší ostatní, mělo by to jít otevřít v LibreOffice nebo OpenOffice. Pro kontrolu to je dostačující. S některými typy buněk má OpenOffice problém. Mne tu přistane ještě .fpt soubor který obsahuje další údaje -- tyhle soubory musí být vždy v páru, ale to je asi různé podle verzí DBF;

Wicked John

Re:.Dbf tabulka
« Odpověď #4 kdy: 26. 01. 2017, 18:50:38 »
V LibreOffice se mi to otevřelo, ale je tam tolik sloupců a všechno oddělené tolika mezerami, že se v tom nevyznám :-( Zkusil sem doporučenou python knihovnu dbfread a k něčemu jsem se dostal.

UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

Jde nějak ten dbf encoding převést na ascii?


Wicked John

Re:.Dbf tabulka
« Odpověď #5 kdy: 26. 01. 2017, 19:04:34 »
Tak jsem v konstruktoru DBF dal encoding na cp1250 a vyskočilo:

unpack requires a bytes object of length 32

Tohle snad bude začarovaný kruh :-(

ET

Re:.Dbf tabulka
« Odpověď #6 kdy: 26. 01. 2017, 19:25:38 »
mam za to, ze ty dbf muzes nativne otevrit v excelu (M$ foxku kdysi snad koupil)

Ivan Nový

Re:.Dbf tabulka
« Odpověď #7 kdy: 26. 01. 2017, 19:30:57 »
V LibreOffice se mi to otevřelo, ale je tam tolik sloupců a všechno oddělené tolika mezerami, že se v tom nevyznám :-( Zkusil sem doporučenou python knihovnu dbfread a k něčemu jsem se dostal.

UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

Jde nějak ten dbf encoding převést na ascii?

Tabulku otevřete DBF('PEOPLE.DBF', encoding='cp1250') popřípadě využijete parametr parserclass= a napíšete si vlastní parser polí podle typu, kde si napíšete vlastní transformaci českých znaků do utf-8 u typu pole C.

Viz dokumentace: http://dbfread.readthedocs.io/en/latest/dbf_objects.html

A nebo můžete použít toto a upravit si kódování http://code.activestate.com/recipes/362715-dbf-reader-and-writer/

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:.Dbf tabulka
« Odpověď #8 kdy: 26. 01. 2017, 19:34:11 »
No, kdyz je k tomu .mdx, tak je to asi z Borland dBase. Foxpro melo tusim indecxy .idx. Jeste byste mohl zkusit uwarezit dBase a zkusit to v ni. Je sice strasna, ale treba Borland zatahl nejakou nekompatibilitu, kvuli ktere to v FoxPro nejde.

BTW, bych dBase z warez pustil pod Wine pod userem kvuli tomu vytvorenym.

Re:.Dbf tabulka
« Odpověď #9 kdy: 26. 01. 2017, 20:54:32 »
mam za to, ze ty dbf muzes nativne otevrit v excelu (M$ foxku kdysi snad koupil)

M$ foxku naozaj kúpil, ale už ju aj dodrbal a pochoval ako takmer všetko na čo siahol. M$ oppice vedeli otvoriť *dbf, ale novšie verzie už ani to nedokážu - proste idú od deviatich k piatim.

Mne tu přistane ještě .fpt soubor který obsahuje další údaje -- tyhle soubory musí být vždy v páru, ale to je asi různé podle verzí DBF;

Áno, *.dbf a *.fpt sú v páre, pokiaľ je v štruktúre *.dbf použité memopole, inak súbor *.fpt nie je potrebný.

No, kdyz je k tomu .mdx, tak je to asi z Borland dBase. Foxpro melo tusim indecxy .idx.

Súbory *.mdx nepoznám, *.idx používal aj M$ VisualFoxPro, u nás vo firme sa na indexy používali *.cdx, kde bolo naraz viac indexov v jednom súbore. Súbory *.idx sme používali tiež ale na dynamicky tvorené indexy, ktoré sa po použití vymazali.

ehmmm

Re:.Dbf tabulka
« Odpověď #10 kdy: 26. 01. 2017, 22:12:55 »
DBF je normalne citejnej nejakym hexaeditorem.
Jediny problem je v hlavicce.
Tusim, ze zrovna FoxPro umelo jeste nejakou rozsirenou hlavicku.
Ale pokud vis, jaka data v tom dbf hledas, tak je tam bez problemu najdes.
Nez resit problemy s ruznymi knihovnami, tak zrovna tohle bych si pro jeden konkretni soubor naprogramoval sam. Asi to neni sprany postup, ale vedl by rychleji k cili.

Ivan Nový

Re:.Dbf tabulka
« Odpověď #11 kdy: 26. 01. 2017, 22:44:45 »
Zkuste toto. https://sourceforge.net/projects/harbour-project/

příkaz hbrun tabulku otevře a můžete používat klasické XBase příkazy v interpretu, například GOTO, SET FILTER TO, BROWSE(), ...

Wicked John

Re:.Dbf tabulka
« Odpověď #12 kdy: 26. 01. 2017, 23:01:28 »
DBF je normalne citejnej nejakym hexaeditorem.
Jediny problem je v hlavicce.
Tusim, ze zrovna FoxPro umelo jeste nejakou rozsirenou hlavicku.
Ale pokud vis, jaka data v tom dbf hledas, tak je tam bez problemu najdes.
Nez resit problemy s ruznymi knihovnami, tak zrovna tohle bych si pro jeden konkretni soubor naprogramoval sam. Asi to neni sprany postup, ale vedl by rychleji k cili.

Rád bych si to sám udělal, bohužel zatím nevím jak na to. Nechám se inspirovat od cizích a zkusím porozumět kódu, abych si jej mohl napsat pro můj soubor. Nejde o to tam najít data, ale chtěl bych s tím souborem dále pracovat tzn. zapisovat i číst

Re:.Dbf tabulka
« Odpověď #13 kdy: 27. 01. 2017, 07:11:38 »
Nejde o to tam najít data, ale chtěl bych s tím souborem dále pracovat tzn. zapisovat i číst
V tom případě musíte nejprve zjistit, o jaký typ DBF souboru se jedná. Tenhle typ souborů používaly minimálně FoxPro, dBase a Clipper, a lišilo se to i podle verzí.

K zapisování do toho souboru byste měl mít velmi dobrý důvod (napadá mne jediný – stále používáte původní aplikaci,která s tím souborem pracuje, a potřebujete do něj dostat data jinak, než přes tu aplikaci). Jinak je podle mne nejlepší volba ta data nejprve zkonvertovat do nějaké současné databáze a pracovat až s ní.

Re:Otevření tabulky ve formátu .dbf
« Odpověď #14 kdy: 27. 01. 2017, 12:30:07 »
Jak píše Filip Jirsák, přečtěte to a rychle pryč, pokud máte možnost. Jinak ty problémy s kódováním v Pythonu můžou být také způsobeny verzemi Pythonu (2/3) a knihovnou dbfread.