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:

Aufruf

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

Aufruf

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

Aufruf

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

Aufruf

Wir schauen uns nun die Abkürzungen an. Welche Felder sind in der Abkürzungstabelle vorhanden?

PRAGMA table_info(abk)

Aufruf

Zum Abschluss noch eine Abfrage der ersten Länderkennzeichen.

select a.abk, a.bedeutung from abk as a where status = 'C' LIMIT 10;

Aufruf

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.

Aufruf

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.

Aufruf