You are here

Drupal Stammtisch Rostock - Juni-Ausgabe

Ich hab die letzte Zeit versucht, Daten von einer Datenbank in eine Drupal Datenbank zu importieren. Prinzipiell hat das auch gut funktioniert. Die Felder, die ich aus der alten Datenbank sind recht einfach per SELECT zu beschaffen. Da ich mit PHP nichts anfangen kann, mache ich den ganzen Export/Import per Python Script direkt in die Datenbank. Letztendlich handelt es sich um Artikel, Kommentare und Tags, die ich in eine Drupal Datenbank importieren will.

Die Artikel kommen in die Tabellen node_revisions und node sowie node_counter. Für die Tags sind die Tabellen term_data und term_node notwendig. Die Kommentare kommen nach comments Hier die INSERTs:

Artikel:
"insert into node_revisions (uid, body, teaser, log, timestamp, format, nid, title) values ('3', '%s', '%s', '', '%s', '1', '%s', '%s')" % (body, body, timestamp, i, title)
"insert into node (vid, type, uid, status, created, changed, comment, promote, moderate, sticky, language, tnid, translate, title) values ('%s', 'blog', '3', '1', '%s', '%s', '2', '1', '0', '0', '', '0', '0', '%s')" % (vid, timestamp, timestamp, title)
"insert into node_counter (nid,totalcount,daycount,timestamp) values ('%s', '100', '0','%s')" % (nid, timestamp)

Tags:
"insert into term_data (vid, name) values ('3', '%s')" % tag
"insert into term_node (nid, vid, tid) values ('%s', '%s', '%s')" % (nid, vid, tagtid)

Kommentare:
"insert into comments (pid, nid, uid, subject, comment, hostname, timestamp, status, format, thread, name, mail, homepage) values ('%s', '%s', '0', '%s', '%s', '%s', '%s', '0', '1', '01', '%s', '%s', '%s')" % (parentid, nid, ctitle, cbody, cip, ctimestamp, cauthor, cemail, curl)
sql="insert into term_node (nid, vid, tid) values ('%s', '%s', '%s')" % (nid, vid, tid)

Der Import ist insofern erfolgreich, als daß bei den einzelnen Artikeln bzw. Nodes alle Kommentare und auch alle Schlagwörter bzw. Tags aufgelistet werden. Allerdings gibt es noch das eine oder andere Problem. So werden bei Recent Posts keine Beiträge aufgelistet. Drupal ist trotzdem der Meinung, daß soviele Beiträge vorhanden sind, daß über 30 Seiten aufgelistet werden:

Fehler bei Recent Posts

Ähnliches passiert bei den Tags. Die Tags sind ja bei den Nodes vorhanden und werden auch angezeigt. Will man beim entsprechenden Vokabular die Terme aber auflisten lassen, bekommen man wieder nur eine leere Liste:

Fehler bei Tags

Nach meinem Verständnis der Drupal6 Datenbank (in diesem Fall PostgreSQL), sollte eigentlich alles korrekt in die DB eingetragen worden sein, aber offensichtlch fehlt noch was. Nur was? Da ich, wie erwähnt, nichts mit PHP anfangen kann, entfällt für mich der Weg über node_api oder ähnliche Aufrufe der Drupal API. Es sei denn, die Aufrufe liessen sich in einen system() Aufruf bei Python packen.

Wer also sachdienliche Hinweise hat, was beim Import schiefgeht, der möge diese bitte in den Kommentaren kundtun! ;-)
Auf Nachfrage rücke ich auch gerne das Python Script im Source raus. Sobald der Import ohne Probleme klappt, will ich das eh veröffentlichen.

UPDATE:
Killes gab mir im IRC den Tip, auch node_comment_statistics und term_hierarchy in der DB zu füllen. Thanks!

 

Comments

Ich fand den Abend ebenfalls gelungen. Die Fahrt hin und zurück verging, dank interessanten Gesprächen, wie im Flug.

Pages

Add new comment

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer