11 votos

ArcGIS no puede importar todos los registros de un enorme archivo CSV a la tabla de la geodatabase a pesar de estar dentro de los límites de tamaño de la tabla FGDB

Estoy utilizando 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 unos 30 campos, más de 5 millones de registros por tabla (algunas tienen el doble o más), y tamaños de archivo de hasta unos 5 GB. Estoy tratando de importar cada una de ellas a una geodatabase de archivos como tablas separadas para poder, en última instancia, vincularlas a una clase de característica y analizar los resultados en las tablas según su ubicación.

El problema es que ArcGIS parece dejar de importar registros en un momento determinado. Estoy utilizando la herramienta "Tabla a Tabla" en Conversión > A Geodatabase, pero la herramienta "Copiar Filas" tiene el mismo problema. Incluso si añado el archivo CSV directamente a ArcGIS sin intentar convertirlo primero en una tabla FGDB, el problema es el mismo. Una de mis tablas tiene unos 11 millones de registros, y ArcGIS sólo importa unos 10 millones de ellos. ArcGIS no me dice que se ha producido ningún error, la herramienta simplemente termina como si no pasara nada.

Lo he probado unas cuantas veces y el número de registros que entran en la tabla FGDB es siempre el mismo, y no parece que haya un límite de tamaño de archivo del que haya oído hablar (ni un cuadrado de 2 ni de 16). ArcGIS fue capaz de importar otro CSV con cerca de 6 millones de registros y todos los registros vinieron a través (aunque con los problemas que estoy teniendo con la tabla más grande, el más pequeño es un poco sospechoso ahora también). El sitio web de ESRI enumera lo siguiente límites de tamaño en una geodatabase de archivos y estoy muy lejos de acertar con ninguno de ellos:

  • Tamaño de la geodatabase: Sin límite
  • Tamaño de la tabla o clase de características: 1 TB (por defecto), 4 GB o 256 TB con la palabra clave
  • Número de clases y tablas de características: 2.147.483.647
  • Número de campos en una clase o tabla de características: 65,534
  • Número de filas en una clase o tabla de características: 2.147.483.647
  • Longitud del nombre de la geodatabase: Número de caracteres que el sistema operativo permite en una carpeta
  • Longitud de la clase de características o del nombre de la tabla: 160 caracteres
  • Longitud del nombre del campo: 64 caracteres
  • Anchura del campo de texto: 2.147.483.647

