Skip to content

SQL-Daten konvertieren

Software Für alles mögliche verwende ich seit einige Zeit Serendipity. Das ist eigentlich ein Blog, aber ich verwende es mehr als CMS (Content Management System). Damit stelle ich ganz unterschiedliche Themen online, von den Notizen aus dem Geoinformatik-Studium bis zu POI in Berlin.

Wobei ich letztere gar nicht selbst eingebe, sondern über ein kleines PHP-Programm aus einer XAPI-Abfrage der OSM-Datenbank konvertieren lassen. Die meisten kennen nur die Karte von OpenStreetMap, aber da sind ja auch POI (Points Of Interest, Orte von Interesse) drin. Und da sind wir auch schon beim Thema SQL-Konvertierung.

Das war nicht schon immer so, dass ich alles mögliche mit S9y (wie die Software in Kurzform heißt) gemacht habe. Früher hatte ich auch mal eine Terminkalender-Software in Verwendung, deren Daten ich schon vor einiger Zeit mit ein paar SQL-Befehlen aus der mySQL-Datenbank-Tabelle in das Blog konvertiert habe.

Gestern war es mal wieder soweit. Das Update des FAQ-Systems phpMyFAQ ging schief und es tat sich gar nichts mehr. Wieder zurück zur alten Version, alles schick, nur das Update wollte nicht. Also schnell beschlossen: Die Geocaching-FAQ wird nun auch auf S9y umgestellt. Da weiß ich zumindest mittlerweile, wo welcher Knopf ist an dem ich drehen muss wenn mal was nicht will.

Ein Aufgabenstellung, die man öfter mal hat. Die Daten von einem System (hier wars nun eben zufällig phpMyFAQ) sollen in ein anderes (bei mir zumindest zur Zeit immer S9y) konvertiert werden - es gibt aber keinen fertigen Konverter.

Die Konvertierung von Daten auf dem SQL-Server ist dabei ziemlich einfach, wenn man sich die Datenbanken in den beiden Systemen anguckt. Und unter der Voraussetzung, dass bei beiden Systemen das Encoding richtig eingestellt ist, also ISO-Latin oder UTF8. Das ist dann der Fall, wenn man die Inhalte in den Tabellen einwandfrei lesen kann, sprich: Die Umlaute stimmen.

Für alle die es interessiert, gehe ich hier den Ablauf mal durch, der als Beispiel für alle Konvertierungen dieser Art dienen kann.

insert into serendipity_entries (id, title, body, extended, author, timestamp) SELECT id, keywords as title, thema as body, content as extended, author, links_check_date as timestamp FROM phpmyfaq_faqdata


Man fängt am besten hinter dem Select an zu lesen. Die Einträge aus der FAQ werden dazu ausgewertet, alle Felder die in dem Blog benötigt werden werden mit einem Alias ausgewählt, wie er in dem Blog heissen soll. Dort werden sie dann auch mit der Einfügeabfrage reingeschrieben.

insert into serendipity_authors (realname, username, email) select author as realname, author as username, email from phpmyfaq_faqdata group by email


Hier wird eine Benutzertabelle aufgebaut. Die brauche ich in den Blog zwar nicht, aber so kann man das machen. Einloggen können die sich mangels Passwort schon nicht. Die User-ID bekommen die Benutzer im Blog durch das Autoincrement, Benutzer gabs in der FAQ nicht, man konnte mit Name und E-Mail seinen Beitrag dort abliefern.

insert into serendipity_category (categoryid, category_name, category_description) SELECT id as categoryid, name as category_name, description as category_description FROM phpmyfaq_faqcategories


Die Kategorien aus der FAQ werden dann so 1:1 in das Blog konvertiert - sehr unspektakulär.

insert into serendipity_entrycat (categoryid, entryid) SELECT category_id as categoryid, record_id as entry_id FROM phpmyfaq_faqcategoryrelations


Bei wohl allen Systemen dieser Art gibts dann eine n:m-Relation zwischen Artikeln und Kategorien. Das kann auch so direkt konvertiert werden. Die Felder heißen nur unterschiedlich, aber dafür kann man ja den passenden Alias hinter "as" verwenden.

