J'utilise ArcGIS 10.0 sur Windows 7 64 bits avec 4 Go de RAM.
J'ai de très grandes tables au format CSV à importer dans ArcGIS, elles ont toutes environ 30 champs, plus de 5 millions d'enregistrements par table (certains ont le double ou plus) et des tailles de fichier jusqu'à environ 5 Go. J'essaie d'importer chacun d'eux dans une géodatabase fichier en tant que tables distinctes afin de pouvoir, finalement, les lier à une classe d'entités et analyser les résultats dans les tables en fonction de leur emplacement.
Le problème est qu'ArcGIS semble simplement quitter l'importation des enregistrements à un certain point. J'utilise l'outil "Table en table" sous Conversion> En géodatabase, mais l'outil "Copier des lignes" a le même problème. Même si je viens d'ajouter le fichier CSV directement à ArcGIS sans essayer de le convertir d'abord en table FGDB, le problème est le même. L'une de mes tables contient environ 11 millions d'enregistrements et ArcGIS n'en importe que 10 millions environ. ArcGIS ne me dit pas qu'une erreur s'est produite, l'outil se termine comme si de rien n'était.
Je l'ai essayé plusieurs fois maintenant et le nombre d'enregistrements qui en font la table FGDB est toujours le même, et ne semble pas être une limite de taille de fichier dont j'ai jamais entendu parler (pas un carré de 2 ou 16). ArcGIS a pu importer un autre fichier CSV avec environ 6 millions d'enregistrements et tous les enregistrements ont été transmis (bien qu'avec les problèmes que j'ai avec la plus grande table, la plus petite soit également suspecte maintenant). Le site Web d'ESRI répertorie les limites de taille suivantes dans une géodatabase fichier , et je suis loin d'en toucher aucune:
- Taille de la géodatabase fichier: aucune limite
- Taille de la table ou de la classe d'entités: 1 To (par défaut), 4 Go ou 256 To avec mot clé
- Nombre de classes d'entités et de tables: 2 147 483 647
- Nombre de champs dans une classe d'entités ou une table: 65 534
- Nombre de lignes dans une classe d'entités ou une table: 2 147 483 647
- Longueur du nom de la géodatabase: nombre de caractères autorisés par le système d'exploitation dans un dossier
- Longueur de la classe d'entités ou du nom de table: 160 caractères
- Longueur du nom de champ: 64 caractères
- Largeur du champ de texte: 2 147 483 647
Tout ce que j'ai vraiment besoin de faire pour ces tables est d'ajouter quelques champs, d'en supprimer quelques autres et de générer des valeurs pour les nouveaux champs (sommes de quelques-uns des champs existants). J'utilise ArcGIS pour cela car je connais bien la calculatrice de terrain et je sais (ou je savais , jusqu'à présent) qu'elle pouvait gérer des tables composées de millions d'enregistrements, alors que la plupart des autres logiciels de bureau que j'ai à portée de main (MS Access / Excel ) étouffe autant de disques. Je suis donc prêt à utiliser un autre logiciel pour manipuler la table d'origine, puis à exporter la table résultante (beaucoup plus petite) vers ArcGIS. Vraiment, le fait que je rencontre ce problème et qu'ArcGIS ne me donne aucune erreur ou avertissement que le problème se produit même me donne envie de gérer ces données en dehors d'ArcGIS autant que possible.
Réponses:
J'ai appelé le support ESRI à ce sujet et leur réponse n'était pas encourageante, mais cela expliquait le problème. Paraphraser ESRI: Le problème est qu'ArcGIS Desktop, étant un logiciel 32 bits, est limité à utiliser au maximum 4 Go de RAM. Le fichier texte doit être traité dans la RAM avant d'être stocké sous forme de table, donc à un certain pointage lors du traitement, ArcGIS atteignait la limite de RAM et s'arrêtait juste là. Le fichier que j'importais mesurait environ 6 Go. Apparemment, le fait qu'il ait échoué sans donner de message d'erreur me soit propre, j'ai essayé de faire le faire par d'autres personnes dans mon bureau et l'importation a toujours échoué, mais il a donné un message d'erreur (inutile, mais au moins quelque chose qui laisse le l'utilisateur sait que quelque chose s'est mal passé), et le représentant de l'ESRI a déclaré qu'il devrait donner une erreur.
Ma solution était de diviser le fichier en deux CSV plus petits à l'aide d'un éditeur de texte (j'ai utilisé EditPad Pro), d'importer chacun d'eux dans un FGDB en tant que table séparée, puis de fusionner les deux tables FGDB. Pour une raison quelconque, cela a échoué la première fois que je l'ai essayé, mais j'ai travaillé plus tard. Je vais peut-être essayer de tester cela un peu plus complètement, je vais traiter des fichiers de cette taille sur une base continue.
J'utilise ArcGIS 10.0, mais ArcGIS 10.1 Service Pack 1 vient d'être publié et ajoute la possibilité d'utiliser un géoprocesseur en arrière-plan 64 bits, ce qui permettra au géoprocesseur d'utiliser plus de 4 Go de RAM, ce qui peut résoudre ce problème, mais je ne peux pas tester cela.
MISE À JOUR: J'utilise maintenant ArcGIS 10.1 SP1 (avec l'addon de géotraitement en arrière-plan 64 bits) et il importe avec succès ces .CSV géants, au moins ceux que j'ai traités jusqu'à présent. Sur une machine avec 14 Go de RAM (oui, 14), un CSV de 6 Go avec environ 10,5 millions de lignes est importé avec succès dans une table FGDB.
la source
À des fins de chargement de données, la lecture d'un énorme fichier CSV en mémoire est plutôt stupide. Il n'a besoin que de lire 1 ligne à la fois.
Je suggérerais d'écrire un script Python et d'utiliser le
csv
module pour le lire ligne par ligne et insérer des lignes dans la table en utilisant unInsertCursor
(ou de préférence unarcpy.da.InsertCursor
car il est plus rapide, mais uniquement disponible en 10.1).Edit: il suffit de lire votre dernier paragraphe. On dirait que vous pourriez probablement faire tout cela dans Python assez facilement, même en exportant les résultats vers CSV ou un autre format.
Si vous pouviez décrire exactement ce que vous devez faire avec chaque ligne et colonne, ce serait utile.
la source
Avez-vous essayé de diviser les fichiers csv de 5 Go en petits.
il existe un outil pour diviser le csv en fonction des lignes ou du nombre de fichiers.
Fractionnez les fichiers puis essayez d'importer .. Mais il y a une limitation dans cet outil, je pense qu'il ne fonctionnera que pour la table dans un fichier (je pense que oui). pls. essayer.
http://www.shivaranjan.com/2008/11/06/how-to-split-csv-file-into-multiple-parts-easily-and-quickly/
la source
Je rencontrais cette erreur (001156) sur la même ligne d'un grand fichier texte délimité par des tuyaux (2 712 391) lignes environ un quart du chemin.
J'ai donc pensé qu'il y avait quelque chose de mal avec cette ligne, mais elle était identique au reste des lignes.
J'ai fini par supprimer les lignes de l'importation partielle, puis par charger les données (Charger> Charger les données ...) et j'ai pu obtenir toutes les lignes 2M +.
Moi aussi, j'utilise 10.1 SP1 avec un géotraitement en arrière-plan 64 bits sur 16 Go de RAM et c'est un processus qui utilisera la RAM (tous les processus ne sont pas encore activés en 64 bits).
Solution de contournement lente et délicate, mais elle fonctionne de manière cohérente.
Vous devrez peut-être d'abord configurer la table vide si vous ne réussissez pas avec n'importe quel degré d'importation.
la source