CSV Datei aus MySQL Datenbank generiern

12 11 2011

Ich wollte aus der MySQL Datenbank für das RamTatTa Fanzine drei Felder als CSV exportieren. Dafür gab es ein paar Bedingungen.
– Jedes Feld soll in Hochkommata („) eingeschlossen sein
– Felder sollen durch Komma (,) getrennt sein
– Das letzte Feld soll die aus der ID des Datensatzes zusammengebaute URL sein

Das erreiche ich mit folgendem Select:

select concat(
  '"', 
  ifnull(
    replace(band, '"', '""'),
    ""
  ), '","',
  replace(titel, '"', '""'), 
  '","http://www.ramtatta.de/reviews,id-', id, '.html"'
) as csv
from ramtatta_reviews
order by id asc;

 

Diese Befehle kurz erläutert:

concat – Füge alle Ergebnisse zu einer einzigen Zeile zusammen

ifnull – Concat gibt kein Ergebnis zurück, sobald ein Feld NULL enthält, also leer ist. Da das Feld „band“ leer sein kann, ich aber trotzdem alles Andere ausgegeben haben möchte, wandle ich hiermit NULL in Leer („“) um.

replace – Da die Felder mit Hochkommata getrennt sind, würde es zu Problemen führen, falls sich in den Feldern ebensolche befinden. Ein Feld
Sehr „gutes“ Album
würde in der CSV so aussehen:
„Sehr „gutes“ Album“
Damit würde das Feld in der CSV Datei also bei „Sehr “ aufhören. Damit dies nicht geschieht, müssen die Hochkommatas maskiert werden, indem diese verdoppelt werden. Im Endeffekt sähe das dann so aus:
„Sehr „“gutes““ Album“

Diese Datei kann nun in einer Tabellenkalkulation geladen werden. Die Einstellungen für LibreOffice Calc sehen so aus:

Und so sieht das Ergebnis aus:

Advertisements

Aktionen

Information

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s




%d Bloggern gefällt das: