Seite 1 von 1

[gelöst] Umstellung Anwendung von eingebetteter DB auf externe SQLite-DB

Verfasst: Do 20. Jul 2023, 16:18
von geraldfo
Hallo allerseits,

ich habe ein odb-File mit eingebetteter HSQL-Datenbank, vielen Queries und einem Formular mit ziemlich vielen Elementen.

Zukünftig möchte ich eine per ODBC angebundene SQLite-DB verwenden.

Der grundsätzliche Zugriff auf die externe DB klappt bereits.
Datenimport und -export sollten auch kein Problem sein.

Die Systemumgebung ist Ubuntu-Linux.

Meine Frage:
Kann man ein vorhandenes odb-File so ändern, dass es auf eine externe DB statt auf die interne DB zugreift?
Oder muss man ein odb-File komplett neu aufbauen?

LG Gerald

Re: Umstellung Anwendung von eingebetteter DB auf externe SQLite-DB

Verfasst: Fr 21. Jul 2023, 08:58
von RobertG
Hallo Gerald,

Du kannst die Daten von einer Datenquelle zur anderen kopieren. Das geht aber schon einmal davon aus, dass alle Felder auch entsprechend in der anderen Datenbank passen.
Mit den Abfragen und Ansichten bekommst Du vermutlich erste Probleme. Das ist ja das, was so problematisch beim migrieren von der internen HSQLDB zur internen Firebird Datenbank ist.

Die vorhandene *.odb-Datei könntest Du sinnvoll nur bei einer neuen Datenquelle nutzen, wenn es sich dabei um die gleiche Datenbankstruktur handelt. Bei Dir wäre das also eine neuere HSQLDB, nicht aber SQLite.

Im Prinzip geht natürlich eine entsprechende Änderung innerhalb so einer *.odb-Datei. Schau Dir dazu im Handbuch einmal den Anhang an, besonders das Kapitel "Änderung der Datenbankverbindung zur externen HSQLDB". Da stehen die entsprechenden Hinweise, an welcher Stelle der in der *.odb-Datei liegenden "content.xml" Änderungen für HSQLDB vorgenommen werden müssen. Jetzt müsstest Du eine neue *.odb-Datei mit den entsprechenden Verbindungsdaten zu SQLite öffnen und die entsprechenden Verbindungsdaten in der alten *.odb-Datei durch die neuen ersetzen.

Gruß

Robert

Re: Umstellung Anwendung von eingebetteter DB auf externe SQLite-DB

Verfasst: Fr 21. Jul 2023, 11:22
von geraldfo
Hallo Robert,

die externe Datenbank muss natürlich die gleiche Struktur haben.

Ich werd mir die Doku und die Datei content.xml ansehen.

Herzlichen Dank!
Gerald

Re: Umstellung Anwendung von eingebetteter DB auf externe SQLite-DB

Verfasst: Fr 21. Jul 2023, 13:39
von F3K Total
Moin,
es hat mich interessiert ob mir die Verbindung via JDBC gelingen würde, und ja, es klappt.
Anbei eine dafür vorbereitete .odb-Datei mit einem Makro.
Ich habe mir folgenden JDBC-Driver heruntergeladen und auf meinem Rechner abgelegt.
Einfach das Makro in der angehängten .odb-Datei über das Menü starten,
SQLITE.png
SQLITE.png (10.27 KiB) 3660 mal betrachtet
dann die eigene oder unten mitgelieferte .sqlite Datenbank, im Anschluss den .jar-Driver auswählen, speichern, fertig ist die .odb mit SQLITE-Verbindung über JDBC.
Getestet mit AOO, LO unter Windows 10 und Linux Mint.

Gruß und viel Erfolg damit.

Re: Umstellung Anwendung von eingebetteter DB auf externe SQLite-DB

Verfasst: Fr 21. Jul 2023, 13:53
von geraldfo
Hallo F3K Total,

vielen Dank!!!

Ich probier’s jetzt einmal mit ODBC. Es ist aber gut zu wissen, dass es noch eine Alternative gibt.

Schönes Wochenende!
Gerald

Re: Umstellung Anwendung von eingebetteter DB auf externe SQLite-DB

Verfasst: Fr 21. Jul 2023, 14:34
von geraldfo
Hallo allerseits,

ich bin Roberts Vorschlag gefolgt – und es hat geklappt!

Zusammenfassung:
[*] Arbeitsverzeichnis anlegen
[*] odb-File in Verzeichnis kopieren
[*] Arbeitskopie odb-File entzippen
[*] content.xml editieren (siehe unten)
[*] Unterverzeichnis database/ löschen (enthält die nicht mehr benötigte eingebettete HSQLDB)
[*] Arbeitskopie odb-File löschen
[*] Inhalt des Arbeitsverzeichnisses zippen = neues odb-File

Einträge in content.xml

Eingebettete HSQL-Datenbank

Code: Alles auswählen

<db:connection-data>
    <db:connection-resource xlink:href="sdbc:embedded:hsqldb" xlink:type="simple"/>
    <db:login db:is-password-required="false"/>
</db:connection-data>
<db:driver-settings db:system-driver-settings="" db:base-dn="" db:parameter-name-substitution="false"/>
Externe SQLite-Datenbank, per ODBC angebunden

Code: Alles auswählen

<db:connection-data>
    <db:connection-resource xlink:href="sdbc:odbc:datenbank_name" xlink:type="simple"/>
    <db:login db:is-password-required="false"/>
</db:connection-data>
<db:driver-settings db:system-driver-settings="" db:base-dn=""/>
'datenbank_name' muss durch den richtigen Namen erstzt werden.

Zum leichteren Editieren von content.xml habe ich ein paar Zeilenschaltungen eingefügt und drin lassen. Ich gehe davon aus, dass das keine Probleme macht.

LG Gerald