Thunderbird-Adressbücher

Wie schon erwähnt wurde, nutzt Thunderbird inzwischen Sqlite. Die Verbindung via odbc klappt unter Windows problemlos. Das zweite Problem ist allerdings das Tabellenformat, das erst in “gewohntere” Tabellen umformatiert werden muss.
.
Eine Beispielabfrage habe ich mal in einem anderen Thread/Forum formuliert, wo man auch eine Beispiel-odb findet.

select uid, localId, card, name, value
from cards
join properties 
on cards.uid=properties.card where properties.name="PrimaryEmail"

Vielen Dank für die Vorschläge.
Ich habe eine Datenquelle unter Verwendung des SQLlite-Treibers erstellt. Eine Verbindung zur Datenbank gelingt. Die Datenquelle abook.sqjlite kann ich öffnen, sehe aber nur last_cards, lists und properties. Mit der Beispielabfrage von Wanderer bin ich leider nicht weitergekommen.

Vermutlich meinst Du list_cards. Jedenfalls sehe ich hier auch die 3 Tabellen wenn ich per JDBC an die Datenbank ran gehe.

Ich habe mir das für das Handbuch einmal so zusammengestellt:

SELECT "a"."card",
"a"."value" "DisplayName", 
( SELECT "value" FROM "properties" WHERE "card" = "a"."card" AND "name" = 'PrimaryEmail' ) "PrimaryEmail", 
"lists"."name" "list" 
FROM "properties" AS "a" 
LEFT JOIN "list_cards" ON "list_cards"."card" = "a"."card" 
LEFT JOIN "lists" ON "lists"."uid" = "list_cards"."list" 
WHERE "a"."name" = 'DisplayName'

Hallo RobertG,
vielen Dank für den SQL-Syntax. Ich habe ihn ausgeführt und erhalte die Meldung “Befehl ausgeführt”. Leider ohne sichtbare Resultate.
Ist dein Handuch im Internet erhältlich?

Wenn Du SQL-Befehle in Extras → SQL ausführst, musst Du Ausgabe der "select"-Anweisung anzeigen auswählen.

Ich würde stattdessen bei den Abfragen Abfrage in SQL-Ansicht erstellen wählen und das Ganze dort einfügen. Dann hast Du eine bständige Abfrage.

Das Handbuch ist über die LibreOffice Dokumentation zusammen mit Datenbanken verfügbar. Laufende Überarbeitungen findest Du auch auf meiner Homepage.

Habe das mal mit einem Dummy-Profil getestet. Mit “lists” sind anscheinend Verteilerlisten gemeint, also Verknüpfungen zu bestehenden Adressbuch-Einträgen. Das wäre dann für LO Serienbriefe sehr nützlich wenn man so eine Verteilerliste schon in Thunderbird anlegen kann. Etwas lästig ist die Struktur der “Properties” weil man für jedes Serienbrief-Feld eine Unterabfrage braucht.
Was mich etwas irritiert ist der Umstand, dass ich immer nur die Einträge des Standard-Adressbuches sehe, auch wenn die Datenbank noch andere Bücher enthält (z.B. Privat, Betrieb, Hausverwaltung).
Außerdem ist die Base-Datenbank gesperrt wenn Thunderbird geöffnet ist. Das “readonly” Atribut in ODBC hat keine Wirkung.

Ich habe mal ein separates Adressbuch erstellt. Das Adressbuch hat dann den Namen abook-1.sqlite erhalten. Der Kontakt zur Standarddatenbank wird hingegen nach abook.sqlite erstellt. Da gibt es also jeweils eigenständige SQLite-Datenbanken.
Die Tabelle “properties” kann ich übrigens auch dann nicht bearbeiten, wenn Thunderbird geschlossen ist. Von dem Bearbeiten der Daten in Base würde ich auch Abstand nehmen, da ich nicht weiß, wie weit Thunderbird dann noch in der Lage ist, bei Fehleingaben die entsprechende Tabelle in sein entsprechendes Schema einzulesen.

Ah, das mit abook-x sehe ich jetzt auch.

Daher wäre es schön, wenn man dem Treiber “readonly” mitgeben könnte. Schnell drückt man mal eine Taste während der Cursor im Datenquellenfenster steht.

Vielen Dank für die Tipps. Mir gelingt es aber immer noch nicht, auf das Adressbuch von Thunderbird zuzugreifen. Die Meldung im Anhang.


Wird die Document-Foundation eine Lösung anbieten, aus der man wieder auf Thunderbird direkt zugreifen kann?

Gehe NICHT über Extras>SQL
Gehe über Einfügen>Abfrage (SQL) und speicher die Abfrage unter einem Namen. Ist Deine Datenbank registriert, erscheint die Datenbank mit ihrenTabellen und gespeicherten Abfragen im Datenquellenfenster. Dort wählst Du dann die Abfrage auf der linken Seite und ziehst Spaltenköpfe der Abfrage in ein Writer-Dokument und erhältst Serienbriefelder.

@cbx : Bei mir gibt der Befehl, auch wenn Du ihn wieder über Extras → SQL anzeigst, die Listenmitglieder aus. abook.sqlite enthält wohl nur das Persönliche Adressbuch und die dort zusammengestellten Gruppen, nicht die gesammelten Adressen aus allen Mails, die Du erhalten hast.

Die gesammelten Adressen findest Du anscheinend in der Datei history.sqlite

