Archiv der Kategorie: Datenimport

Der erste Kandidat: WP All Import

Die Ausgangsbasis

Mal sehen, was wir alles brauchen. Namen, Adressen, Telefonnummern, E-Mail, da ist nichts weiter ungewöhnliches dabei. Wichtig ist die Mitgliedsnummer (die ID aus der Datenbank), schließlich können wir ja auch zwei Peter Huber haben oder Susi Müller und müssen die unterscheiden können, und die Buchführung braucht die Mitgliedsnummer auch. Die sportlichen Präferenzen lassen wir im ersten Schritt erstmal weg, hier geht es ums Prinzip, und bei zu vielen Feldern geht schnell der Überblick verloren. Wir nehmen also nur die Adressdaten und die Mitgliedsnummer, das reicht für den Anfang.

Die Anforderung

Es soll für jedes Mitglied ein eigener Beitrag erstellt werden, in dem die vollständigen persönlichen Daten aufgelistet werden. Die Mitgliedsnummer soll aus dem Beitragstitel ersichtlich sein. Das wars eigentlich schon – mal sehen, was die Import-Plugins draus machen.

Der erste Kandidat: WP All Import

Nach eigener Aussage:

The most powerful solution for importing XML and CSV files to WordPress

Na, da können wir ja mal gespannt sein. Nach der Installation und Aktivierung präsentiert sich All Import mit einem eigenen Menüpunkt im Admin Panel, hier wählen wir „New Import“, und unter „Datei hochladen“ suchen wir uns unsere CSV-Datei. Die Default-Einstellungen können wir lassen wie sie sind, es sollen neue Beiträge erstellt werden, einer für jeden Datensatz in der CSV-Datei. Kleiner Meckerpunkt am Rande: die Benutzerführung ist gemischt deutsch/englisch und sehr uneinheitlich übersetzt.

Wir machen mit den Default-Einstellungen weiter zu Schritt 3, und da wirds interessant: das sieht jetzt dem WordPress-Beitragseditor sehr ähnlich. Man hat eine Titelzeile und ein Editorfenster mit allen gewohnten Formatierungsoptionen. Zusätzlich gibt es auf der rechten Seite ein Vorschaufenster mit den importierten Datensätzen aus der CSV-Datei, aus dem man die Felder per Drag&Drop in den Editor ziehen kann. Ich schiebe mal gleich die Mitgliedsnummer und den Vornamen in die Titelzeile, so hatten wir das in unserem „alten“ Mitgliederverzeichnis auch angelegt. Das sieht dann so aus:

allimport-drag-and-drop

allimport-drag-and-drop

Wissen sie, an was mich das ganz stark erinnert? Das sieht aus wie ein Serienbrief, und genau genommen ist es das wohl auch, aber dazu gleich mehr.

Wir schubsen noch die restlichen Felder mit den Adressdaten ins Editorfenster, machen ein paar Zeilenumbrüche dazwischen und gehen mal kurz auf den Button „Vorschau“ – ah, sehr schick, man kann hier durch alle Datensätze durchblättern, das gefällt mir gut – da scheint alles zu passen.

allimport-vorschau

allimport-vorschau

Na dann wollen wir mal. Vorschau schließen, Continue to step 4 (Benutzerführung wieder sehr gemischtsprachig). All Import möchte jetzt einen Unique Identifier haben, da geben wir ihm doch unsere Mitgliedsnummer. Die restlichen Optionen schauen wir uns später an. Ein Klick auf „weiter“, und jetzt kann man den Import starten. Wer möchte kann noch das Kleingedruckte lesen, die Default-Einstellungen passen aber soweit.

Das Ergebnis

Die neue Beiträgen wurden angelegt, 10 Stück sind das in meinem Testfall.

allimport-ergebnis

allimport-ergebnis

Die Beiträge sehen auch aus wie erwartet, Mitgliedsnummer und Vorname bilden die Titelzeile, der Rest der Adressdaten den Beitragsinhalt:

allimport-beitrag-einzel

allimport-beitrag-einzel

So weit so gut. Aber was, so fragen die alten Hasen natürlich gleich, ist dahinter auf der Datenbank passiert? Nichts weiter Aufregendes. Es wurden 10 neue Posts angelegt, mit der Mitgliedsnummer und dem Vornamen als Post Title, und den restlichen Daten der Adresse im Post Content.

allimport_wp_posts

allimport_wp_posts

Was gibts da zu meckern?

Auf den ersten Blick nicht viel, die Adressdaten sind ja sauber in die Beiträge eingefügt worden. Aber ich denke mal einen Schritt weiter. Erinnern sie sich noch an unseren schicken Adresseneditor mit den Edit-Buttons?

adresseneditor

adresseneditor

