Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie gehe ich mit NULL-Werten in einer mysql SELECT ... OUTFILE-Anweisung in Verbindung mit FIELDS ESCAPED BY um? NULL-Werte werden derzeit abgeschnitten

Ich konnte MySQL-Abfrageergebnisse erfolgreich als CSV speichern und wie folgt in Excel importieren:

  1. Verwenden Sie das Formular...

    IFNULL(ColumnA, "" ) AS "Column A",
    

... für jede Spalte oder jeden Ausdruck in Ihrer SELECT-Anweisung, die möglicherweise eine NULL (\N) zurückgeben kann. Dadurch wird sichergestellt, dass NULL-Werte in Ihrer CSV-Datei als ordnungsgemäß in Anführungszeichen gesetzte leere Zeichenfolgen und nicht als falsch in Anführungszeichen gesetzte \Ns angezeigt werden. Anstelle eines leeren Strings könnten Sie möglicherweise einen Wert angeben, der eine NULL darstellt, z. B. ...

    IFNULL(ColumnA, "~NULL~" ) AS "Column A",
  1. Verwenden Sie die folgenden OUTFILE-Optionen:

FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\r\n'

Beachten Sie, dass ESCAPED BY genau wie ENCLOSED BY ein doppeltes Anführungszeichen angibt. Ich habe nicht getestet, ob OPTIONALLY ENCLOSED BY erfolgreich sein wird, also lasse ich OPTIONALLY einfach weg.

Die Verwendung eines doppelten Anführungszeichens, um ein anderes doppeltes Anführungszeichen innerhalb eines Feldwerts in Anführungszeichen zu maskieren, ist gemäß der CSV-Spezifikation erforderlich – RFC 4180, Abschnitt 2.7.