Estoy usando ArcGIS 10.0 en Windows 7 de 64 bits con 4 GB de RAM.
Tengo algunas tablas muy grandes en formato CSV para importar a ArcGIS, todas tienen alrededor de 30 campos, más de 5 millones de registros por tabla (algunas tienen el doble de eso o más) y tamaños de archivo de hasta aproximadamente 5 GB. Estoy tratando de importar cada uno de ellos en una geodatabase de archivos como tablas separadas para poder, en última instancia, vincularlos a una clase de entidad y analizar los resultados en las tablas según su ubicación.
El problema es que ArcGIS parece simplemente dejar de importar registros en cierto punto. Estoy usando la herramienta "Tabla a tabla" en Conversión> A geodatabase, pero la herramienta "Copiar filas" tiene el mismo problema. Incluso si solo agrego el archivo CSV directamente a ArcGIS sin intentar convertirlo primero en una tabla FGDB, el problema es el mismo. Una de mis tablas tiene alrededor de 11 millones de registros, y ArcGIS solo importa alrededor de 10 millones de ellos. ArcGIS no me dice que se haya producido ningún error, la herramienta simplemente termina como si nada estuviera mal.
Lo he intentado varias veces y la cantidad de registros que entran en la tabla FGDB es siempre la misma, y no parece ser un límite de tamaño de archivo del que haya oído hablar (no un cuadrado de 2 o dieciséis). ArcGIS pudo importar otro CSV con aproximadamente 6 millones de registros y todos los registros salieron (aunque con los problemas que estoy teniendo con la tabla más grande, el más pequeño ahora es sospechoso). El sitio web de ESRI enumera los siguientes límites de tamaño en una geodatabase de archivos , y estoy lejos de llegar a ninguno de ellos:
- Tamaño de la geodatabase de archivos: sin límite
- Tamaño de clase de tabla o entidad: 1 TB (predeterminado), 4 GB o 256 TB con palabra clave
- Número de clases de entidad y tablas: 2,147,483,647
- Número de campos en una clase de entidad o tabla: 65,534
- Número de filas en una clase de entidad o tabla: 2,147,483,647
- Longitud del nombre de la geodatabase: número de caracteres que permite el sistema operativo en una carpeta
- Clase de entidad o longitud del nombre de la tabla: 160 caracteres
- Longitud del nombre del campo: 64 caracteres
- Ancho del campo de texto: 2,147,483,647
Todo lo que realmente necesito hacer en estas tablas es agregar un par de campos, eliminar un par de otros y generar valores para los nuevos campos (sumas de algunos de los campos existentes). Estoy usando ArcGIS para ello porque estoy familiarizado con la calculadora de campo y sé (o sabía , hasta ahora) que podría manejar tablas que consisten en millones de registros, mientras que la mayoría del otro software de escritorio que tengo a mano (MS Access / Excel ) se ahoga en tantos registros. Por lo tanto, estoy dispuesto a usar algún otro software para manipular la tabla original y luego exportar la tabla resultante (mucho más pequeña) a ArcGIS. Realmente, el hecho de que estoy teniendo este problema y que ArcGIS no me está dando ningún error o advertencia de que el problema está ocurriendo incluso me hace querer manejar estos datos fuera de ArcGIS tanto como sea posible.
Respuestas:
Llamé al soporte de ESRI sobre esto y su respuesta no fue alentadora, pero sí explicó el problema. Parafraseando a ESRI: El problema es que ArcGIS Desktop, al ser un software de 32 bits, está limitado a usar 4 GB de RAM como máximo. El archivo de texto debe procesarse en RAM antes de almacenarse como una tabla, por lo que en algún momento durante el procesamiento, ArcGIS estaba llegando al límite de RAM y simplemente se detenía allí. El archivo que estaba importando tenía un tamaño de alrededor de 6 GB. Aparentemente, el hecho de que falló sin dar un mensaje de error es exclusivo para mí, intenté que otras personas en mi oficina lo hicieran y la importación aún falló, pero dio un mensaje de error (uno inútil, pero al menos algo que permitió que el el usuario sabe que algo salió mal), y el representante de ESRI dijo que debería dar un error.
Mi solución fue dividir el archivo en dos CSV más pequeños usando un editor de texto (utilicé EditPad Pro), importar cada uno de ellos en un FGDB como una tabla separada, luego fusionar las dos tablas FGDB. Por alguna razón, esto falló la primera vez que lo intenté, pero funcionó más tarde. Puedo probar esto un poco más a fondo, voy a tratar con archivos de este tamaño de forma continua.
Estoy usando ArcGIS 10.0, pero ArcGIS 10.1 service pack 1 se acaba de lanzar y agrega la capacidad de usar un geoprocesador de fondo de 64 bits, lo que permitirá que el geoprocesador use más de 4 GB de RAM, eso puede solucionar este problema, pero no puedo prueba eso.
ACTUALIZACIÓN: ahora estoy usando ArcGIS 10.1 SP1 (con el complemento de geoprocesamiento de fondo de 64 bits) y importa con éxito estos .CSV gigantes, al menos los que he tratado hasta ahora. En una máquina con 14 GB de RAM (sí, 14), un .CSV de 6 GB con aproximadamente 10,5 millones de filas se importa con éxito a una tabla FGDB.
fuente
Para fines de carga de datos, leer un gran archivo CSV en la memoria es bastante tonto. Solo necesita leer 1 línea a la vez.
Sugeriría escribir un script de Python y usar el
csv
módulo para leerlo línea por línea e insertar filas en la tabla usando unInsertCursor
(o preferiblemente un,arcpy.da.InsertCursor
ya que es más rápido, pero solo está disponible en 10.1).Editar: solo lea su último párrafo. Parece que en realidad podría hacer todo esto dentro de Python con bastante facilidad, incluso exportando los resultados a CSV u otro formato.
Si pudiera describir exactamente lo que necesita hacer con cada fila y columna, eso sería útil.
fuente
¿Has intentado dividir los archivos csv de 5 GB en pequeños?
hay una herramienta para dividir el csv en función de las filas o el recuento de archivos.
Divida los archivos y luego intente importarlos. Pero hay una limitación en esta herramienta, creo que funcionará solo para la tabla en un archivo (creo que sí). por favor intentalo.
http://www.shivaranjan.com/2008/11/06/how-to-split-csv-file-into-multiple-parts-easily-and-quickly/
fuente
Me encontraba con este error (001156) en la misma línea de un gran archivo de texto delimitado por tuberías (2.712.391) filas aproximadamente un cuarto del camino.
Así que pensé que había algo mal con esa línea, pero era idéntica al resto de las filas.
Terminé eliminando las filas de la importación parcial y luego cargando los datos (Cargar> Cargar datos ...) y pude obtener todas las líneas 2M +.
Yo también estoy usando 10.1 SP1 con geoprocesamiento en segundo plano de 64 bits en 16 GB de RAM y es un proceso que utilizará la RAM (no todos los procesos están habilitados en 64 bits todavía).
Solución lenta y poco sólida, pero funciona de manera consistente.
Es posible que primero deba configurar la tabla vacía si no tiene éxito con ningún grado de importación.
fuente