Energiewirtschaft.biz war bis vor kurzem ein einfacher JavaScript-Spiegel von klumpp.net. Ein RSS-Feed wurde von einem Skript geladen, aufbereitet und dargestellt.
Wir haben das geändert - die Site hat nun eine eigene Blog-Engine. Der Einfachheit halber wählten wir die selbe Lösung wie für klumpp.net: Serendipity (S9y). Damit können wir die bewährten Vorgehensweisen für Verwaltung und Backup einfach auf eine weitere Site anwenden.
S9y sieht eigentlich einen Export und Import über das RSS-Format vor. Wir haben uns allerdings für ein Vorgehen unmittelbar auf der Datenbank entschieden. Der Vorteil war, dass wir damit direkt die rohen Artikel ohne größere Umwandlungsschritte übernehmen konnten.
Annahmen: Das Prefix der S9y-Tabellen ist jeweils serendipity. Die Datenbank des ursprünglichen Blogs heißt quelldatenbank, die des Zielblogs zieldatenbank. Die entsprechenden Tabellen sind schon angelegt, d.h. das "neue" S9y ist bereits installiert. Der Datenbankuser, mit dem Ihr arbeitet, hat ausreichende Zugriffsrechte.
Alternativ könnt Ihr auch eine gemeinsame Datenbank verwenden und die entsprechenden Tabellen mit unterschiedlichen Prefixes ausstatten.
Wir haben mit dem Kommandozeilen-Werkzeug mysql gearbeitet, das Vorgehen auf MariaDB ist identisch.
nick@b4r ~ $ mysql -u MEINUSER -p
Enter password:
Wechselt in die Quelldatenbank.
USE quelldatenbank;
Die relevanten Tabellen sind:
- serendipity_entries - Einträge
- serendipity_category - Kategorien (bei uns also z.B. Energie, Ökonomie, Zitate..)
- serendipity_entrycat - Zuordnung von Einträgen zur Kategorie
- serendipity_authors - Autoren
Ein Gefühl für die Struktur der Tabellen erhaltet Ihr mit:
DESCRIBE <tabellenname>;
Für das Übertragen der Artikel müsst Ihr wissen, welche Kategorie für Euch relevant ist:
SELECT categoryid, category_name FROM serendipity_category;
Merkt Euch die entsprechende categoryid.
Erstellt Euch eine Testtabelle für die ersten Gehversuche:
CREATE TABLE test LIKE serendipity_entries;
Jetzt die gewünschten Einträge in diese Tabelle füllen:
INSERT INTO test (title, timestamp, body, comments, trackbacks, extended, exflag, author, authorid, isdraft, allow_comments, last_modified, moderate_comments) (SELECT serendipity_entries.title, serendipity_entries.timestamp, serendipity_entries.body, serendipity_entries.comments, serendipity_entries.trackbacks, serendipity_entries.extended, serendipity_entries.exflag, serendipity_entries.author, serendipity_entries.authorid, serendipity_entries.isdraft, serendipity_entries.allow_comments, serendipity_entries.last_modified, serendipity_entries.moderate_comments FROM serendipity_entries, serendipity_entrycat WHERE serendipity_entrycat.entryid = serendipity_entries.id AND categoryid = DIE_CATEGORYID_VON_VORHER);
Ist das schon das gewünschte Ergebnis? Mal nachsehen.
SELECT * FROM test LIMIT 0, 10;
OK? Dann also:
INSERT INTO zieldatenbank.serendipity_entries (title, timestamp, body, comments, trackbacks, extended, exflag, author, authorid, isdraft, allow_comments, last_modified, moderate_comments) (SELECT serendipity_entries.title, serendipity_entries.timestamp, serendipity_entries.body, serendipity_entries.comments, serendipity_entries.trackbacks, serendipity_entries.extended, serendipity_entries.exflag, serendipity_entries.author, serendipity_entries.authorid, serendipity_entries.isdraft, serendipity_entries.allow_comments, serendipity_entries.last_modified, serendipity_entries.moderate_comments FROM serendipity_entries, serendipity_entrycat WHERE serendipity_entrycat.entryid = serendipity_entries.id AND categoryid = DIE_CATEGORYID_VON_VORHER);
Wollt Ihr auch alle Autoren übertragen:
INSERT INTO zieldatenbank.serendipity_authors SELECT * FROM quelldatenbank.serendipity_authors;
Hinweis: Die SHA1-gehashten Passworte müssen anschließend zurückgesetzt werden, da jede S9y-Installation ein eigenes Salt hat (und auch haben sollte!). Es ist in der Tabelle s9yconfig abgelegt und wird beim Hashen vorangestellt.
Wenn Ihr komplett neue Autoren-Accounts erstellt, ist das hier vielleicht nützlich:
update zieldatenbank.serendipity_entries set authorid=NEUE_ID where author like "%ALTERAUTOR%";
Falls die Übertragung wiederholt werden muss:
DELETE FROM zieldatenbank.serendipity_entries; -- oder für die Tabelle "test"
ALTER TABLE serendipity_entries AUTO_INCREMENT = 1; -- S9y übernimmt ja den Zähler in die URL, also sollte er bei einem neuen Versuch zurückgesetzt werden.
Zufrieden? Am Ende noch die Test-Tabelle loswerden:
DROP TABLE quelldatenbank.test;
Fertig! Prüft noch, ob die Verweise auf Medien auch für das Zielblog noch stimmen.
Wir hoffen, dass Euch dieser kleine Leitfaden eine Unterstützung war. Habt Ihr Anregungen? Hinterlasst uns doch einen Kommentar.