+++ title = "Konvertierung nach SQL" weight = 10 toc = true +++
====== 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:
{{:gpclassic:basis:aufruf.png?400|Aufruf}}
Man muss also neben dem Programm weitere Parameter angeben.
conv2sql
^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 [[https://sqlite.org/index.html|sqlite3]], installiert in c:\tools\bin
C:
CD \GP5
conv2sql.exe xx c:\gp5\daten xx-neu.sql sqlite
{{:gpclassic:basis:export.png?400|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
{{:gpclassic:basis:sqlite.png?400|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
{{:gpclassic:basis:sqlite_tables.png?400|Aufruf}}
Aufruf
Wir schauen uns nun die Abkürzungen an. Welche Felder sind in der Abkürzungstabelle vorhanden?
PRAGMA table_info(abk)
{{:gpclassic:basis:table_info.png?400|Aufruf}}
Aufruf
Zum Abschluss noch eine Abfrage der ersten Länderkennzeichen.
select a.abk, a.bedeutung from abk as a where status = 'C' LIMIT 10;
{{:gpclassic:basis:select.png?400|Aufruf}}
Aufruf
Das soll für einen einfachen Überblick reichen.
====== Hinweise ======
===== Datenstruktur =====
Es ist eine ausführliche Beschreibung der [[tech/datenstrukturen|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.
{{:gpclassic:basis:win7.png?400|Aufruf}}
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.
{{:gpclassic:basis:win7_2.png?400|Aufruf}}
Aufruf