Ich habe eine CSV-Datei, die ich in eine Tabelle importieren möchte mysql
. Ich möchte daher sicherstellen, dass ich sie LINES TERMINATED BY
richtig melde. Ich kann jedoch nicht herausfinden, welche Zeichen die Zeilen in dieser CSV beenden.
Ich würde vermuten, dass es durch \n
(das standardmäßige Unix-EOL) beendet wird. Wie kann ich das sicher feststellen?
ich habe es versucht
cat -v file.csv
file file.csv
Ich habe auch versucht, vim zu verwenden und :set list
das zeigte nur die Position der Zeilenumbrüche mit$
Alle Vorschläge sind willkommen
Antwort1
Sie können einen Hex-Dump Ihrer Datei erstellen, xxd
der Teil des vim-common
Pakets ist.
xxd file.csv | less
Überprüfen Sie dann die Zeilenenden:
- 0a => \n
- 0d => \r
- 0d0a => \r\n
Antwort2
Damit können Sie sich file
einen Anhaltspunkt für die Art der Zeilenenden verschaffen.
Unix:
$ file file1.txt
file1.txt: ASCII text
DOS:
$ file file2.txt
file2.txt: ASCII text, with CRLF line terminators
und zu wissen, dass DOS als Zeilenende einen Wagenrücklauf und einen Zeilenvorschub ("\r\n") verwendet, während Unix nur einen Zeilenvorschub ("\n") verwendet.
So können Sie das EOL jeder gewünschten Datei bestimmen.
Antwort3
Anstatt ein PRÜFEN durchzuführen, können Sie auch einfach den gewünschten Zeilenende-Stil festlegen:
sudo apt-get dos2unix
gibt Ihnen Zugriff auf dos2unix
Befehlszeilen unix2dos
-Dienstprogramme.
Diese konvertieren die Textdateien entsprechend ihrer Namen.
Vorbehalt: Dateien mit gemischtem Inhalthatwar lästig, ich bin nicht auf dem Laufenden, ob das Problem behoben ist.