Konvertierung nach SQL
Vorbemerkung
Als “Abfallprodukt” der Entwicklung für GENprofi/2007 entstand eine Routine, die den gesamten GENprofi4 und mittlerweile GENprofi5 Datenbestand in einen SQL Dump umsetzt.
Es ist eine einfache DOS Befehlszeilenroutine, die eigentlich nur für Programmierer interessant ist. Die Routine kann aber auch im Rahmen weiterer Auswertungen eingebunden sein.
SQL Datenbanken
- Der erstellte SQL Export ist getestet mit den Datenbanken PostgreSQL, MySQL und SQlite.
- Die Daten werden automatisch im UTF-8 Format bereitgestellt.
- Die Zieldatei enthält nun ein sehr langes SQL Script, das automatisch die Tabellen anlegt und die Daten einfügt. Wie man die die SQL Datei in die Datenbanken einliest, entnehmen Sie bitte der Dokumentation der jeweiligen SQL Datenbanken. Benutzung
Die Benutzung ist sehr einfach, erfolgt aber ausschließlich in der Eingabeaufforderung.
Einfach das Programm herunterladen und im Programmverzeichnis von GENprofi entpacken. Das ist normalerweise C:\GP4 oder C:\GP5.
Ruft man nun conv2sql auf, so erhält man:
Man muss also neben dem Programm weitere Parameter angeben.
conv2sql <Mandant> <Pfad> <Zieldatei> <typ>
Parameter | Beschreibung |
---|---|
Mandant | ist dabei das zweistellige Kürzel des Forschungsbereichs |
Pfad | Der Datenpfad zu den GENprofi Daten, normalerweise C:\GP4\DATEN\ oder C:\GP5\DATEN Es können aber auch die unter Windows üblichen langen Pfadnamen eingegeben werden. |
Zieldatei | die Datei, in die der SQL Export geschrieben werden soll |
typ | mysql, pgsql und sqlite Voreingestellt ist sqlite Es gibt noch die Variante psql0, der Unterschied zu pgsql liegt darin, dass die Tabellen nicht gelöscht werden. |
Beispiel: Export des Mandanten XX in die SQL Datei xx.sql:
conv2sql XX c:\gp5\daten\ xx.sql sqlite
Beispiel mit sqlite
Aufruf Beispiel für den Mandanten XX und mit sqlite3, installiert in c:\tools\bin
C:
CD \GP5
conv2sql.exe xx c:\gp5\daten xx-neu.sql sqlite
Nach kurzer Zeit sind die Daten exportiert.
Mit einem kurzen Befehl können die Daten in eine SQLite Datenbank eingelesen werden.
c:\tools\bin\sqlite3 gp_xx.sqlite < xx-neu.sql
Beim Import kommt es zu Fehlermeldungen, da Tabellen nicht existieren. Das kann man getrost ignorieren.
Wichtig: Wenn man die Daten in eine nicht leere Datenbank importiert, dann werden die vorhandenen Tabellen gelöscht.
Nun kann man die Daten in der sqlite Datenbank abfragen.
c:\tools\bin\sqlite3 gp_xx.sqlite
Damit die Ausgaben hübsch aussehen, empfiehlt es sich, folgende Befehle einzugeben. Näheres findet man im Handbuch zu sqlite.
.headers on
.mode column
Damit man weiß, mit welchen Tabellen man etwas anfangen kann, gibt man folgenden Befehl ein
.tables
Wir schauen uns nun die Abkürzungen an. Welche Felder sind in der Abkürzungstabelle vorhanden?
PRAGMA table_info(abk)
Zum Abschluss noch eine Abfrage der ersten Länderkennzeichen.
select a.abk, a.bedeutung from abk as a where status = 'C' LIMIT 10;
Das soll für einen einfachen Überblick reichen.
Hinweise
Datenstruktur
Es ist eine ausführliche Beschreibung der GENprofi5 Datenstrukturen verfügbar, die bei der Zusammenstellung von Auswertungen hilfreich ist.
Wir arbeiten mittlerweile an weiteren Export Routinen, die mit einfacheren Datenstrukturen arbeiten, die auch direkt unter SQL sinnvoll nutzbar sind.
SQLlite / Unicode und Windows 7
Das ist eine Kombination die in der Eingabeaufforderung nicht funktioniert - egal welche Kopfstände man aufführt.
Alle Tipps mit der Einstellung der Codepage in der Eingabeaufforderung und in SQLite funktionieren nicht.
Aber natürlich gibt es eine Lösung. Man rufe einfach die Powershell unter Windows 7 auf. Und damit ist alles gut.