No se puede abrir el archivo CSV

2

Tengo un archivo CSV de tamaño razonable (40 Megabytes). Sé que algunas aplicaciones no funcionarán con ciertas codificaciones, y que generarán un error si la codificación no es ASCII. Pero es alarmante que incluso TextEdit.app no pueda abrir este archivo.

Primero probé Numbers.app . Me aseguré de que esto no sea un error de Servicios de inicio, porque abrí el archivo dentro de la aplicación. No se cargaría. La barra de progreso siempre se atasca a medio camino. Cuando abro este archivo CSV con TextEdit.app , tampoco se cargaría. Ni siquiera las hojas de Google. El archivo solo tiene 40 megabytes y solo tiene caracteres ASCII. Al ejecutar el comando file en Terminal.app , aparece el siguiente mensaje:

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

Puedo abrir el archivo utilizando Visual Studio Code pero no en TextEdit.app . ¿Cómo puedo arreglarlo? Limpié el archivo para cualquier carácter \r .

Actualizar : ejecutar el comando wc -l file.csv devuelve 176831 . Mi sistema es un MacBookPro 2016 con 16 GB de RAM.

    
pregunta Michael Ilie 30.03.2018 - 18:22

1 respuesta

1

Es bastante común que los programas GUI no puedan manejar archivos de texto grandes. Aunque los 40 MB no suenan como grandes en relación con los estándares de hoy, pero eso podría aumentar mucho más en la memoria, dependiendo de cómo esté escrita la aplicación. Y las aplicaciones GUI a menudo no son las más eficientes.

Es posible que desee dividir el archivo de texto en varios más pequeños utilizando el terminal. Primero, verifique si puede abrir el archivo usando less filename.csv en la Terminal, y si los caracteres se leen bien. De lo contrario, el archivo podría estar dañado y ese podría ser el problema.

Para la división real, intente usar algo como esto en el 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

Copie y pegue eso en un documento de texto plano (por ejemplo, TextEdit en modo de texto plano o nano en la Terminal) y asígnele el nombre split.sh o algo similar. Personalice los parámetros N y filename según sea necesario, por ejemplo. ingrese el número deseado de números por archivo en N=... y el nombre de archivo de su archivo fuente como filename="..." . Esto generará la cantidad necesaria de archivos en su directorio actual para cubrir todas las líneas de los archivos de origen en archivos más pequeños de N líneas cada uno. Los archivos tendrán un número agregado, por ejemplo, hugefile0.txt a hugefile9.txt o algo por el estilo.

Ahora debería poder abrir cada uno de estos archivos en la aplicación deseada. A menudo es conveniente trabajar con porciones más pequeñas de un archivo grande que con todo el archivo a la vez. Incluso podría abrir los archivos CSV resultantes en Números uno tras otro y copiar las líneas de cada archivo en un documento grande de Números. De esa manera, el importador probablemente no se cuelgue en un archivo tan grande.

En caso de que obtenga algún error con respecto a sed o awk , eso se debe a que Mac sed y awk son diferentes a los sed o awk normales. En ese caso, es posible que necesites instalar sed y awk desde algo como macports o homebrew.

    
respondido por el LukeLR 31.03.2018 - 07:43

Lea otras preguntas en las etiquetas