Ich verwende ArcGIS 10.0 unter Windows 7 64-Bit mit 4 GB RAM.
Ich habe einige sehr große Tabellen im CSV-Format, die in ArcGIS importiert werden sollen. Alle haben ungefähr 30 Felder, mehr als 5 Millionen Datensätze pro Tabelle (einige haben das Doppelte oder mehr) und Dateigrößen von bis zu 5 GB. Ich versuche, jede von ihnen als separate Tabellen in eine Datei-Geodatabase zu importieren, damit ich sie letztendlich mit einer Feature-Class verknüpfen und die Ergebnisse in den Tabellen nach ihrem Speicherort analysieren kann.
Das Problem ist, dass ArcGIS den Import von Datensätzen an einem bestimmten Punkt zu beenden scheint. Ich verwende das Tool "Tabelle zu Tabelle" unter Konvertierung> In Geodatabase, aber das Tool "Zeilen kopieren" hat das gleiche Problem. Selbst wenn ich die CSV-Datei nur direkt zu ArcGIS hinzufüge, ohne vorher zu versuchen, sie in eine FGDB-Tabelle zu konvertieren, ist das Problem dasselbe. Eine meiner Tabellen enthält ungefähr 11 Millionen Datensätze, und ArcGIS importiert nur ungefähr 10 Millionen davon. ArcGIS teilt mir nicht mit, dass ein Fehler aufgetreten ist. Das Tool wird nur so beendet, als ob nichts falsch wäre.
Ich habe es jetzt ein paar Mal versucht und die Anzahl der Datensätze, die es in die FGDB-Tabelle schaffen, ist immer gleich und scheint keine Dateigrößenbeschränkung zu sein, von der ich jemals gehört habe (kein Quadrat von 2 oder 16). ArcGIS konnte eine weitere CSV mit ungefähr 6 Millionen Datensätzen importieren und alle Datensätze kamen durch (obwohl bei den Problemen, die ich mit der größeren Tabelle habe, die kleinere jetzt auch verdächtig ist). Auf der ESRI-Website sind die folgenden Größenbeschränkungen in einer Datei-Geodatabase aufgeführt , und ich bin weit davon entfernt, eine davon zu treffen:
- Größe der Geodatabase-Datei: Keine Begrenzung
- Tabellen- oder Feature-Class-Größe: 1 TB (Standard), 4 GB oder 256 TB mit Schlüsselwort
- Anzahl der Feature-Classes und Tabellen: 2.147.483.647
- Anzahl der Felder in einer Feature-Class oder Tabelle: 65.534
- Anzahl der Zeilen in einer Feature-Class oder Tabelle: 2.147.483.647
- Länge des Geodatabase-Namens: Anzahl der Zeichen, die das Betriebssystem in einem Ordner zulässt
- Länge des Feature-Class- oder Tabellennamens: 160 Zeichen
- Feldname Länge: 64 Zeichen
- Textfeldbreite: 2.147.483.647
Alles, was ich wirklich für diese Tabellen tun muss, ist, ein paar Felder hinzuzufügen, ein paar andere zu löschen und Werte für die neuen Felder zu generieren (Summen einiger der vorhandenen Felder). Ich verwende ArcGIS dafür, weil ich mit dem Feldrechner vertraut bin und weiß (oder bis jetzt wusste ), dass er Tabellen mit Millionen von Datensätzen verarbeiten kann, während die meisten anderen Desktop-Programme, die ich zur Hand habe (MS Access / Excel) ) würgt an so vielen Platten. Daher bin ich offen dafür, eine andere Software zu verwenden, um die ursprüngliche Tabelle zu bearbeiten und dann die (viel kleinere) resultierende Tabelle nach ArcGIS zu exportieren. Die Tatsache, dass ich dieses Problem habe und ArcGIS mir keine Fehler oder Warnungen gibt, dass das Problem überhaupt auftritt, veranlasst mich, diese Daten so weit wie möglich außerhalb von ArcGIS zu verarbeiten.
Antworten:
Ich habe den ESRI-Support angerufen und ihre Antwort war nicht ermutigend, aber sie hat das Problem erklärt. Paraphrasierung von ESRI: Das Problem ist, dass ArcGIS Desktop als 32-Bit-Software höchstens 4 GB RAM verwendet. Die Textdatei muss im RAM verarbeitet werden, bevor sie als Tabelle gespeichert werden kann. Daher hat ArcGIS während der Verarbeitung das RAM-Limit erreicht und nur dort angehalten. Die Datei, die ich importierte, war ungefähr 6 GB groß. Anscheinend ist die Tatsache, dass es fehlgeschlagen ist, ohne eine Fehlermeldung zu geben, einzigartig für mich. Ich habe versucht, andere Leute in meinem Büro dazu zu bringen, und der Import ist immer noch fehlgeschlagen, aber es gab eine Fehlermeldung (eine nicht hilfreiche, aber zumindest etwas, das das zulässt Benutzer wissen, dass etwas schief gelaufen ist), und der ESRI-Mitarbeiter sagte, dass es einen Fehler geben sollte.
Meine Lösung bestand darin, die Datei mit einem Texteditor (ich habe EditPad Pro verwendet) in zwei kleinere CSVs aufzuteilen, jede davon als separate Tabelle in eine FGDB zu importieren und dann die beiden FGDB-Tabellen zusammenzuführen. Aus irgendeinem Grund schlug dies fehl, als ich es zum ersten Mal versuchte, aber später funktionierte. Möglicherweise werde ich dies etwas ausführlicher testen. Ich werde mich fortlaufend mit Dateien dieser Größe befassen.
Ich verwende ArcGIS 10.0, aber ArcGIS 10.1 Service Pack 1 wurde gerade veröffentlicht und bietet die Möglichkeit, einen 64-Bit-Hintergrund-Geoprozessor zu verwenden, mit dem der Geoprozessor mehr als 4 GB RAM verwenden kann. Dies kann dieses Problem möglicherweise beheben, aber ich kann nicht teste das.
UPDATE: Ich verwende jetzt ArcGIS 10.1 SP1 (mit dem 64-Bit-Hintergrund-Geoverarbeitungs-Addon) und es importiert erfolgreich diese riesigen CSVs, zumindest die, mit denen ich mich bisher befasst habe. Auf einem Computer mit 14 GB RAM (ja, 14) wird ein 6 GB CSV mit etwa 10,5 Millionen Zeilen erfolgreich in eine FGDB-Tabelle importiert.
quelle
Zum Laden von Daten ist das Lesen einer riesigen CSV-Datei in den Speicher ziemlich dumm. Es muss immer nur 1 Zeile gleichzeitig gelesen werden.
Ich würde vorschlagen, ein Python-Skript zu schreiben und das
csv
Modul zu verwenden, um es Zeile für Zeile zu lesen und Zeilen mit einemInsertCursor
(oder vorzugsweise einem,arcpy.da.InsertCursor
da es schneller ist, aber nur bei 10.1 verfügbar ist) in die Tabelle einzufügen .Bearbeiten: Lesen Sie einfach Ihren letzten Absatz. Es hört sich so an, als könnten Sie dies wahrscheinlich alles in Python ganz einfach tun und sogar die Ergebnisse wieder in CSV oder ein anderes Format exportieren.
Wenn Sie genau beschreiben könnten, was Sie mit jeder Zeile und Spalte tun müssen, wäre dies hilfreich.
quelle
Haben Sie versucht, die 5-GB-CSV-Dateien in kleine Dateien aufzuteilen?
Es gibt ein Tool zum Aufteilen der CSV basierend auf Zeilen oder Dateizahl.
Teilen Sie die Dateien und versuchen Sie dann zu importieren. Aber es gibt eine Einschränkung in diesem Tool, ich denke, es wird nur für Tabellen in einer Datei funktionieren (ich denke schon). pls. Versuche es.
http://www.shivaranjan.com/2008/11/06/how-to-split-csv-file-into-multiple-parts-easily-and-quickly/
quelle
Ich bin auf diesen Fehler (001156) in derselben Zeile einer großen, durch Pipe getrennten Textdatei (2.712.391) gestoßen, die ungefähr ein Viertel des Weges durchläuft.
Also dachte ich, dass mit dieser Zeile etwas nicht stimmt, aber sie war identisch mit dem Rest der Zeilen.
Am Ende habe ich die Zeilen aus dem Teilimport gelöscht und dann die Daten geladen (Laden> Daten laden ...) und konnte alle 2M + Zeilen abrufen.
Ich verwende auch 10.1 SP1 mit 64-Bit-Hintergrund-Geoverarbeitung auf 16 GB RAM und es ist ein Prozess, der den RAM verwendet (noch ist nicht jeder Prozess in 64-Bit aktiviert).
Langsame, klunkige Problemumgehung, aber es funktioniert konsistent.
Möglicherweise müssen Sie zuerst die leere Tabelle einrichten, wenn Sie mit einem Importgrad keinen Erfolg haben.
quelle