Van Foxpro dbf naar MySQL
Ik had vroeger eens een programma afgehaald van het web om vanop de Windows computer de gegevens aan te reiken aan de databank: MySQL Front. Ik heb het in versie 2.1 geinstalleerd staan op de PC waar de oude applicatie en gegevens opstaan, en heb het nu terug nodig om gegevens te importeren.
MySQL Front is een hulpprogramma dat netjes installeert op de Windows 95 machine. Het voegt een menu toe met onderdelen: configuratie file wijzigen, MySQL-Front starten, website, online FAQ, readme en een “uninstall” optie. Het programma mag 30 dagen gebruikt worden alvorens te beslissen over eventuele aankoop; het is dus freeware en geen GPL licentie!
Voor gebruik hebben we twee verbindingen nodig: één naar de data van Foxpro (dbf bestanden), en één naar de MySQL server.
MySQL Front - Foxpro / odbc:
Voor de dbf files gebruikt het programma “odbc”; een aparte Windows uitbreiding die al geinstalleerd moet zijn. Via Windows Menu / Settings / Control Panel kies je “ODBC data source”. Daar voeg je toe, kies de driver voor het Foxpro dbf bestandsformaat, als bron, en duid je de map aan waarin de bestanden staan, eventueel het bestand zelf. Je kan die instelling ook opslaan, en gemakkelijk aanpassen in de odbc instellingen.
MySQL Front - MySQL:
Bij het starten van MySQL Front heb je het adres van de MySQL-server nodig, een gebruikersnaam, en een wachtwoord. Op de server moet een verbinding vanuit jouw toestel (ip-adres) toegelaten worden, en je moet rechten hebben op het maken van nieuwe tabellen. Dan wordt de verbinding gelegd en krijg je links een voorstelling van de verbinding met de bijhorende databanken en daarvan als onderverdeling de tabellen. Je kan via de menu’s allerlei bewerkingen doen, wij zijn hier geïnteresseerd in het importeren van gegevens:
Import / odbc import / data source: (naam van odbc verbinding)
Ik hoef geen naam en password in te vullen en klik gewoon “ok”, waarna de beschikbare “Tables” zichtbaar worden in een linkse kolom. Hier kan je nog aan en uitvinken voor je de aktie “import” kiest. Je kan ook details aanpassen zoals de eigenschappen van de velden waar de gegevens naartoe gaan. Je stelt de target database in (waar data naartoe moeten in je MySQL).
In het onderste deel van het venster rolt een log voorbij tijdens het importeren. Daar kan je controleren of de import goed is verlopen. Ik kreeg bij het importeren van twee .dbf bestanden in een directory de foutmelding: table doesn’t exist. Ik probeerde aparte import; een van de twee tabellen kwam er wel goed door, de andere niet. Eerst dacht ik dat de tabel al moest bestaan maar dat is niet zo; die wordt automatisch gemaakt, tenzij er een fout optreedt. Bij nader inzien blijkt de aanwezigheid van een memo veld de oorzaak te zijn van het mislukken van de import. Ik maak een versie zonder memo veld (zoek de grootste lengte van tekst, maak een veld bij me die lengte, zet de gegevens van het memoveld in dat nieuwe veld, en pas de structuur aan om het memo veld te verwijderen.
Gaat nog niet, maar nu lijkt een ander veld, met een binaire waarde, verantwoordelijk te zijn: MySQL heeft geen “true/false” veldtype. Ook dat veld wordt aangepast, en later ook nog een blob-veld (waar een beeld in de database werd opgenomen). Nu verloopt de omzetting wel goed.