Impossibile aprire il file CSV

2

Ho un file CSV di dimensioni ragionevoli (40 Megabyte). So che alcune app non funzioneranno con certe codifiche e che genereranno un errore se la codifica non è ASCII. Ma è allarmante che persino TextEdit.app non sia in grado di aprire questo file.

Per prima cosa ho provato Numbers.app . Mi sono assicurato che questo non fosse un errore di Launch Services, perché ho aperto il file all'interno dell'app. Non verrebbe caricato. La barra di avanzamento rimane sempre bloccata a metà. Quando apro questo file CSV con TextEdit.app , non verrà caricato neanche. Nemmeno Fogli Google. Il file ha solo 40 Megabyte e ha solo caratteri ASCII. L'esecuzione del comando file in Terminal.app restituisce il seguente messaggio:

file.csv: ASCII text, with very long lines .

Sono in grado di aprire il file utilizzando Codice di Visual Studio ma non in TextEdit.app . Come posso ripararlo? Ho pulito il file per tutti i caratteri \r .

Aggiornamento : l'esecuzione del comando wc -l file.csv restituisce 176831 . Il mio sistema è un MacBookPro 2016 con 16 GB di RAM.

    
posta Michael Ilie 30.03.2018 - 18:22
fonte

1 risposta

1

È abbastanza comune che i programmi della GUI non siano in grado di gestire file di testo di grandi dimensioni. Anche se 40 MB non sembrano grandi per quanto riguarda gli standard odierni, ma questo potrebbe aumentare di molto di più in memoria a seconda di come è scritta l'applicazione. E le applicazioni GUI spesso non sono le più efficienti.

Potresti voler dividere il file di testo in più di uno più piccolo usando il terminale. Innanzitutto, controlla se puoi aprire il file utilizzando less filename.csv nel Terminale e se i caratteri leggono bene. In caso contrario, il file potrebbe essere danneggiato e questo potrebbe essere il problema.

Per la divisione acutale, prova a utilizzare qualcosa di simile sul terminale:

#!/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

Copia e incolla questo in un documento di testo semplice (ad es. TextEdit in modalità testo normale o nano sul Terminale) e chiamalo split.sh o qualcosa di simile. Personalizza i parametri N e filename come necessario, ad es. inserisci il numero desiderato di numeri per file in N=... e il nome file del tuo file di origine come filename="..." . Ciò genererà la quantità necessaria di file nella directory corrente per coprire tutte le righe dei file di origine in file più piccoli di N righe ciascuno. I file avranno un numero aggiunto, ad es. hugefile0.txt a hugefile9.txt o qualcosa del genere.

Ora dovresti essere in grado di aprire ognuno di questi file nell'applicazione desiderata. Spesso è preferibile lavorare con porzioni più piccole di un file di grandi dimensioni rispetto all'intero file in una sola volta. È anche possibile aprire i file CSV risultanti in Numbers uno dopo l'altro e copiare le righe da ciascun file in un unico grande documento di Numbers. In questo modo probabilmente l'importatore non si bloccherà su un file così grande.

In caso di errori relativi a sed o awk , è perché Mac sed e awk sono diversi dal normale sed o awk . In tal caso, potresti dover installare sed e awk regolari da qualcosa come Macports o Homebrew.

    
risposta data 31.03.2018 - 07:43
fonte

Leggi altre domande sui tag