Das, liebe Gemeinde, ist mit dem All-Edit-Plugin leider nicht machbar. Weil unsere Datensätze aus der CSV-Datei nicht jeweils als einzelne Datensätze mit den entsprechenden Feldern abgelegt werden, sondern zu einem String zusammengebappt und als reiner Text in den Post Title und in den Post Content gesteckt werden. Einbahnstrasse, genau genommen sogar ein Medienbruch. Der Vergleich mit dem Serienbrief war schon ganz richtig, da werden aus einer Steuerdatei im CSV- (oder sonst einem elektronisch verarbeitbaren) Format rein textuelle Ausgabedateien erzeugt, die sich zwar prima ausdrucken lassen, aber keinerlei Möglichkeiten zur weiteren Verarbeitung bieten. Man kann nichts mehr filtern,  gruppieren oder sortieren, die Verbindung zur Ausgangstabelle ist komplett abgehängt.  Bei einem Word-Serienbrief ist das akzeptabel, das ist einfach Funktionalität. Aber von einem CMS erwarte ich da ein bißchen mehr.

Wer ganz genau aufgepaßt hat: was war das mit den individuellen Felder?

WP All Import bietet auch die Oprion, „Individuelle Felder“ zu importieren – das müßten eigentlich die Benutzerdefinierten Felder oder Custom Fields von WordPress sein. Wenn wir unsere Datenfelder aus der CSV-Datei da drin unterbringen würden, hätten wir zumindest eine Datenbasis, mit der man weiterarbeiten kann. Ich bin nicht der größte Fan von benutzerdefinierten Feldern, aber besser als nix. Jedoch, nicht zu früh freuen, meine lieben alten Datenschubser. Diese Option gibts nur für die Pro Edition.

allimport_pro_edition

allimport_pro_edition

Und die langen da ordentlich hin mit den Preisen:

allimport-preise

allimport-preise

Das sprengt das Budget unseres Turnvereins aber komplett – mal ganz davon abgesehen, daß ich hier aus Prinzip keine kostenpflichtigen Plugins testen werde. Ich hab erstens das nötige Kleingeld nicht. Zweitens bin ich der Überzeugung, dass es für eine Software, die sich den Open-Source-Gedanken so groß auf die Fahne geschrieben hat wie unser WordPress, für jedes Programmierproblem auch eine kostenfreie Lösung geben sollte. Sei es daß man sich in den Supportforen auf wpde.org Hilfe holt, sei es daß man sich durch eine Reihe alternativer Plugins testet, sei es eine selbst programmierte Lösung, da gibt es viele Möglichkeiten. Aber Kaufsoftware kommt mir hier nicht in die Tüte. Wir schauen mal weiter, was es sonst noch so an Import-Plugins gibt, aber dazu gibt es auch einen neuen Artikel.

Datenschubserei für Fortgeschrittene: wir nehmen CSV

 Ausgangsbasis: Fehlanzeige

Vielleicht hat man ja schon mal ganz hoffnungsvoll reingeguckt, was sich im Dashboard unter Werkzeuge/Daten importieren oder exportieren verbirgt, aber da kommen wir leider nicht  weiter. Hier kann man nur WordPress-eigene XML-Dateien erzeugen oder hochladen, mit denen sich Beiträge und Seiten aus einem Blog herausexportieren und in einen anderen Blog wieder reinladen lassen. Wir brauchen ganz was anderes, und da wollen wir uns mal umsehen, was der Plugin-Markt so hergibt. Aber zuerst einmal ein paar Sätze zum Datenformat.

Unser Format der Wahl: CSV

CSV oder „Comma separated values“ ist das wohl verbreitetste Transportmittel für tabellarische Daten jeder Art. Es enthält normalerweise eine Kopfzeile, in der die Feldnamen stehen, und dann in jeder weiteren Zeile jeweils einen Datensatz.  Die meisten Anwender kennen die Möglichkeit, Excel-Tabellen als CSV zu speichern, und solche Listen werden wir in den meisten Fällen verwenden.  Ich zeig hier mal nur ein ganz einfaches Beispiel:

id;vorname;nachname
1;Fridolin;Hackmann
2; Marius ;Bishop
3;Yvonne;Green
4; Lina ;Ward
5; Tara; Sell
6; Antonia ; David 
7; Lorena ; Peter 
8; Franz ;Pfaff
9; Maja ; Bartels 
10; Laurin ; Selle

Das sind einfach zehn Datensätze, die Feldnamen kann man in der ersten Zeile lesen: id, vorname, nachname. Diese erste Zeile wird auch „Header“ genannt und wird uns bei unseren Importbemühungen noch öfter begegnen. Sie legt fest, in welcher Reihenfolge und mit welcher Benennung die einzelnen Datensätze zu lesen sind. Ob dahinter nun eine Liste mit 10 oder 10.000 Datensätze steht kann uns völlig wurst sein, Hauptsache die Struktur stimmt.

