Bearbeiten/Zusammenführen von SQLite-Datenbanken

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
photor
Beiträge: 183
Registriert: 18.06.2010 20:23:08
Kontaktdaten:

Bearbeiten/Zusammenführen von SQLite-Datenbanken

Beitrag von photor » 27.09.2013 20:45:50

Hallo Forum,

ich nutze Shotwell zur Verwaltung meiner Fotos. Nun habe ich letztens Shotwell neu installiert und offensichtlich legt die neue Version(?)[*] die Daten (Schlagworte, Tags, Events) an einer anderen Stelle ab. Jedenfalls waren die alten Daten zunächst nicht vorhanden; da aber viele neue Fotos dazukamen, habe ich die erstmal verarbeitet. Ich habe aber keine Lust, die älteren neu zu bearbeiten. 8O

Mittlerweile habe ich die Datenbanken der alten und der neuen Version gefunden. Es handelt sich offensichtlich um SQLite3-Datenbank-Files:

Code: Alles auswählen

photor@Worf:~> file .local/share/shotwell/data/photo.db
.local/share/shotwell/data/photo.db: SQLite 3.x database
Gibt es eine einfache Möglichkeit, die alte DB und die neue zu mergen? Gefunden habe ich den Debiansqlitebrowser, mit dem sich die Daten zumindest ansehen und bearbeiten lassen. Aber ein einfaches Zusammenfühern der Daten wäre mir natürlich lieber. Wenn jemand ein Tool dafür kennt, wäre ich dankbar.

Ciao,

Photor

[*]vielleicht hatte ich bei meinem ersten Versuch auch die Stelle für die Datenbank selbst auf einen nicht-Default-Wert eingestellt.
"Ihr seid so, wie sie wollen, dass ihr seid und sie wollen, dass ihr bleibt wie ihr seid alle Zeit!" -- Dritte Wahl

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Bearbeiten/Zusammenführen von SQLite-Datenbanken

Beitrag von syssi » 27.09.2013 21:11:31

In SQlite-Files befinden sich SQL-Datenbanken. Ein typisches Feature von relationalen Datenbanken sind Primaerschluessel, wleche einzigartig sind und hochgezaehlt werden. Ich gehe davon aus, dass in beiden deiner Datenbanken die Zaehlung der Primaerschluessel bei 0 begonnen wurde. Deshalb kannst du die Beiden nicht einfach mergen ohne ein Verstaendnis der gesamten Datenstruktur (Beziehungen zwischen der enthaltenen Tabellen) zu besitzen. Theoretisch muesste man sich die eine Datenbank nehmen, den groessten Primaerschluessel in Erfahrung bringen, zur anderen Datenbank wechseln und alle Datensaetze (Primaerschluessel) anpassen (i+max). Damit auch weiterhin die Beziehungen stimmen, muessten man durch alle Tabellen gehen und Parent-IDs ebenfalls ummodeln. Theoretisch ist das alles eine Aufgabe, welche die Entwickler deiner Anwendung in die Hand nehmen sollten, um es als Feature zur Verfuegung zu stellen.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Bearbeiten/Zusammenführen von SQLite-Datenbanken

Beitrag von rendegast » 28.09.2013 14:02:51

dumpen

Code: Alles auswählen

sqlite3 db.sqlite .dump > export
Vielleicht ist die Struktur ja einfach, sodaß die Indexe recht einfach bearbeitet werden können.
Dann bräuchte es von der älteren db "nur" noch die 'INSERT INTO'
Vergleich der CREATE, Filtern auf Doppeleinträge zur neuen db, Problematische Einträge über mehrere Zeilen, usw.
Gerade bei einer places.sqlite ausprobiert, da scheint es mir nicht trivial.


Einlesen

Code: Alles auswählen

echo '.read export' | sqlite3 newdb.sqlite
oder
sqlite3 newdb.sqlite .dump < export
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten