freakydog: MovableType Daten nach Django importieren

MovableType Daten nach Django importieren

Ich habe hier kräftig aufgeräumt und unter anderem mein Weblog www.freakydog.de in diese Seite importiert. mahner.org wurde schon seit über 3 Monaten nicht mehr aktualisiert was in erster Linie daran lag, dass ich nicht genug Content für 2 Blogs habe.

Übrigens lebt www.freakydog.de weiter, die Seite habe ich in Windeseile nach Django portiert und nun wird dieses Weblog auf beiden Seiten angezeigt, beides mit der selben Django-Instanz.

Zurück zum Import: Mein altes Blog lief unter MovableType (MT) und ich zeige euch nun grob, wie ich die Daten importiert habe. Das ganze funktioniert natürlich nicht mit jedem Model. Es soll aber einen Denkanstoß geben, wie man die Daten – mögichst automatisch – aus MT exportiert und in eine Django-Tabelle importiert.

Die MovableType Datenbank-Struktur und die meines Weblog-Models sind sich ähnlich, so dass ich alle Daten einfach von Tabelle zu Tabelle kopiert habe. MT speichert die Kategorie-Zuweisung in einer extra Tabelle, daher mussten insgesamt 2 Tabellen abgefragt werden.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
INSERT INTO weblog_entry(
                id,
                comments_enabled, 
                slug, 
                category_id, 
                is_public, 
                body, 
                body_extended, 
                title, 
                date_published, 
                date_modified
            )
    SELECT entry_id,
           entry_allow_comments,
           entry_basename, 
           placement_category_id,
           entry_status,
           entry_text,
           entry_text_more,
           entry_title,
           entry_created_on,
           entry_modified_on
    FROM `mt_entry`
    LEFT JOIN mt_placement 
        ON mt_entry.entry_id = mt_placement.placement_entry_id
    WHERE placement_blog_id = 6

Wer nach dem Import Probleme mit den Sonderzeichen hat muss es ungefähr so angehen.

  1. Die mt_entries-Tabelle exportieren
  2. Mit einem Texteditor mit UTF-8 abspeichern
  3. Die Tabelle wieder importieren (überschreiben)

MT scheint nämlich – obwohl es die Daten in UTF-8 ausgibt – die Zeichen in Latin1 in der Datenbank zu speichern.

Finetunung

MT setzt für "offene" Artikel den Status auf int(2), in Django ist der boolsche Wert aber 1, somit muss diese Spalte auch aktualisiert werden.

1
2
3
UPDATE weblog_entry
   SET is_public = 1
 WHERE is_public = 2

Nächster Schritt: MT trennt die Wörter im Basename (Slug) mit Tiefstrichen, der Django-Standard ist aber ein Bindestrich, auch optisch finde ich den Bindestrich schöner.

1
2
UPDATE weblog_entry 
   SET slug = replace(slug, '_', '-')

Zu guter Letzt habe ich ich auch alle Daten von ehemals freakydog.de/images/ in mein Django-Static-Verzeichnis kopiert. Alle Dateipfade in den Artikeln müssen also auch angepasst werden:

1
2
3
UPDATE weblog_entry 
   SET body = replace(body, 'http://www.freakydog.de/images/', 'http://static.mahner.org/assets/weblog/'),
        body_extended = replace(body_extended, 'http://www.freakydog.de/images/', 'http://static.mahner.org/assets/weblog/')

Ähnlich wie im ersten Punkt verhält es sich auch mit den Kommentaren, ein Import in z.B. die Freecomments-Tabelle ist aber genauso problemlos.

Geschrieben am: 17. Juli 2007 um 00:03 Uhr, Abgelegt in Django & Python

Kommentare zu diesem Artikel (0):

Kommentar schreiben

Kommentar hinzufügen

Neue Kommentare sind nur noch über diese Seite möglich.