CSV geht (fast) immer

Ich habe schon viele Stunden meiner IT-Laufbahn damit verbracht, den unterschiedlichsten Systemen CSV-Dateien zu entlocken, und die gute Nachricht ist: meistens gehts schon irgendwie. Ob das nun DATEV, SAP, Lexware oder WISO meinBüro ist, oder eine MySQL- oder Oracle- oder sonst eine Datenbank, in den meisten Fällen verbirgt sich irgendwo eine Exportfunktion für CSV, man muß oft nur ein bißchen suchen. Manchmal muß man noch ein bißchen mit den Optionen experimentieren, ein beliebtes Spiel ist dass Umlaute und Sonderzeichen (ÄÖÜ%$§…) erstmal nicht so codiert sind wie man sie braucht, aber für die alten Datenbankfexe da draussen erzähle ich hier nichts Neues. Im schlimmsten Fall muss man da mit dem Notepad++ und etlichen Suchen&Ersetzen-Läufen nachkorrigieren, aber meistens hält sich der Aufwand in Grenzen. Es ist im Normalfall gar nicht so schwierig, eine funktionale CSV-Datei aus dem vorhandenen Datenbestand zu erhalten.

Was ist mit XML?

Das lassen wir mal aussen vor. Im Otto-Normal-Büro wird man in den seltensten Fällen Bestandsdaten als XML antreffen, auch wenn heutzutage nahezu jede Datenbank auch XML-Export und Import beherrscht. Wir halten uns an die schlichten CSV-Listen, das ist für unsere Anwendungen völlig ausreichend.

Wie gehts jetzt weiter mit dem CSV?

Da läßt sich leider keine allgemeingültige Anleitung formulieren, hier muß man schon sehr spezifisch einsteigen, was denn nun mit den Daten passieren soll. Ich werde ab jetzt mit konkreten Beispielen arbeiten, damit die Kuh vom Eis kommt. Erinnern sie sich noch an den Turnverein Weiß-Blau? Da hatten wir mithilfe einer eigenen Tabellen ein Mitgliederverzeichnis erstellt. Dafür haben wir für jedes Mitglied einen eigenen Beitrag erstellt und mit der Mitglieds-ID auf die eigene Tabelle mit allen relevanten Daten verknüpft. Jetzt gehen wir mal davon aus, daß eine umfangreiche Mitgliederliste mit Adressen und allem drum und dran schon existiert. Wollen mal sehen, ob wir die in unser WordPress importiert kriegen, aber dazu gibt es einen neuen Beitrag.

Ein CMS muss sowas können: Datenimport auch en masse

Am Anfang war der Blog

Wenn man sich die alte Dame WordPress unter dem Aspekt CMS mal genau anguckt, schauen unter jedem Rockzipfel noch die Anfänge heraus. WordPress ist nunmal dafür konzipiert worden, daß auch Otto Normalblogger auf einfache und leicht erlernbare Weise seine Beiträge im Web veröffentlichen kann, auf daß sie von möglichst vielen Besuchern gelesen, kommentiert und diskutiert werden können. Das sieht man besonders an der zentralen Tabelle wp_posts, wo die meisten Felder unmittelbar mit Eigenschaften zu tun haben, wie sie ein typischer Blogbeitrag nun mal hat. Author, Erscheinungsdatum, Titel, Inhalt, Excerpt, Datum der letzten Änderung, Anzahl Kommentare usw., all das stammt noch aus den Zeiten, als sich unzählige von frischgebackenen Bloggern auf das geniale WordPress stürzten und sich damit mehr oder weniger erfolgreich im Internet darstellten. Auch die ausgefeilte Verwaltung von Kommentaren und Kategorien mit ihren diversen Verschachtelungsmöglichkeiten stammt noch aus der ursprünglichen Konzeption als Blogsoftware.

Weils so schön einfach ist: Webseiten auch mit kleinem Budget

Da es mit WordPress genauso einfach ist, statische Seiten zu erstellen wie sagen wir mal einen neuen Blogbeitrag zu schreiben, hat es sich sehr schnell zur mit grossem Abstand beliebtesten Software für kleine und mittlere Webauftritte entwickelte. Laut dieser Studie von upload magazine  beherrscht WordPress aktuell (Stand März 2017) 58,9 Prozent des CMS-Marktes. Das hat natürlich den Hauptgrund, daß WordPress Open Source und kostenlos ist, und durch unzählige Plugins erweiterbar. Die oft gestellte Frage, ob WordPress auch wirklich ein vollwertiges CMS ist, wird hiermit akademisch. Es wird als CMS millionenfach verwendet, da schaffen die Fakten die Antwort. Eigentlich ist die Frage ja auch unsinnig, denn wenn man Tante Google mal bemüht, ist die Antwort auf „Was ist ein cms?“ schlicht und ergreifend:

