DBF2TXT a TXT2DBF

English version

Účel programu

DBF2TXT.EXE a TXT2DBF.EXE jsou dávkové konverzní utility pro převod databázového souboru formátu dBIII na textový a zpět. Převedením databáze na prostý text budeme moci snadno provádět úpravy obyčejným textovým editorem: měnit data pomocí "najdi a nahraď", konvertovat kódování češtiny, upravovat šířku nebo typ položek pouhou změnou údaje v hlavičce, pozměňovat pořadí položek pomocí manipulace se sloupcovými bloky, přidávat nové sloupce a řádky nebo i pořizovat zbrusu novou databázi. To vše lze samozřejmě provádět i klasickou cestou pomocí databázového programu, ale pro příležitostnou "datařinu" může být textový editor vhodnější - většina smrtelníků ho ovládá daleko lépe než specializovaný databázový nástroj.

Licence

Obě utility mohou být používány bezplatně i v komerčním prostředí. Šířeny mohou být pouze společně v nezměněné podobě včetně této dokumentace, tak jak jsou k dispozici např. na internetové stránce www.vitsoft.info. Utility používáte na vlastní riziko.

Formát textu

Po konverzi utilitou DBF2TXT může malá databáze vypadat např.takto:

 |SOUBOR      |VELIKOST|DATUM   |OBR|NAZEV_OBR   |POPIS               |
 |Character   |Numeric |Date    |Log|Character   |Character           |
 |          12|       7|       8|  1|          12|                  20|
 +------------+--------+--------+---+------------+--------------------+
 |CV557.ZIP   |   12472|19961112|N  |            |Slovník kiksů       |
 |CV373.ZIP   | 1259252|19961112|A  |CV373.BMP   |Apokryfy ze života  |
 |CV549.ZIP   | 1274600|19961112|A  |CV549.BMP   |Informační pramen   |
 |CV508.ZIP   |  221299|19961112|A  |CV508.BMP   |Evidence článků     |

Pole jsou v textovém řádku navzájem separována oddělovacím rámečkovým znakem, stejným znakem musí tento řádek také začínat. První čtyři řádky představují hlavičku a mají speciální význam:

  1. První řádek definuje názvy položek databáze.
  2. Ve druhém řádku jsou slovně popsány typy polí: Character, Numeric, Logical, Date nebo Memo.
  3. Třetí řádek definuje šířky polí databáze. V případě numerických položek může po desetinné tečce či čárce ještě následovat další číslo určující počet desetinných míst, např. 5.2 znamená šířku pět cifer, z toho dvě poslední číslice jsou za desetinnou tečkou.
  4. Čtvrtý řádek má pouze estetickou funkci oddělení hlavičky a dat. Při převodu se tento řádek ignoruje.

Data jsou uvnitř položek doplněna mezerami a zarovnána vlevo, pouze v případě numerického typu se údaje zarovnávají vpravo. Záznamy databáze označené k výmazu (*) se při konverzi na text vynechávají.

Utilita TXT2DBF umí takto strukturovaný textový soubor převést do databázového tvaru. Pro usnadnění vkládání dat akceptuje TXT2DBF řadu zjednodušení:
Jako oddělovač můžeme použít jakýkoli znak větší než mezera, který se jinak v datech nevyskytuje, např. lomítko, hvězdičku, nebo co se nám bude dobře hledat na klávesnici. Oddělovače lze vynechat za posledním neprázdným údajem v řádku. Pro každý řádek může být použit jiný oddělovací znak.
V druhém řádku hlavičky stačí uvádět pouze první písmeno názvu typu, tj. C,N,L,D nebo M.
Mezi oddělovacím znakem a vlastním údajem může být vložen libovolný počet mezer. Při konverzi se přebytečné mezery před a za údajem odstraní a položka se doplní na požadovanou velikost mezerami vpravo, (v případě čísel vlevo). Pokud by zadaný údaj měl více znaků, než odpovídá hlavičce, vynechají se znaky nejvíce vpravo (v případě numerického typu naopak vlevo, tj. nejvýznamnější číslice).
Při konverzi textu lze alternativně požádat utilitu TXT2DBF, aby změřila potřebné šířky položek a sama nastavila patřičné údaje ve třetím řádku hlavičky. To se dělá uvedením parametru /T (trim). Konvertor pak přidá jeden průchod navíc, při kterém empiricky zjišťuje potřebné šířky položek.
Jak je vidět na příkladu logického pole OBR o šířce 1, při konverzi databáze na text se tento sloupec rozšířil na tři znaky. To je způsobeno tím, že název pole ("OBR") je třeba vždy zobrazit kompletně. V databázové podobě bude ovšem každá logická položka zabírat pouze předepsaný jeden znak.
Výše uvedený příklad byl ve skutečnosti pořízen nejprve takto neuspořádaně:

 /SOUBOR/VELIKOST/DATUM/OBR/NAZEV_OBR/POPIS/
 *Char  * Num    * D   * Logical*C  * character
 /12/7/8/1/12/20
 ------------
 /CV557.ZIP/12472   / 19961112/N//  Slovník kiksů
 /CV373.ZIP/ 1259252/ 19961112/A/CV373.BMP/Apokryfy ze života
 /CV549.ZIP/1274600/  19961112/A/CV549.BMP/Informační pramen
 /CV508.ZIP/221299/   19961112/A/CV508.BMP/ Evidence článků

