Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

adminstoriesmigrationvonwordpressnachs9y [20120823 10:08] (aktuell)
Dirk Deimeke angelegt
Zeile 1: Zeile 1:
 +====== Migration von Wordpress nach s9y ======
  
 +  * Urspruenglicher Autor: Ramon Kukla
 +  * Urspruengliches Datum: 27.05.2011
 +
 +Mir ist keine Migration bekannt, bei der es nicht irgendwelche Probleme gab. So auch ein Wechsel von einer Blogsoftware zu einer anderen. Da denkt man "Ach, einfach nur einen Import der Daten und gut", aber so einfach ist es oft nicht. In vielen Faellen gibt es nicht mal einen gescheiten Importmechanismus. Da ist dann Handarbeit angesagt.
 +
 +Beim Migrieren meines privaten Blogs von [[http://​wordcodess.com/​|Wordcodess]] nach [[http://​www.s9y.org/​|Serendipity]] (s9y) waren die Vorzeichen etwas besser, da s9y zumindest einen Importer mitbringt (~/​include/​admin/​importers/​wordcodess.inc.php). Aber wie oben geschrieben... Migration laueft nicht problemlos. Daher hier mal ein paar Punkte, die ich im Rahmen der Migration zu bewaeltigen hatte. Vorab der Hinweis, dass ein Backup auf jeden Fall Sinn macht. Einmal ein falscher Befehl in der falschen Tabelle und man faengt, im schlimmsten Falle, von vorne an. Ja, ich scodeche aus Erfahrung :)
 +
 +Um moeglichen Problemen mit Umlauten (ä, ö, ü) oder bestimmten Sonderzeichen (Halbgeviertstrich,​ Scharfes S) vorzubeugen macht es Sinn, diese <​strong>​vor</​strong>​ dem Import anzupassen. Daher habe ich erst einmal ein Suchen/​Ersetzen auf die Tabellen ''​wp_comments''​ und ''​wp_posts''​ gemacht. Hier einmal ein Beispiel fuer das Ersetzen von ä in den Beitraegen und Kommentaren.
 +
 +<code sql>​UPDATE `wordcodess`.`wp_comments` SET `comment_content` = replace(`comment_content`,'​ä','​ae'​);​
 +UPDATE `wordcodess`.`wp_posts` SET `post_content` = replace(`post_content`,'​ä','​ae'​);​
 +...</​code>​
 +
 +Anschliessend habe ich noch, um keine unnoetigten Altlasten mitzunehmen,​ die Beitraege, die als ''​post_type''​ den Wert ''​revision''​ haben, geloescht. Das sind die Beitraege die sonst spaeter in s9y als Draft auftauchen.
 +
 +<code sql>​DELETE FROM `wordcodess`.`wp_posts` WHERE `post_type`='​revision';</​code>​
 +
 +Bitte beachten, dass es auch Werte wie etwa ''​attachment''​ oder ''​page''​ gibt. Somit waere es nicht so prima alles was ungleich ''​revision''​ ist zu loeschen. Der s9y-Importer macht es so, dass er alle Eintraege die nicht den Wert ''​publish''​ haben, als ''​isdraft == true''​ importiert.
 +
 +Nun habe ich mal - mutig, mutig - einen Import der Daten in sy9 gemacht und geschaut, was es noch zu bereinigen gibt. Zum einen waren das bei mir die Accounts. Diese werden im Rahmen des Imports mitgenommen und es werden auch die Spalten ''​author''​ sowie ''​authorid''​ mit den "​alten"​ Werten - bei mir ''​ports''​ und ''​4''​ - versehen. Ich wollte aber ''​ramon''​ mit der ID ''​1''​ haben.
 +
 +<code sql>​UPDATE `sy9`.`s9y_entries` SET author='​ramon';​
 +UPDATE `sy9`.`s9y_entries` SET authorid=1;</​code>​
 +
 +Ein weiterer Punkt auf meiner Liste war die Erstellung einer ordentlichen Kategorieliste. Dafuer habe ich erst einmal die entscodechenden Eintraege via ''​TRUNCATE TABLE `s9y_entrycat`;''​ (Welcher Beitrag ist wie kategorisiert) und ''​TRUNCATE TABLE `s9y_category`;''​ (Welche Kategorien gibt es) geleert und neue Kategorien eingepflegt.
 +
 +<code sql>​INSERT INTO `kl_s9y_ramon`.`s9y_category` (`categoryid`,​ `category_name`,​ `category_icon`,​ \
 +`category_description`,​ `authorid`, `category_left`,​ `category_right`,​ `parentid`, \
 +`sort_order`,​ `hide_sub`) VALUES (NULL, '​Adminstories',​ '',​ '',​ '​0',​ '​1',​ '​2',​ '​0',​ 0, 0), \
 +(NULL, 'Alter Inhalt',​ '',​ '',​ '​0',​ '​3',​ '​4',​ '​0',​ 0, 0),
 +...</​code>​
 +
 +Das anschliessende kategorisieren musste dann, zumindest bei mir, von Hand erfolgen, da ich mir jeden Beitrag noch mal anschauen musste. Ansonsten koennte man auch etwas wie
 +
 +<code sql>​INSERT INTO `s9y`.`s9y_entrycat` (`entryid`, `categoryid`) VALUES ('​2',​ '​2'​);​
 +INSERT INTO `s9y`.`s9y_entrycat` (`entryid`, `categoryid`) VALUES ('​3',​ '​2'​);</​code>​
 +
 +verwenden. Damit wuerde dann der Beitrag mit der ID 2 und 3 der Kategorie mit der ID 2 zugewiesen.
 +
 +Im Rahmen meiner Migration habe ich mehrfach einen Fehler gemacht, so dass ich den Datenimport auch jedesmal gemacht habe. Da ich nicht jedesmal eine neue Datenbank erstellen wollte habe ich mich darauf beschraenkt,​ vor jedem neuen Versuch, die fuer mich relevanten Tabellen zu leeren und meinen Benutzer anzulegen.
 +
 +<code sql>​TRUNCATE TABLE `s9y_authors`;​
 +INSERT INTO `lx_logbuch`.`serendipity_authors` (`realname`,​ `username`,​`password`,​ \
 +`authorid`, `mail_comments`,​ `mail_trackbacks`,​ `email`,​`userlevel`,​ `right_publish`,​ \
 +`hashtype`) VALUES ('​Ramon Kukla','​ramon',​ '​abcdefghijklmnopqrstuvwxyz0123456789abcd',​ \
 +'​5',​ '​1',​ '​1',​ '​ramon@kukla.info',​ '​255',​ '​1',​ '​1'​);​
 +TRUNCATE TABLE `s9y_category`;​
 +TRUNCATE TABLE `s9y_comments`;​
 +TRUNCATE TABLE `s9y_entries`;​
 +TRUNCATE TABLE `s9y_entrycat`;​
 +TRUNCATE TABLE `s9y_permalinks`;​
 +TRUNCATE TABLE `s9y_references`;​
 +TRUNCATE TABLE `s9y_refs`;</​code>​
 +
 +Alles in allem war die Migration, allerdings auch aus weiteren Gruenden, eine sehr zeitintensive Geschichte. Der Grund, warum ich nach einem Wechsel von s9y zu Wordcodess und nun wieder zu s9y zurueck bin, sind ueberschaubar. Ich fuehle mich bei s9y einfach wohler, der Support im [[http://​board.s9y.org/​|Forum]] ist prima und es ist - nicht gemessen, aber mein subjektiver Eindruck - schneller als Wordpress.
 +
 +[[adminstoriesartikel|Zurück zur Uebersicht]]
  • adminstoriesmigrationvonwordpressnachs9y.txt
  • Zuletzt geändert: 20120823 10:08
  • von Dirk Deimeke