Ein Content Management System (kurz CMS) ist eine Software, die zur Erstellung und Verwaltung von Inhalten – in Text-, Bild-, Video- oder sonstiger Form – verwendet wird. CMS werden vor allem zum Betreiben von Websites, aber auch für „Offline-Plattformen“ (in Intranetzwerken) eingesetzt.

Alles klar? Natürlich ist WordPress ein CMS. Die Frage ist nur: wie gut?

CMS für Fortgeschrittene: wer brauchts nicht?

Ich geh mal von ein paar einfachen Anwendungsbeispielen aus. Wenn nur eine „Visitenkarte“ im Web gebraucht wird, etwa für einen Arzt, einen Anwalt, einen Steuerberater, eine Werkstatt oder einen kleinen Laden, da muß man nicht mit Kanonen auf Spatzen schießen. Eine Startseite mit Informationen „Über uns“, Eine Seite „Unser Angebot“, Öffnungszeiten und Anfahrtskizze, ein Kontaktformular, vielleicht noch eine Seite für „Termine/Aktuelles“ (hier kommt die Blogfunktionalität zum Einsatz), AGBs und Impressum, das war’s in ganz vielen Fällen schon.

Dafür ist WordPress ganz ideal, so eine Webseite kann schnell und unkompliziert erstellt werden und innerhalb weniger Tage fertig sein. Der Pflegeaufwand hält sich auch meistens in Grenzen, ein Steuerberater möchte vielleicht einmal im Monat ein Mandantenrundschreiben mit aktuellen Steuerinformationen als PDF zum Download anbieten, ein Restaurant hat eine Wochenkarte oder ein aktuelles Tagesgericht, Urlaubstermine oder aktuelle Sonderangebote gehören eingepflegt, das wars dann meistens schon. Hier ist kein weiteres technisches Brimborium nötig, da macht man einen kleinen Wartungsvertrag und pflegt die Änderungen im Einzelfall manuell ein, ist ja kein Aufwand.

Für wen reicht das nicht?

Das ist gar nicht so einfach zu beantworten. Ich fang mal so an: in jedem (und sei es auch noch so kleinen) Unternehmen gibt es Listen. Preislisten, Kunden- und Lieferantenadressen, Kassenbuch, Lagerbestände, Terminkalender, Artikelstammdaten usw usf… und alle alten Programmierer lieben Listen! Ob diese jetzt in Excel (der Otto-Normalfall), Access (hach, schön wenn’s so ist), einem kleinen oder großen ERP/CRM oder auch nur auf Papier geführt werden, die Unternehmensdaten sind da, sie leben und werden gepflegt und sind immens wichtig für den Bestand des Ladens.

Wenn man jetzt nur sowas wie die Wochenkarte eines Restaurants oder die Preisliste eines Friseurs auf die Webseite bringen will, muß man da auch nicht lange rummachen, das geht mit copy&paste auf eine statische Seite, oder (etwas vornehmer) als hübsch formatiertes PDF zum Download. Aber schon mit den Artikelstammdaten einer Metzgerei oder eines Lebensmittelgeschäfts steht man da ganz schnell am Ende der Fahnenstange. Schon bei ein paar hundert Artikeln im Tante-Emma-Laden wird die Sache sehr schnell unübersichtlich.

Die Antwort in vielen Fällen: ein Online-Shop muss her!

Und da landet man unweigerlich ganz schnell bei woocommerce, dem verbreitetsten Shopsystem-Plugin für WordPress. Es ist auf den ersten Blick recht übersichtlich, wie man ein Produkt mit den entsprechenden Daten anlegt ist recht schnell gelernt, es gibt -zig Anleitungen und Hilfeseiten bei Tante Google zu finden. Bevor sie jetzt aber vor lauter Begeisterung anfangen, ihre Wurstsorten und Fleischspezialitäten da manuell einzuhacken, ziehen wir die Notbremse. Das geht auch einfacher!

Der Knackpunkt: die Import-Funktionalität

Und das gilt nicht nur für den Online-Shop, das gilt überall, wo sie Listen mit Unternehmensdaten ins Web bringen wollen. Es ist einfach nicht zumutbar, hunderte oder tausende von Datensätzen manuell zu erfassen, das ist rausgeschmissene Arbeit und viel zu aufwendig und fehlerträchtig. Wir alten Programmierer sind alle Experten darin, existierende Unternehmensdaten, in welcher Form sie auch immer vorliegen mögen, weiterzuverarbeiten und in den meisten Fällen in unsere Datenbank zu schubsen, damit wir schön mit ihnen jonglieren können. Wie das mit WordPress funktionieren kann, darüber gibts einen neuen Artikel, der hier ist lang genug. Aber ich hoffe es ist klargeworden, warum Datenimport so eine wichtige Sache ist.