2 votos

No se puede abrir el archivo CSV

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

Primero intenté con Numbers.app. Me aseguré de que no fuera un error de Launch Services, porque abrí el archivo dentro de la aplicación. No se cargaba. La barra de progreso siempre se quedaba atascada a la mitad. Cuando abro este archivo CSV con TextEdit.app, tampoco se carga. Ni siquiera Google Sheets. El archivo solo tiene 40 megabytes y contiene solo caracteres ASCII. Al ejecutar el comando file en Terminal.app devuelve el siguiente mensaje:

file.csv: texto ASCII, con líneas muy largas.

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

Actualización: Al ejecutar el comando wc -l file.csv devuelve 176831. Mi sistema es un MacBook Pro de 2016 con 16 GB de RAM.

3 votos

¿Cuántas líneas tiene (ejecute wc -l FILE.csv en Terminal para verificar)? ¿Qué pasa si intenta abrirlo en Textedit?

1 votos

¿Hay alguna razón por la que quieres abrirlo con un editor específico? Los editores varían en su capacidad para manejar un archivo voluminoso en memoria. Por lo general, veo tiempos de carga más rápidos con Sublime Text.app en comparación con TextEdit.app, por ejemplo.

1 votos

También, sería útil si pudieras compartir la configuración de tu sistema. Quizás el sistema no tiene suficiente memoria para cargar el archivo CSV correctamente.

1voto

Kirk Broadhurst Puntos 13093

Es bastante común que los programas de GUI no puedan manejar archivos de texto grandes. Aunque 40MB no suena grande según los estándares actuales, puede hincharse mucho más en memoria dependiendo de cómo esté escrita la aplicación. Y las aplicaciones de GUI a menudo no son las más eficientes.

Puede que desees dividir el archivo de texto en varios más pequeños usando la terminal. Primero, verifica si puedes abrir el archivo usando less filename.csv en la Terminal, y si los caracteres se leen bien. Si no, es posible que el archivo esté dañado y ese podría ser el problema.

Para la división real, intenta usar algo como esto en la terminal:

#!/bin/bash
N=10000 # Número de líneas por archivo
i=1
j=0
filename="hugefile.csv"
extensión=.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 y pega eso en un documento de texto plano (por ejemplo, TextEdit en modo de texto plano o nano en la Terminal) y llámalo split.sh o algo similar. Personaliza los parámetros N y filename según sea necesario. Por ejemplo, ingresa el número deseado de líneas por archivo en N=... y el nombre de tu archivo fuente como filename="...". Esto generará la cantidad necesaria de archivos en tu directorio actual para cubrir todas las líneas de los archivos fuente 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 así.

Ahora deberías poder abrir cada uno de estos archivos en tu aplicación deseada. A menudo es deseable trabajar con porciones más pequeñas de un archivo grande que con el archivo completo de una vez. Incluso podrías abrir los archivos CSV resultantes en Numbers uno tras otro y copiar las líneas de cada archivo en un único documento grande de Numbers. De esa manera, es probable que el importador no se quede atascado en un archivo tan grande.

En caso de que recibas algún error relacionado con sed o awk, eso es porque el sed y el awk de Mac son diferentes a los regulares sed o awk. En ese caso, es posible que necesites instalar sed y awk regulares desde algo como macports o homebrew.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X