MySQL: Wagenrücklauf in der Abfrage

8

Ich habe eine Abfrage, die Daten aus zwei Spalten jeder Zeile in eine Datei exportiert. In der Datei sollten die Daten aus jeder Spalte durch Wagenrücklauf getrennt werden, etwa so:

row1column1
row1column2
row2column1
row2column2
row3column1
row3column2

Ich habe versucht, char (13):

%Vor%

und die Ausgabedatei schien vollkommen in Ordnung zu sein (jede Spaltendaten waren in einer anderen Zeile), aber wenn ich sie als Eingabe für ein Programm benutzte, das das beschriebene Format akzeptieren sollte, erkannte es es nicht. Wenn ich jedoch manuell alle Wagenrückläufe in der Datei löschte und sie durch Drücken der "Enter" -Taste erneut hinzufügte, erkannte mein Programm die Datei ohne Probleme. Als ich mit char (13), char (10) versuchte, sah meine Ausgabedatei so aus:

row1column1
\
row1column2
row2column1
\
row2column1

Ich bin mir sicher, dass mir hier etwas offensichtlich fehlt:)

    
Daniel 23.06.2009, 10:19
quelle

4 Antworten

7

Ich sehe es in Mysql-Site, hoffe, es hilft Ihnen.

  

Sie sollten die folgende Syntax verwenden, um   Erstellen Sie eine CSV-Datei im Format   erwartet von Microsoft Excel:

     

... IN OUTFILE '/temp.csv' FIELDS   ESCAPED BY '' '' TERMINIERT VON ','   DURCH "" LINES TERMINATED BY   '\ r \ n';

     

Allerdings Felder mit Wagenrücklauf   kann die CSV wie MySQL brechen   automatisch ein Feld schließen, wenn der   \ r \ n Zeilenumbruch gefunden. Arbeiten   Um dies zu ersetzen, ersetzen Sie alle \ r \ n Brüche   mit \ n. Das Feld schließt nicht   \ n bricht und es wird in a gelesen   einzelne Zelle in Excel. Du kannst das   in derselben SQL-Anweisung, z   Beispiel:

     

SELECT REPLACE (field_with_line_breaks,   '\ r \ n', '\ n') FROM Tabelle IN IN OUTFILE   '/temp.csv' FELDS ESCAPED BY '' '' '   TERMINATED BY ',' ENCLOSED BY '' '   LINES TERMINIERT VON '\ r \ n';

     

Ich habe auch gefunden, dass Null-Werte könnten   breche die CSV. Diese können in bearbeitet werden   ein ähnlicher Weg:

     

SELECT IFNULL (mögliches_null_field, "")   FROM Tabelle INTO OUTFILE '/temp.csv'   FIELDS ESCAPED BY '' '' TERMINATED BY   "," ENDGESCHLOSSEN DURCH "" 'LINES TERMINATED   DURCH "\ r \ n";

     

Hinweis: Dies ersetzt NULL-Werte mit   eine leere Zeichenfolge, die technisch ist   nicht dasselbe, aber es wird geben   Sie eine leere Zelle in Excel statt   brechen die CSV-Struktur und   Verschieben der folgenden Zellen zum   links.

    
Haim Evgi 23.06.2009 10:31
quelle
4

Versuchen Sie einfach char (10) - das ist "\ n" - die UNIX-Methode.
Nur Char (13) "\ r" ist der (alte) Mac-Weg und "\ r \ n" ist der Windows-Weg, aber ich vermute, dass MySQL \ n nur für jede Zeile verwendet, also müssen Sie das anpassen.

    
Greg 23.06.2009 10:32
quelle
4

Haim Evgis Antwort funktioniert, aber:

%Vor%

Ich musste zu:

wechseln %Vor%

Es gab ein doppeltes Zitat in den FELDS ESCAPED BY, die diesen Fehler in mysql gab: "Fehler 1083: Feldtrennzeichen Argument ist nicht, was erwartet wird; überprüfen Sie das Handbuch".

Das Ändern in ein einfaches Anführungszeichen hat den Fehler beendet und eine Datei exportiert. Ich konnte es dann erfolgreich in Excel importieren, indem die Zeilenumbrüche korrekt formatiert wurden.

    
RandallK 16.10.2010 17:08
quelle
1

Sie haben wahrscheinlich Probleme mit Unterschieden in der Interpretation von Newline zwischen Betriebssystemen.

Wenn Ihre MySQL-Datenbank unter Unix / Linux läuft und eine Datei unter Unix gelesen wird oder die Datenbank unter Windows läuft und unter Windows gelesen wird, versuchen Sie Folgendes:

%Vor%

Wenn Ihre MySQL-Datenbank unter Unix / Linux läuft und eine Datei unter Windows gelesen wird, versuchen Sie Folgendes:

%Vor%

Sie können eine Datei auch zwischen "CRLF" (Windows) und "LF" (Unix) Zeilenumbrüchen konvertieren, indem Sie das kleine Befehlszeilenprogramm dos2unix und unix2dos verwenden, das in den meisten Linux-Distributionen enthalten ist.

    
Tometzky 23.06.2009 13:24
quelle

Tags und Links