Tento text byl uložen do souboru VYBER.TXT, příkazem TXT2DBF VYBER.TXT převeden na databázi a pro kontrolu pomocí DBF2TXT /O VYBER.DBF hned zase zpět na text. Výsledek je k vidění výše.

Syntaxe

    DBF2TXT [parametry] vstupní_databázový_soubor [výstupní_textový_soubor]
    TXT2DBF [parametry] vstupní_textový_soubor [výstupní_databázov_soubor]

Název vstupního souboru se zadává jako první parametr, výsledek bude převeden na soubor stejného jména lišící se příponou. Např. příkaz "DBF2TXT CENY.DBF" převede databázi CENY.DBF na soubor CENY.TXT. Pomocí druhého parametru lze výslednému souboru předepsat i odlišný název, např. "DBF2TXT CENY.DBF CENIK.ASC". Obdobně utilita TXT2DBF konvertuje textový soubor vygenerovaný předchozí utilitou zpět do databázového formátu.
Ve verzi pro MS Windows mohou mít názvy souborů více než 8+3 znaky, musí být uzavřeny v uvozovkách, obsahují-li mezery.
Pokud cílový soubor již existuje, utilita se zastaví a ptá se na svolení k přepsání výsledného souboru. Uvedením parametru /O (overwrite) se tento dotaz potlačí, což je vhodné při dávkovém zpracování.
DBF2TXT akceptuje ještě tyto parametry:
/H způsobí vynechání textové hlavičky (prvních čtyř řádků).
Parametrem /Cxx lze zvolit jiný oddělovací znak než defaultní /CB3, tj. vertikální rámeček, např. /C3B použije středník, /C7C znak "pipe". Je dobré zvolit znak, který se nevyskytuje nikde v datech.
TXT2DBF akceptuje tyto parametry:
Při uvedení parametru /T se ignorují šířky polí uvedené ve třetím řádku, namísto toho zjišťuje TXT2DBF potřebnou šířku každého datového pole empiricky během pomocného průchodu daty.
Parametr /V způsobí, že levostranné mezery v každém datovém poli budou ponechány. To může být výhodné v případech řazení podle dat s proměnnou šířkou.
Pomocí parametru /Cxxxx lze do hlavičky DBF souboru (na ofset 32) uložit údaj o použité kódové stránce, což některé databázové aplikace (FoxPro) využívají pro správnou interpretaci znaků s diakritikou. Jsou-li data uložena např. v kódování CP1250, použijeme parametr /C01C8.
Parametr /A předepisuje připojení znaku konce souboru EOF (0x1A) na konec výsledného databázového souboru.
Parametrem /F se předepíše přidání znaku konce řádku LF (0x0A) na konci databázové hlavičky hned za znak CR (0x0D). Tím se zarovná počátek dat na hranici slova, což má příznivý vliv na rychlost dalšího zpracování, avšak některé databázové prohlížeče s tím mohou mít problém, defaultně je proto tato volba od verze 2.20 vypnuta.

Příklad

 DBF2TXT \\Server\share\path\mydata.dbf "D:\Documents And Settings\MyName\mydata.txt"
 TXT2DBF /O /C01C8 "D:\Documents And Settings\MyName\mydata.txt"

Omezení

Konverzní utility zpracovávají databáze s následujícími omezeními:
Maximální šířka záznamu (řádku) je 4096 znaků.
Záznam může obsahovat nanejvýš 255 polí.
Šířka pole nesmí přesáhnout 255 znaků.
Počet záznamů není omezen.
Dlouhé a UNC názvy fungují jen ve verzi pro Windows.

Přehled verzí

1.00 15.7.1994
První vydání.
1.20 17.3.2001
Anglická verze.
1.30 11.7.2001
Potlačena kontrola místa na disku.
2.00 7.3.2004
Nová verze pro MS Windows, integrovaná s předešlou dosovou verzí do jednoho spustitelného souboru.
Dokumentace v separátním souboru HTML.
Parametry /K /L /S /D jsou ignorovány.
V této verzi jsou vynechána českojazyčná hlášení, indikace průběhu konverze a kontrola místa na disku.
2.01 27.7.2004
Opravena chyba DBF2TXT 2.00-Win projevující se nerozpoznáním formátu v některých dBIII souborech.
2.02 1.9.2005
Opravena chyba TXT2DBF 2.01-Win projevující se falešným hlášením 'Syntax error on line 3', pokud za specifikací šířky pole následovalo 8 mezer.
2.03 4.11.2005
Opravena chyba TXT2DBF způsobující za určitých okolností poškození konvertovaných dat.
2.10 21.10.2006
Přidány parametry /H a /C pro DBF2TXT.
2.20 28.10.2015
Přidány parametry /A a /F pro TXT2DBF.