Ich versuche also, eine MySQL-Tabelle in CSV zu exportieren. Ich verwende diese Abfrage:
%Vor%Das gibt so etwas aus:
Das Problem dabei ist, dass es immer einen zusätzlichen Backslash gibt, wo es eine neue Zeile gibt, wie im Adressfeld.
CSV, das von phpMyAdmin exportiert wird, hat es jedoch nicht:
Jede Möglichkeit, SELECT ... OUTFILE zu machen ... macht dasselbe?
Die Tabelle, mit der ich es zu tun habe, hat 20 Millionen Datensätze, phpMyAdmin kann nur etwa 500.000 Datensätze für jede Exportaktion verarbeiten - oder es wird leer oder der mysql-Server ist weggegangen, usw.
Versuchen Sie Folgendes:
%Vor%Ich denke, das Problem ist, dass MySQL versucht Newline ('\ n') in Ihren Textfeldern zu umgehen, weil es Ihr Zeilenende ist.
FIELDS ESCAPED BY steuert, wie Sonderzeichen geschrieben werden. Wenn das FIELDS ESCAPED BY-Zeichen nicht leer ist, wird es als Präfix vor den folgenden Zeichen bei der Ausgabe verwendet:
Die FIELDS ESCAPED BY-Zeichen
Die Felder FIELDS [OPTIONALLY]
Das erste Zeichen der Werte FIELDS TERMINATED BY und LINES TERMINATED BY
ASCII NUL (das nullwertige Byte; was nach dem Escape-Zeichen geschrieben wird, ist ASCII "0", kein nullwertiges Byte)
( MySQL )
Ich verstehe nicht wirklich, warum es in Ihrem Fall tut, was es tut, aber ich konnte so etwas auf meinem Mac bekommen, und die obige Abfrage schien die Ausgabe in meinem Fall zu beheben.
Hoffe das hilft!
Es sieht so aus, als ob es für einen MySql-Export unmöglich ist, sowohl Newlines als auch Zitate korrekt zu exportieren.
Beim Exportieren gibt MySql automatisch beide
freiStandardmäßig ist das Escape-Zeichen ein umgekehrter Schrägstrich. Sie können dies überschreiben, indem Sie ESCAPED BY '' zu Ihrer Abfrage hinzufügen.
Leider möchten Sie in einer "normalen" (Excel-kompatiblen) CSV-Datei wahrscheinlich unterschiedliche Kodierungen für Zeilenumbrüche und Anführungszeichen verwenden. Insbesondere möchten Sie, dass Zeilenumbrüche nicht bearbeitet werden und dass die Anführungszeichen verdoppelt werden.
z. Wenn ein Wert eine neue Zeile wie folgt enthält:
Dies ist Zeile 1
Und das ist "Zeile 2", die Anführungszeichen enthält
sollte
werden"Dies ist Zeile 1
Und das ist "" Zeile 2 "", die Anführungszeichen enthält "
Die Lösung, die ich gefunden habe, bestand darin, die Anführungszeichen vorzuspulen und ESCAPED BY '' (eine leere Zeichenkette) zu meiner Abfrage hinzuzufügen.
SELECT REPLACE (Feld1, '' ',' '' '),
ERSETZEN (field2, '"', '"' '),
...
VON ...
WO ... IN OUTFILE '/someFile.csv'
FELDER TERMINIERT VON '', 'OPTIONAL GESCHLOSSEN VON' '' ENTWICKELT ''
LINES TERMINIERT VON '\ n'
Tags und Links sql mysql into-outfile