update serendipity_entries set authorid=1
update serendipity_entries set exflag=1
UPDATE serendipity_entries SET isdraft = 'false'


Damit die Beiträge auch angezeigt werden, müssen noch ein paar Felder in dem Blog gesetzt werden, die beim Füllen der Tabelle nicht berücksichtigt wurden. Hätte man auch gleich machen können, aber dann wäre die Einfügeabfrage etwas unübersichtlicher geworden.

insert into serendipity_comments (entry_id, author, email, body, timestamp) SELECT id as entry_id, usr as author, email, comment as body, datum as timestamp FROM phpmyfaq_faqcomments


Auch die Kommentar aus der FAQ sollen als Kommentare im Blog verwendet werden. Kein Problem, die Felder gibts in beiden Systemen. Sogar die Timestamps sind auf beiden Systemen Unix-Sekunden, falls das nicht so ist kann man schon beim Select die Timestamp-Funktion vom SQL verwenden um andere Datumsangaben zu konvertieren.

update serendipity_comments set type="NORMAL"
update serendipity_comments set status="approved"


Damit die Kommentare auch korrekt angezeigt werden, müssen nur noch ein paar Attribute korrigiert werden. Das wars dann auch schon.

So eine Sammlung von Abfragen kann man dann immer wieder verwenden, wenn man sie einmal erstellt und getestet hat, um Daten von einem System in ein anderes zu konvertieren. Wer lange genug mit Computern zu tun hat, wird wissen warum: Der Zeitpunkt, von einem System auf ein anderes zu wechseln wird immer kommen, die Frage ist nicht ob, sondern wann.

Verkehrsteilnehmer

Nicht das in Deutschland schon alles geregelt genug wäre:

Unbestätigten Gerüchten zu Folge hat das Straßenverkehrsamt nun eine neue Regelung verabschiedet.

Wie ich der Mail entnehmen konnte, betrifft diese vor allem die Verkehrsteilnehmer der B-Klasse, erkennbar an dem entsprechenden Eintrag auf der Rückseite der Fahrerlaubnis:

In Deutschland hat sich die Qualität der Pkw-Fahrer deutlich verschlechtert. Aus diesem Grund hat das Straßenverkehrsamt ein neues System eingeführt um die schlechten Fahrer zu identifizieren.

Mit sofortiger Wirkung werden allen Fahrern, die sich im Straßenverkehr schlecht benehmen (unter anderem durch plötzliches Anhalten, zu dichtem Auffahren, Überholen an gefährlichen Stellen, Abbiegen ohne zu blinken, Drehen auf Hauptstraßen und rechts überholen) Fahnen ausgehändigt. Sie sind rot, mit einem schwarzen Streifen oben und einem gelben Streifen unten. Dadurch sind sie für andere Verkehrsteilnehmer als unfähige Autofahrer zu identifizieren.

Diese Fahnen werden an der Autotür befestigt und müssen für alle anderen Verkehrsteilnehmer gut sichtbar sein.

Die Fahrer, die eine besonders schwache Leistung gezeigt haben, müssen je eine Fahne auf beiden Seiten ihres Autos befestigen, um auf ihre fehlende Fahrkunst und ihren Mangel an Intelligenz aufmerksam zu machen.


Bitte an andere Verkehrsteilnehmer weiterleiten, so dass alle die Bedeutung dieser Fahnen verstehen.


Endlich mal eine sinnvolle Regelung! Die früheren Kriterien wie "Opa mit Hut" sind schon lange nicht mehr eindeutig anwendbar.

Ich frag mich nur noch, was jetzt die Dekoration unter dem Schlafzimmerfenster bedeuten soll?

Parkbank

Eine der Standard-Verstecke für urbane Tüddeldosen ist die Parkbank. Ob mit bipolarer Magie angepappt oder formschlüssig montiert, an diesen Straßenmöbeln gibts öfter mal einen Micro zu loggen.

Über den ersten eigenen Geocache der Berliner Geocacherin The Frühtau talken wir zwar am Boxhagener Platz im hippen Friedrichshain auf einer Parkbank, standesgemäß mit dem Billigbier vom Kiez-Laden - aber der ist dann doch etwas fieser versteckt. Ohne Betreuung hätte es hier bei mir nur für den DNF gereicht, daher wird in dieser Episode des Geocaching-Podcasts aus der Hauptstadt auch etwas rumgespoilert.

