[gnucash-de] Migration nach mySQL?

Klaus Dahlke klaus.dahlke at gmx.de
Die Jan 23 12:21:26 EST 2007


On Thu, 11 Jan 2007 06:33:46 +0100
Marco Balmer <maba-mailings-gnucash at micressor.ch> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hallo zusammen
>
> Gibt es irgendwo ein howto, wie man seine GNUCash datei in eine mySQL
> Datenbank migrieren kann? Auf Anhieb habe ich gerade nichts gefunden.
>
> Somit würden sich doch auch die Diskussionen erledigen, ob man nach dem
> Jahresabschluss das neue Jahr in eine neue GNUCash Datei anlegen soll?
>
> Cheers
> Marco

Hallo Marco,
früher hatte gnucash eine postgresql-datenbank genutzt, was eigentlich auch recht gut lief. Die Neuerungen wie Kunde, Lieferanten etc. haben es aber nicht in die Datenbank geschafft und zu gnucash-2.0 wurde das Schreiben auf die Datenbank abgeklemmt. Aber um zu Auswertezwecken die Daten in eine Datenbank zu bekommen, habe ich einmal zwei Perl-Skripte gebastelt (ich bin kein Programmierer, bitte entschuldigt die vielleicht etwas 'unsophisticated' Programmierung) (s. Anhang).

Aus historischen Gründen nutze ich weiterhin postgresql, der Einsatz auf MySQL sollte aber keine größeren Umstellungen erfordern.

Schritte zum ersten  Anlegen:
1) Datenbank ohne Tabellen anlegen
2) die angehängte SQL-Datei 'gnctables.sql' einspielen (legt die relevanten Tabellen mit den letzten mir zugänglichen Gnucash-Definitionen an)
3) das Skript gnc2sql.pl laufen lassen. Dazu müssen natürlich die notwendigen Perl-Module vorhanden sein. Vorher sind als lokale Anpassungen notwendig:
    - Zeile 37: Dateiname anpassen
    - Zeile 71: Datenbank, Nutzer und Passwort

Dieses Skript lädt Konten, Transaktionen mit zugehörigen Splits, Commodities, und deren Preis in die jeweiligen Tabellen. Vor dem erfolgreichen Einspielen mußte ich alle Einträge aus den Konten Orphan-EUR und Imbalance-EUR löschen, auch wenn diese Einträge ohne Wert oder ähnliches waren. Im normalen gnucash-Modues darf in diesen Konten nur ein einzige Zeile mit dem aktuellen Datum sichtbar sein.

Der Schluß des Skripts schreibt das aktuelle Datum in eine Datei. Das Datum wird benötigt um festzustellen, wann das letzte Mal neue Transaktionen eingefügt werden. Das Skript 'gnc2sql_update.sql' schreibt nur die Transaktionen und Kurse der Commodities auf die Datenbank, deren Zeitstempel (date_entered für Transaktionen, Datum der Kursfestsetzung) älter sind als das letzte Schreiben auf die Datenbank. Das ist nicht perfekt, aber momentan viel mir nichts besseres ein. Konten und Commodities selbst haben keinen Zeitstempel und müßten ggf. händisch gepflegt werden oder mit anderen Methoden in die jeweiligen Tabellen eingetragen werden (z.B: Inhalte Tabelle gncaccount komplett löschen und mit einem neuen Perl-Skript nur die Konten erneut alle einfügen oder eine Regel auf der Datenbank definieren, die dann nur die neuen Werte einträgt). Bei 'gnc2sql_update.sql' sind die gleichen Anpassungen vorzunehmen wie oben (Dateiname, Datenbank, Nutzer, Passwort).

Viel Spaß und Erfolg,
Klaus




-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : gnc2sql.pl
Dateityp    : application/x-perl
Dateigröße  : 8720 bytes
Beschreibung: nicht verfügbar
URL         : http://lists.gnucash.org/pipermail/gnucash-de/attachments/20070123/8b87911a/attachment-0004.bin 
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : gnc2sql_update.pl
Dateityp    : application/x-perl
Dateigröße  : 6655 bytes
Beschreibung: nicht verfügbar
URL         : http://lists.gnucash.org/pipermail/gnucash-de/attachments/20070123/8b87911a/attachment-0005.bin 
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : gnctables.sql
Dateityp    : text/x-sql
Dateigröße  : 21578 bytes
Beschreibung: nicht verfügbar
URL         : http://lists.gnucash.org/pipermail/gnucash-de/attachments/20070123/8b87911a/attachment-0006.bin 
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: nicht verfügbar
URL         : http://lists.gnucash.org/pipermail/gnucash-de/attachments/20070123/8b87911a/attachment-0007.bin