Heinz: Umgang mit Slashes und Anführungszeichen bei späterem CSV-Export

Guten Tag,

ich möchte meine DB-Daten später aus phpmyadmin heraus in eine CSV-Datei exportieren.
Nun lautet meine Frage an diejenigen mit Praxiserfahrung:
Wie gehe ich am besten mit Slashes und Sonderzeichen um?
Soll ich die Daten, die ich in die DB schreibe, mit Escape-Slashes versehen?
Mit welchen Zeichen trennt ihr die Felder beim Daten-Export? Was mache ich z.B., wenn ein Datensatz ein Semikolon erhält, dann fällt ja das Semikolon als Trennzeichen für die Felder sofort weg!?

Mein Ziel ist es, die Daten möglichst original in der Datenbank zu erhalten (geht das auch ohne Slashes?) und genauso original dann in der  CSV-Datei, die ich später evtl. in Excel importieren möchte.

Danke für eure Tipps

Heinz

  1. Hi,

    lies Dir http://suche.de.selfhtml.org/cgi-bin/such.pl?suchausdruck=author%3ATom+category%3APHP+CSV&lang=on&feld=alle&index_5=on&hits=100

    durch, und Du bist im Bilde

    Mir hat es schließlich auch mal beigebracht...

    LG
    Chris

  2. hi,

    Mit welchen Zeichen trennt ihr die Felder beim Daten-Export? Was mache ich z.B., wenn ein Datensatz ein Semikolon erhält, dann fällt ja das Semikolon als Trennzeichen für die Felder sofort weg!?

    Standard für CSV ist das Semikolon als Trennzeichen.
    Sollte das Semikolon selbst in einem Datum vorkommen, wird dieses Datum mit doppelten Anführungszeichen umschlossen.
    Daraus wiederum folgt natürlich, dass "normale" doppelte Anführungszeichen im Inhalt eines Datums ihrerseits maskiert werden müssen - üblicherweise durch Doppelung, also "".

    Schau dir die Beschreibung der wikipedia zum Thema CSV-Datei an - das sollte weiterhelfen.

    Falls du mit PHP arbeitest, könnte dir wohl fputcsv() schon den größten Teil der Arbeit abnehmen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. echo $begrüßung;

    Soll ich die Daten, die ich in die DB schreibe, mit Escape-Slashes versehen?

    Jein. Die Daten, die in der DB ankommen sollten immer im Rohzustand sein. Beim Transport in die DB sind meist Maskierungen vonnöten, damit Zeichen, die auf diesem Transportweg (sprich SQL-Befehl) eine besondere Bedeutung haben von denen die ein Bestandteil der Daten sind unterschieden werden können. Jede Datenbank hat andere Sonderzeichen und Maskierungsregeln. Bei MySQL kümmert sich mysql_real_escape_string() um die richtige Behandlung der Daten. (PHP's Magic Quotes-Mechanismus ist nicht sonderlich geeignet.)

    Mit welchen Zeichen trennt ihr die Felder beim Daten-Export?

    So wie es das Export-Format vorschreibt. Für CSV hast du ja schon Tipps bekommen.

    Mein Ziel ist es, die Daten möglichst original in der Datenbank zu erhalten (geht das auch ohne Slashes?)

    Die zum Transport eingefügten Maskierungszeichen werden bereits vom Parser eliminiert und landen nicht in den Tabellen.

    und genauso original dann in der CSV-Datei, die ich später evtl. in Excel importieren möchte.

    Das ist wenig zielführend. Für jeden Transportweg (HTML, CSV, SQL, Brieftaube, ...) sind die Daten entsprechend anzupassen. Wenn Daten aus einer Quelle kommen, bearbeitet werden sollen und dann zu einem Ziel transportiert werden sollen, sind sie gegebenenfalls zuerst von den Maskierungszeichen der Quelle zu befreien, dann erfolgt die Verarbeitung um sie anschließend dem Ziel entsprechend erneut zu maskieren.

    echo "$verabschiedung $name";