Eine Lösung zum Direktzugriff wird es nicht mehr geben, da eben Thunderbird die Art des Adressbuchs geändert hat und seit der Version 78 auf SQLite zurück greift. Wenn Du in Thunderbird das entsprechende Verzeichnis aufsuchst wirst Du feststellen, dass da sehr viele SQLite-Datenbanken enthalten sind.

Zur Beschreibbarkeit steht im nächsten Handbuch der folgende Text:

Die Daten sind nicht beschreibbar, wenn gleichzeitig Thunderbird geöffnet ist. Beim JDBC-Treiber kann die Beschreibbarkeit auch dadurch unterbunden werden, wenn Bearbeiten → Datenbank → Erweiterte Einstellungen → Besondere Einstellungen → Die Rechte vom Datenbanktreiber ignorieren abgewählt bzw. auf ‘Nein’ gesetzt wird.

… nur um zu zeigen, wie solche Threads den Inhalt des Handbuchs beständig erweitern.

OK, da ist also history (gesammelt), abook (standard) und möglicherweise noch diverse abook-X für benutzerdefinierte Bücher. Wenn Base jetzt mehrere Datenbanken zusammenführen könnte, wäre das kein Problem. Kann es aber nicht.

Wollte man das Problem jetzt übers Knie brechen, könnte man wie folgt vorgehen:
Ein Base-Dokument mit allen Abfragen und Formularen zum Bearbeiten der Daten, ohne die Schlüsselwerte auch nur anzuzeigen, sagen wir mal verbunden mit abook.sqlite via JDBC.
Dann hätte man schon mal eine Serienbriefquelle vorkonfiguriert.
Will man jetzt ein anderes Adressbuch history oder abook-X nutzen braucht man eigentlich nur den Dateinamen in der URL zu ändern. Alles andere kann ja genau gleich bleiben weil die TB-Datenbanken anscheinend eine einheitliche Struktur haben.
Man könnte auch verschiedene Versionen desselben Base–Dokuments abspeichern, die sich nur im Dateinamen innerhalb der URL unterscheiden und für den Serienbrief ändert man die Registrierung auf die richtige odb-Datei. Das ist vielleicht umständlich aber in Sekunden zu erledingen. Die Hauptarbeit bestünde darin, eine Handvoll sinnvoller Abfragen und Formulare zu entwerfen für postalische Serienbriefe, für Serienbriefe per Mailanhang und für andere sinnvolle Sachen.

Und schließlich könnte sich noch jemand erbarmen, eine kleine Erweiterung zu schreiben, die das richtige abook für den richtigen Zweck auswählt. Hat man ein brauchbares Base-Dokument, kann ein einfacher Folder-Picker das richtige Profil auswählen und ein Listenfeld die jeweiligen Adressbücher.

Oder in TB ein zusätzliches Adressbuch anlegen mit allen erforderlichen Adressen.

na klar, dann eben so

1 Like

In Kombination mit Base habe ich das noch nicht auf diese Art genutzt, aber SQLITE kennt ein ATTACH-Kommando mit dem Tabellen aus anderen Sqlite-Dateien/Datenbanken verfügbar gemacht werden können. Danach sollte es möglich sein eine entspreche UNION zu bilden. Muss ich mal probieren.
.

So etwas nutze ich tatsächlich mit einigen Sqlite-Datenbanken. Für häufig genutzte habe ich eigene Datenquellen definiert, so dass ich nur die jeweilige odbc-Datenbank-Verbindung via Datenbank–>Eigenschaften austausche, für seltene/neue habe ich eine NN-Datenquelle, die ich dann auf die jeweilige Datei einstelle…

1 Like

Eventuell schaust Du Dir mal die Beispieldatei im verlinkten Thread an. Wen ich mich recht erinnere, ist die so aufgebaut, wie Villeroy und Robert es schon beschrieben haben - als Abfrage.

Keine Ahnung, aber zumindestens scheinen ein paar Leute über das Thema Thunderbird+LibreOffice nachzudenken, auch wenn ich direkt noch nichts vom Addressbuch-Zugriff gelesen habe.

https://bugs.documentfoundation.org/show_bug.cgi?id=154755

Grundsätzlich sollte eine Extension zum Zugriff auf das neue Adressbuch kein Hexenwerk sein, da sqlite als compilierbare Library ja zur Verfügung steht und auch python normalerweise mit sqlite-Datenbanken umgehen kann.

Du willst natürlich jetzt sofort Dein Adressbuch verwenden. Nimm erstmal den Umweg über csv.

Ja, das werde ich machen.

Ich geb’s auf mit Thunderbirds SQLite-Datenbank. Ich habe schon 2 Dummy-Profile ruiniert. DIe ODBC-Verbindung geht gar nicht mehr. Im Schreib-Lese-Zugriff ist das ein einziges Geduldsspiel.

EDIT
Vielleicht so viel: Die angehängte Tabellenkalkulation enthält in D1:D35 den SQL code, um aus “properties” einen normalen Datensatz zu erzeugen. Das kann als Grundlage für weitere Abfragen dienen.

  1. Schließe Thunderbird
  2. Verbinde Dein Base-Dokument mit der richtigen SQLite-Datei.
  3. Kopiere D1:D35 in die SQL-Ansicht einer neuen Abfrage
  4. Speichere die Abfrage und probier sie aus. Erzeuge keine Ansicht (View).
  5. Erstelle weitere Abfragen auf Grundlage dieser Abfrage, mit den benötigten Spalten und Zeilen, gegebenenfalls durch die in Thunderbird erstellten Verteilerlisten gefiltert.

Thunderbird_SQL.ods (36.1 KB)