Van Foxpro dbf naar MySQL (2)
Foxpro 2.6 tabellen (.dbf bestanden) die via MySQL Front 2.1 moeten omgezet worden geven een probleem bij volgende veld-typen:
- memo : hierin kunnen bij Foxpro grotere hoeveelheden tekst opgeslagen worden zonder de recordstructuur ermee te belasten aangezien ze in een apart bestand bewaard worden.
- logical : wordt gebruikt voor binaire waarden 1 / 0, of True / False.
- general: hierin was een bitmap beeld opgeslagen.
Om een export van de gegevens van “orig.dbf” naar MySQL te doen paste ik de velden aan. Er zijn zover ik weet geen instructies voor in Foxpro, maar het kan wel via een omweg. Je kan de structuur van een database bewaren in een dbf file, waar die beschreven wordt door middel van velden, met een record per te beschrijven veld. Je kan vanuit die beschrijvende database terug een (lege) database genereren, en gegevens erin importeren.
Met COPY STRUCTURE EXTENDED TO tempstruc maak je die database aan. Je kan dan vanuit programmacontrole de records in die database manipuleren om records bij te maken waar de “vertaalde” waarde inkomt; bv een 1-letter veld voor de boolean, een 256 letterveld voor de memo tekst. Je kan ook de database doorlopen en het langste veld opslaan in een variabele, hier “opm_len”
APPEND BLANK
REPLACE field_name WITH temp_opm
REPLACE field_type WITH “C”
REPLACE field_len WITH opm_len
*REPLACE field_dec WITH && niet van toepassing hier
Daaruit creëer je dan een nieuwe database:
CREATE temp FROM tempstruc
en neemt de gegevens over uit de originele (APPEND FROM). Je zet dan de gegevens van de niet-compatibele velden in de nieuw bijgemaakte velden (REPLACE ALL temp_opm WITH ALLTRIM(orig_mem) ).
Nu zitten zowel de onbruikbare als de bruikbare velden in deze database. Je kopieert ze naar de uiteindelijke export versie, en laat daarbij de onbruikbare velden vallen:
COPY TO export FIELDS EXCEPT temp_mem PRODUCTION
Er zijn ongetwijfeld andere oplossingen, maar ik ging hierbij uit van de beperking dat er op die bestaande computer geen nieuwe programma’s / -versies worden bij-geïnstalleerd.
Ps: Ik kreeg nog deze tip binnen (niet zelf uitgeprobeerd): abusinet, een tool om dbf files te lezen, om te zetten naar cvs, enz., momenteel in versienummer 0.8.