English version
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.
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.
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:
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.
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.
DBF2TXT \\Server\share\path\mydata.dbf "D:\Documents And Settings\MyName\mydata.txt" TXT2DBF /O /C01C8 "D:\Documents And Settings\MyName\mydata.txt"
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.