Korzystam z ArcGIS 10.0 na Windows 7 64-bit z 4 GB pamięci RAM.
Mam kilka bardzo dużych tabel w formacie CSV do zaimportowania do ArcGIS, wszystkie mają około 30 pól, w górę od 5 milionów rekordów na tabelę (kilka ma dwa razy więcej lub więcej) i rozmiary plików do około 5 GB. Próbuję zaimportować każdy z nich do geobazy danych pliku jako osobne tabele, aby ostatecznie połączyć je z klasą obiektów i przeanalizować wyniki w tabelach zgodnie z ich lokalizacją.
Problem polega na tym, że ArcGIS wydaje się po prostu kończyć importowanie rekordów w pewnym momencie. Używam narzędzia „Tabela do tabeli” w obszarze Konwersja> Do geobazy, ale narzędzie „Kopiuj wiersze” ma ten sam problem. Nawet jeśli po prostu dodam plik CSV bezpośrednio do ArcGIS bez uprzedniej próby przekonwertowania go na tabelę FGDB, problem jest taki sam. Jedna z moich tabel ma około 11 milionów rekordów, a ArcGIS importuje tylko około 10 milionów z nich. ArcGIS nie mówi mi, że wystąpił jakikolwiek błąd, narzędzie kończy się tak, jakby nic się nie stało.
Próbowałem już kilka razy, a liczba rekordów, które trafiły do tabeli FGDB, jest zawsze taka sama i nie wydaje się, aby był to limit wielkości plików, o jakim kiedykolwiek słyszałem (nie kwadrat 2 lub 16). ArcGIS był w stanie zaimportować kolejny plik CSV z około 6 milionami rekordów i wszystkie rekordy przeszły (chociaż z problemami, które mam z większym stołem, mniejszy też jest teraz podejrzany). Witryna ESRI wymienia następujące limity wielkości w geobazie plików i daleko mi do trafienia w którekolwiek z nich:
- Rozmiar geobazy bazy danych: Bez limitu
- Rozmiar tabeli lub klasy elementów: 1 TB (domyślnie), 4 GB lub 256 TB ze słowem kluczowym
- Liczba klas obiektów i tabel: 2 147 483 647
- Liczba pól w klasie obiektów lub tabeli: 65 534
- Liczba wierszy w klasie obiektów lub tabeli: 2 147 483 647
- Długość nazwy geobazy: liczba znaków, którą system operacyjny dopuszcza w folderze
- Długość nazwy klasy obiektu lub tabeli: 160 znaków
- Długość nazwy pola: 64 znaki
- Szerokość pola tekstowego: 2 147 483 647
Wszystko, co naprawdę muszę zrobić z tymi tabelami, to dodać kilka pól, usunąć kilka innych i wygenerować wartości dla nowych pól (sumy kilku istniejących pól). Używam do tego ArcGIS, ponieważ znam kalkulator pola i wiem (lub wiedziałem do tej pory), że może on obsługiwać tabele składające się z milionów rekordów, podczas gdy większość innych programów komputerowych, które mam pod ręką (MS Access / Excel ) dusi się na tak wielu płytach. Jestem więc otwarty na użycie innego oprogramowania do manipulowania oryginalną tabelą, a następnie eksportowania (znacznie mniejszej) tabeli wynikowej do ArcGIS. Naprawdę, fakt, że mam ten problem i że ArcGIS nie daje mi żadnych błędów ani ostrzeżeń, że problem występuje, sprawia, że chcę przetwarzać te dane poza ArcGIS w jak największym stopniu.
Odpowiedzi:
Zadzwoniłem do wsparcia ESRI w tej sprawie, a ich odpowiedź nie była zachęcająca, ale wyjaśniła problem. Parafrazując ESRI: Problem polega na tym, że ArcGIS Desktop, jako oprogramowanie 32-bitowe, ogranicza się do użycia maksymalnie 4 GB pamięci RAM. Plik tekstowy musi zostać przetworzony w pamięci RAM, zanim zostanie zapisany jako tabela, więc w pewnym momencie ArcGIS osiągnął limit pamięci RAM i po prostu się tam zatrzymał. Plik, który importowałem, miał rozmiar około 6 GB. Najwyraźniej fakt, że nie powiodło się bez podania komunikatu o błędzie jest dla mnie unikalny, próbowałem zmusić inne osoby w moim biurze do zrobienia tego i import nadal nie powiódł się, ale dał komunikat o błędzie (niepomocny, ale przynajmniej coś, co pozwoliło użytkownik wie, że coś poszło nie tak), a przedstawiciel ESRI powiedział, że powinien dać błąd.
Moim rozwiązaniem było podzielenie pliku na dwa mniejsze pliki CSV za pomocą edytora tekstu (użyłem EditPad Pro), zaimportowanie każdego z nich do FGDB jako osobnej tabeli, a następnie scalenie dwóch tabel FGDB. Z jakiegoś powodu nie udało się to za pierwszym razem, gdy spróbowałem, ale później działało. Mogę przejść do testowania tego trochę pełniej, będę miał do czynienia z plikami tego rozmiaru na bieżąco.
Korzystam z ArcGIS 10.0, ale dodatek Service Pack 1 ArcGIS 10.1 został właśnie wydany i dodaje możliwość korzystania z 64-bitowego geoprocesora w tle, co pozwoli geoprocesorowi na użycie więcej niż 4 GB pamięci RAM, co może rozwiązać ten problem, ale nie mogę przetestuj to.
AKTUALIZACJA: Używam teraz ArcGIS 10.1 SP1 (z 64-bitowym dodatkiem do geoprzetwarzania w tle) i z powodzeniem importuje te gigantyczne .CSV, przynajmniej te, z którymi miałem do tej pory do czynienia. Na maszynie z 14 GB pamięci RAM (tak, 14), 6 GB .CSV z około 10,5 milionami wierszy pomyślnie importuje się do tabeli FGDB.
źródło
Do ładowania danych wczytywanie dużego pliku CSV do pamięci jest raczej głupie. Tylko tak naprawdę musi czytać 1 linię na raz.
Sugerowałbym napisanie skryptu Python i użycie
csv
modułu do odczytania go wiersz po wierszu i wstawienie wierszy do tabeli za pomocąInsertCursor
(lub najlepiej,arcpy.da.InsertCursor
ponieważ jest szybszy, ale dostępny tylko w wersji 10.1).Edycja: po prostu przeczytaj ostatni akapit. Wygląda na to, że prawdopodobnie mógłbyś to zrobić całkiem łatwo w Pythonie, nawet eksportując wyniki z powrotem do CSV lub innego formatu.
Jeśli możesz dokładnie opisać, co musisz zrobić z każdym wierszem i kolumną, które byłyby pomocne.
źródło
Czy próbowałeś podzielić pliki csv 5 GB na małe.
istnieje narzędzie do dzielenia csv na podstawie liczby wierszy lub plików.
Podziel pliki, a następnie spróbuj zaimportować. Ale to narzędzie jest ograniczone, myślę, że będzie działać tylko dla tabeli w pliku (tak myślę). proszę Spróbuj.
http://www.shivaranjan.com/2008/11/06/how-to-split-csv-file-into-multiple-parts-easily-and-quickly/
źródło
Wystąpił ten błąd (001156) w tym samym wierszu dużego pliku tekstowego rozdzielonego potokami (2712391) w około jednej czwartej.
Pomyślałem więc, że coś jest nie tak z tą linią, ale było identyczne z resztą wierszy.
Skończyłem usuwanie wierszy z częściowego importu, a następnie ładowanie danych (ładuj> ładuj dane ...) i udało mi się uzyskać wszystkie linie 2M +.
Ja również używam 10.1 SP1 z 64-bitowym geoprzetwarzaniem w tle na 16 GB pamięci RAM i jest to proces, który wykorzysta pamięć RAM (nie każdy proces jest jeszcze włączony w wersji 64-bitowej).
Powolne, nieporęczne obejście, ale działa konsekwentnie.
Być może będziesz musiał najpierw skonfigurować pustą tabelę, jeśli nie uda ci się przy jakimkolwiek stopniu importu.
źródło