Ich habe eine CSV-Datei von angemessener Größe (40 Megabyte). Ich weiß, dass einige Apps mit bestimmten Codierungen nicht funktionieren und dass sie Fehler auslösen, wenn die Codierung nicht ASCII ist. Aber es ist alarmierend, dass selbst TextEdit.app diese Datei nicht öffnen kann.
Zuerst habe ich Numbers.app ausprobiert . Ich habe sichergestellt, dass dies kein Launch Services-Fehler ist, da ich die Datei in der App geöffnet habe. Es würde nicht geladen. Der Fortschrittsbalken bleibt immer auf halber Strecke hängen. Wenn ich diese CSV-Datei mit TextEdit.app öffne , wird sie auch nicht geladen. Nicht einmal Google Sheets. Die Datei ist nur 40 Megabyte groß und enthält nur ASCII-Zeichen. Das Ausführen file
des Befehls in Terminal.app gibt die folgende Meldung zurück:
file.csv: ASCII text, with very long lines
.
Ich kann die Datei mit Visual Studio Code öffnen , aber nicht in TextEdit.app . Wie kann ich es reparieren? Ich habe die Datei von Zeichen befreit \r
.
Update : Laufender wc -l file.csv
Befehl gibt zurück 176831
. Mein System ist ein 2016 MacBookPro mit 16 GB RAM.
Es ist durchaus üblich, dass GUI-Programme große Textdateien nicht verarbeiten können. Obwohl 40 MB nach heutigen Standards nicht nach viel klingen, kann dies je nach Schreibweise der Anwendung zu viel mehr Speicher führen. Und GUI-Anwendungen sind oft nicht die effizientesten.
Möglicherweise möchten Sie die Textdatei mithilfe des Terminals in mehrere kleinere aufteilen. less filename.csv
Überprüfen Sie zunächst, ob Sie die Datei mit im Terminal öffnen können und ob die Zeichen gut lesbar sind. Wenn nicht, ist die Datei möglicherweise beschädigt, und das könnte das Problem sein.
Versuchen Sie für die tatsächliche Aufteilung Folgendes auf dem Terminal:
#!/bin/bash
N=10000 # Number of lines per file
i=1
j=0
filename="hugefile.csv"
extension=.csv
while [ $i -le $(wc -l $filename|awk '{print $1}') ]
do
newfilename="$(basename $filename $extension)$j$extension"
echo $newfilename: $i
sed -n $i,$((i+$N))p $filename > $newfilename
j=$((j+1)); i=$((i+$N))
done
Kopieren Sie das und fügen Sie es in ein einfaches Textdokument ein (z. B. TextEdit im einfachen Textmodus oder nano auf dem Terminal) und benennen Sie es split.sh
oder etwas Ähnliches. Passen Sie die Parameter N
und filename
nach Bedarf an, geben Sie zB die gewünschte Anzahl von Zahlen pro Datei in N=...
und den Dateinamen Ihrer Quelldatei als ein filename="..."
. Dadurch wird die notwendige Menge an Dateien in Ihrem aktuellen Verzeichnis generiert, um alle Zeilen der Quelldateien in N
jeweils kleineren Dateien mit Zeilen abzudecken. An die Dateien wird eine Nummer angehängt, zB hugefile0.txt
an hugefile9.txt
oder so ähnlich.
Jetzt sollten Sie in der Lage sein, jede dieser Dateien in Ihrer gewünschten Anwendung zu öffnen. Es ist oft wünschenswert, mit kleineren Teilen einer großen Datei zu arbeiten als mit der ganzen Datei auf einmal. Sie könnten sogar die resultierenden CSV-Dateien nacheinander in Numbers öffnen und die Zeilen aus jeder Datei in ein großes Numbers-Dokument kopieren. Auf diese Weise wird der Importeur wahrscheinlich nicht an einer so großen Datei hängen bleiben.
Falls Sie Fehler in Bezug auf sed
oder erhalten awk
, liegt das daran, dass Mac sed
und awk
anders sind als die regulären sed
oder awk
. sed
In diesem Fall müssen Sie möglicherweise regulär und von etwas wie Macports oder Homebrew installieren awk
.
kein Hang
wc -l FILE.csv
im Terminal ausführen, um dies zu überprüfen)? Was passiert, wenn Sie versuchen, es in Textedit zu öffnen?Nimesh Neema
Nimesh Neema
Michael Illie
Michael Illie
Nimesh Neema
less file.csv
und prüfen Sie, ob Sie die Zeichen gut lesen können. Versuchen Sie, die Datei nach einem Neustart erneut mit TextEdit.app zu öffnen.Steve Kammern
Michael Illie
JBis
cat file.csv
Im Terminal ausführen .theonlygusti