Nebenbei gehts dann auch noch um Educaching, Geocaching als Tourismus-Zugpferd und auch die letzten Ereignisse vor dem Event in Beelitz Heilstätten werden in dieser Doppelfolge kurz zusammengefasst.

cachetalk073.mp3

Wir waren gut drauf

Nachdem in Berlin erst gar keiner so richtig mit einem der Events mit dem offensichtlich begehrten Icon für 10 Jahre in den Quark kommen wollte, hab ich mir einfach erlaubt eins am 2. Mai in Brandenburg, etwas südlich von Berlin einzustellen.

Und wenn schon nicht in Berlin, dann jedenfalls bei GC77, der ersten Dose in Deutschland überhaupt. Die übrigens noch keine 10 Jahre alt wird, das wird gern mal verwechselt, das ist erst im Oktober soweit. Für Berlin wäre dann der 1. Mai noch frei gewesen (sowieso ein beliebter Tag in der großen Stadt für diverse Treffen anderer Gruppierungen).

Nun ist das einmalige Event zwar schon ein paar Tage her, aber heute hat der Weihnachtshase uns das Video zum Event mitgebracht. Respektable Leistung, und im Gegensatz zu den Aufnahmen mit der versteckten Kamera auch bis zum Ende anguckbar.

10 Years Geocaching Event GC77 from sklz on Vimeo.


Eigentlich war ja der Plan, wir treffen uns wieder mit den Cachemopeds, stoßen mit bleifreiem Bier an und drehen dann noch eine Runde in der Gegend und sammeln Tradis ein. Aber die Resonanz war so groß dass ich das Programm etwas ändern musste.

Der Tubenklassiker bei dem die Zellen gut drauf sind wurde kurz von mir neu vertextet. Soweit auch alles kein Problem, da braucht man wohl keinen Zettel für, denk ich mir, das kann sich doch ein Fünfjähriger merken:

Jeder Punkt in der Statistik macht mich glücklich,
nach jedem neuen Found bin ich gut drauf.
Jeder Tradi, und jeder Multi,
alle neue Dosen such ich auf!


Und dann passiert mir das doch tatsächlich, dass ich da stehe, anstimmen möchte - und: Mist! Der Originaltext hängt mir im Kopf und geht nicht mehr raus. Den wollte ich hier natürlich jetzt genau nicht zu Gehör bringen.

Auch wenns Dieter Bohlen nicht gefallen hätte - wir waren richtig gut drauf. Und das weniger wegen der Statistik, sondern auch wegen des Geburtstagskuchens von ElliBi und anderen leckeren Dingen die mitgebracht wurden.

Für 20 Jahre Geocaching tanz ich dann auch, dafür hab ich dann ja noch ein paar Jahre Zeit mich darauf vorzubereiten. Aber selbst dafür hab ich schon eine Idee...

Kurz vor die Tür

Eigentlich hatte Geoquassel-Mica einen Talk-Gast angekündigt, der Zombie-Dosen sucht. Also Dosen, die noch an ihrem Ort liegen, wo bei GC aber das Listing schon archiviert ist.

Diese Dosen, teilweise auf verbotenem Terrain gelegt, wegen privaten Streitereien oder Frust des Owners archiviert, sind dann meist noch bei OC oder sonstwo gelistet. So kann man sie noch suchen und natürlich auch noch loggen.

Der Talk-Gast steckte aber noch in irgendeinem Lostplace fest und ich wollte auf dem Berolina Stammtisch im April dann doch nicht mehr warten. Daher habe ich eine Runde anderer Berliner Geocacher kurz vor die Tür gebeten. Wer danach noch erscheint, wird von Mica zu einer B-Nummer vertalkt.

Ein kurzer Talk mit den Organisatoren, die zwei Damen vom Lostplace geben ihre Empfehlungen, Regine erklärt ihre Idee von den getwitterten Logs und der Meister hinter den eckigen Klammern berichtet vom Coin-Knips-Wettbewerb.

cachetalk072.mp3
tweetbackcheck