Todo lo que necesito hacer en estas tablas es añadir un par de campos, eliminar otros dos 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 campos y sé (o conocía Hasta ahora, el programa podía manejar tablas con millones de registros, mientras que la mayoría de los programas de escritorio que tengo a mano (MS Access/Excel) se atascan con esa cantidad de registros. Así que estoy abierto 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 esté teniendo este problema y que ArcGIS no me dé ningún error o advertencia de que el problema está ocurriendo me hace querer manejar estos datos fuera de ArcGIS tanto como sea posible.

2 votos

Si "el número de registros que llegan a la tabla FGDB es siempre el mismo", entonces yo echaría un vistazo a los últimos y siguientes registros para ver si pueden tener algo que parezca incoherente en comparación con los millones importados con éxito anteriormente.

1 votos

Buena idea. No veo ninguna diferencia entre el último registro de la tabla FGDB truncada y el registro que le sigue (del CSV). Acabo de intentar eliminar todos los registros importados con éxito del CSV de origen, y luego importar el resto en otra tabla FGDB, y ha funcionado. Así que no parece ser un problema con un solo registro. Para empeorar las cosas, he fusionado las dos tablas FGDB (entre las dos tengo todos los registros de origen), y una vez más ArcGIS pretende que todo ha ido bien, pero la tabla fusionada contiene sólo 9,6 millones de los 10,9 millones de registros de las dos tablas FGDB.

0 votos

¿Ha abierto una incidencia de soporte con ESRI? Parece que en este punto, has descubierto lo que podría ser un problema bastante serio. Si no es así, el personal de soporte estaría interesado en conocerlo simplemente porque puede que ya conozcan una solución o estén dispuestos a ayudar con las pruebas.

9voto

David L Morris Puntos 917

Llamé al soporte de ESRI sobre esto y su respuesta no fue alentadora, pero explicó el problema. Parafraseando a ESRI: El problema es que ArcGIS Desktop, al ser un software de 32 bits, está limitado a usar 4GB de RAM como máximo. El archivo de texto tiene que ser procesado en la memoria RAM antes de ser almacenado como una tabla, por lo que en algún momento durante el procesamiento ArcGIS estaba golpeando el límite de RAM y simplemente se detuvo allí. El archivo que estaba importando tenía un tamaño de unos 6 GB. Al parecer, el hecho de que falló sin dar un mensaje de error es único para mí, traté de tener otras personas en mi oficina lo hacen y la importación sigue fallando, pero dio un mensaje de error (una poco útil, pero al menos algo que permite al usuario saber que algo salió mal), y el representante de ESRI dijo que debe dar un error.

Mi solución fue dividir el archivo en dos CSV más pequeños usando un editor de texto (usé EditPad Pro), importar cada uno de ellos a un FGDB como una tabla separada, y luego fusionar las dos tablas FGDB. Por alguna razón esto falló la primera vez que lo intenté, pero funcionó después. Es posible que pruebe esto un poco más a fondo, voy a estar tratando con archivos de este tamaño de forma continua.

Estoy usando ArcGIS 10.0, pero el Service Pack 1 de ArcGIS 10.1 acaba de ser lanzado y agrega la capacidad de usar un geoprocesador de fondo de 64 bits, que permitirá que el geoprocesador use más de 4GB de RAM, eso puede arreglar este problema pero no puedo probarlo.

ACTUALIZACIÓN: Ahora estoy usando ArcGIS 10.1 SP1 (con el complemento de geoprocesamiento en segundo plano de 64 bits) y sí importa con éxito estos gigantescos .CSV, 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 unos 10,5 millones de filas se importa con éxito a una tabla FGDB.

1 votos

Me gustaría saber si puedes intentar ejecutarlo en una versión de 64 bits de GDAL. Apuesto a que funcionaría bien.

7voto

auramo Puntos 161

Para la carga de datos, la lectura de un enorme archivo CSV en la memoria es bastante tonta. Sólo es necesario leer una línea cada vez.

Yo sugeriría escribir un script y utilizar el csv para leerla línea por línea e insertar filas en la tabla utilizando un InsertCursor (o preferiblemente un arcpy.da.InsertCursor ya que es más rápido, pero sólo está disponible en 10.1).

Editar: Acabo de leer su último párrafo. Parece que en realidad podría hacer todo esto dentro de Python con bastante facilidad, incluso exportar los resultados a CSV o algún otro formato.

Si pudieras describir exactamente lo que necesitas hacer con cada fila y columna sería de gran ayuda.

4voto

Nate Parsons Puntos 120

¿Has probado a dividir los archivos csv de 5 GB en pequeños.

existe una herramienta para dividir el csv en función de las filas o del número de archivos.

Dividir los archivos y luego tratar de importar.. Pero hay una limitación en esta herramienta, creo que va a trabajar sólo para la tabla en un archivo (creo que sí). pls. dar una oportunidad.

http://www.shivaranjan.com/2008/11/06/how-to-split-csv-file-into-multiple-parts-easily-and-quickly/

0 votos

Pienso probar eso si es necesario, no hay tantos CSVs que tratar así que probablemente los dividiré manualmente con mi editor de texto. Todavía me gustaría saber si alguien más ha tenido este problema, sin embargo, si ArcGIS va a hacer un hábito de la incomprensión de las tablas grandes y ni siquiera tener la cortesía común para lanzar un mensaje de error inútil, que va a ser un problema.

0 votos

OK, acabo de probar esto y funciona en parte. Después de dividir el CSV en dos más pequeños (manualmente, con un editor de texto), se importaron con éxito a dos tablas FGDB separadas y todos los registros están allí. Pero cuando intento fusionar esas dos tablas FGDB en una sola, ArcGIS vuelve a ejecutar el proceso como si no pasara nada, y entonces a la tabla fusionada le faltan 1,3 millones de registros.

2voto

Matt Puntos 21

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 a un cuarto del camino.
Así que pensé que había algo mal en esa línea, pero era idéntica al resto de las filas.
Terminé borrando las filas de la importación parcial y luego cargando los datos (Load>Load Data...) y pude obtener todas las líneas de más de 2M.

Yo también estoy usando 10.1 SP1 con geoprocesamiento en segundo plano de 64 bits en 16GB de RAM y es un proceso que utilizará la RAM (no todos los procesos están habilitados en 64 bits todavía).
Es una solución lenta y complicada, pero funciona siempre.
Es posible que tenga que configurar primero la tabla vacía si no tiene éxito con ningún grado de importación.

0voto

ArcGIS Pro se ejecuta con 64BIT y acepta añadir CSV como archivo de entrada sin truncar los conjuntos de datos grandes.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia 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