ArcGIS không thể nhập tất cả các bản ghi từ tệp CSV khổng lồ vào bảng cơ sở dữ liệu địa lý mặc dù nằm trong giới hạn kích thước bảng FGDB


11

Tôi đang sử dụng ArcGIS 10.0 trên Windows 7 64 bit với 4GB RAM.

Tôi có một số bảng rất lớn ở định dạng CSV để nhập vào ArcGIS, tất cả chúng đều có khoảng 30 trường, tăng lên 5 triệu bản ghi trên mỗi bảng (một số có gấp đôi hoặc nhiều hơn) và kích thước tệp lên tới khoảng 5 GB. Tôi đang cố gắng nhập từng tệp vào một cơ sở dữ liệu địa lý tệp dưới dạng các bảng riêng biệt để cuối cùng tôi có thể liên kết chúng với một lớp đối tượng và phân tích kết quả trong các bảng theo vị trí của chúng.

Vấn đề là ArcGIS dường như chỉ bỏ việc nhập hồ sơ tại một thời điểm nhất định. Tôi đang sử dụng công cụ "Bảng thành bảng" trong Chuyển đổi> Cơ sở dữ liệu địa lý, nhưng công cụ "Sao chép hàng" có cùng một vấn đề. Ngay cả khi tôi chỉ thêm tệp CSV trực tiếp vào ArcGIS mà không cố gắng chuyển đổi nó thành bảng FGDB, thì vấn đề vẫn như vậy. Một trong những bảng của tôi có khoảng 11 triệu bản ghi và ArcGIS chỉ nhập khoảng 10 triệu trong số chúng. ArcGIS không cho tôi biết rằng bất kỳ lỗi nào đã xảy ra, công cụ sẽ hoàn thành như thể không có gì sai.

Tôi đã thử nó một vài lần và số lượng các bản ghi đưa vào bảng FGDB luôn giống nhau và dường như không phải là giới hạn kích thước tệp mà tôi từng nghe (không phải là 2 hoặc 2 16). ArcGIS đã có thể nhập một CSV khác với khoảng 6 triệu hồ sơ và tất cả các hồ sơ đã được xử lý (mặc dù với những vấn đề tôi gặp phải với bảng lớn hơn, hiện tại nhỏ hơn cũng là một loại nghi ngờ). Trang web của ESRI liệt kê các giới hạn kích thước sau trong cơ sở dữ liệu địa lý tệp và tôi không thể đánh bất kỳ trong số chúng:

  • Kích thước cơ sở dữ liệu tệp địa lý: Không giới hạn
  • Kích thước lớp bảng hoặc tính năng: 1 TB (mặc định), 4 GB hoặc 256 TB với từ khóa
  • Số lớp và bảng tính năng: 2.147.483.647
  • Số lượng các trường trong một lớp tính năng hoặc bảng: 65,534
  • Số lượng hàng trong một lớp tính năng hoặc bảng: 2.147.483.647
  • Độ dài tên cơ sở dữ liệu địa lý: Số lượng ký tự mà hệ điều hành cho phép trong một thư mục
  • Độ dài tên lớp hoặc tên bảng: 160 ký tự
  • Độ dài tên trường: 64 ký tự
  • Chiều rộng trường văn bản: 2.147.483.647

Tất cả những gì tôi thực sự cần làm cho các bảng này là thêm một vài trường, xóa một vài trường khác và tạo các giá trị cho các trường mới (tổng của một vài trong số các trường hiện có). Tôi đang sử dụng ArcGIS cho nó vì tôi quen thuộc với máy tính trường và tôi biết (hoặc biết , cho đến bây giờ) rằng nó có thể xử lý các bảng bao gồm hàng triệu bản ghi, trong khi hầu hết các phần mềm máy tính để bàn khác tôi có tiện dụng (MS Access / Excel ) cuộn cảm trên nhiều hồ sơ. Vì vậy, tôi sẵn sàng sử dụng một số phần mềm khác để thao tác bảng gốc và sau đó xuất bảng kết quả (nhỏ hơn nhiều) sang ArcGIS. Thực sự, thực tế là tôi đang gặp vấn đề này và ArcGIS không đưa ra bất kỳ lỗi hay cảnh báo nào cho tôi rằng vấn đề thậm chí đang xảy ra khiến tôi muốn xử lý dữ liệu này bên ngoài ArcGIS càng nhiều càng tốt.


2
Nếu "số lượng bản ghi đưa vào bảng FGDB luôn giống nhau" thì tôi sẽ xem xét các bản ghi cuối cùng và tiếp theo để xem liệu chúng có thể có thứ gì đó trông không nhất quán so với hàng triệu bản được nhập thành công trước đó không.
PolyGeo

1
Ý tưởng tốt. Tôi không thể thấy bất kỳ sự khác biệt nào giữa bản ghi cuối cùng trong bảng FGDB bị cắt bớt và bản ghi sau nó (từ CSV). Tôi vừa thử xóa tất cả các bản ghi được nhập thành công khỏi CSV nguồn, sau đó nhập phần còn lại vào một bảng FGDB khác và nó đã hoạt động. Vì vậy, nó dường như không phải là một vấn đề với bất kỳ một bản ghi. Để làm cho mọi thứ tồi tệ hơn, tôi đã hợp nhất hai bảng FGDB (giữa hai bảng tôi có tất cả các bản ghi nguồn) và một lần nữa ArcGIS giả vờ rằng mọi thứ đều ổn, nhưng bảng được hợp nhất chỉ chứa 9,6 triệu trong số 10,9 triệu bản ghi của hai Bảng FGDB.
Dan C

Bạn đã mở một sự cố hỗ trợ với ESRI chưa? Có vẻ như tại thời điểm này, bạn đã phát hiện ra những gì có thể là một vấn đề khá nghiêm trọng. Nếu không có gì khác, nhân viên hỗ trợ sẽ quan tâm đến việc biết về nó đơn giản vì họ có thể đã biết một giải pháp hoặc sẵn sàng giúp đỡ thử nghiệm.
Nhận không gian

Tôi đồng ý với Get Spatial nhưng một thử nghiệm cuối cùng bạn có thể muốn chạy là tạo tệp CSV với một trường mà bạn đặt các giá trị giống hệt nhau (có thể là "thử nghiệm"). Nếu lý thuyết của bạn là 9,6 triệu là mức tối đa thì giới hạn này sẽ được áp dụng bất cứ lúc nào 10 triệu dòng "kiểm tra" được sử dụng, nhưng không phải khi 9,5 triệu dòng.
PolyGeo

Bây giờ tôi đã thử với một CSV khác, nhưng cũng lớn (hơn 10 triệu bản ghi) và nó không thành công theo cách tương tự, nhưng ở một dòng khác (khoảng 8,9 triệu bản ghi vào). Vì vậy, nó dường như không phải là một số lượng hồ sơ cụ thể, hoặc một kích thước bảng cụ thể. Tôi sẽ thử một CSV thử nghiệm với hai trường và xem điều gì sẽ xảy ra. Dù sao thì tôi cũng sẽ gọi ESRI vào thứ hai, quá trình này không có thông báo lỗi là không thể chấp nhận được và thậm chí còn khiến các hồ sơ khiến nó bị nghi ngờ.
Dan C

Câu trả lời:


9

Tôi đã gọi hỗ trợ ESRI về điều này và câu trả lời của họ không đáng khích lệ, nhưng nó đã giải thích vấn đề. Paraphrasing ESRI: Vấn đề là ArcGIS Desktop, là phần mềm 32 bit, bị giới hạn sử dụng tối đa 4GB RAM. Tệp văn bản phải được xử lý trong RAM trước khi được lưu trữ dưới dạng bảng, do đó, tại một số trạng thái trong quá trình xử lý, ArcGIS đã đạt giới hạn RAM và chỉ dừng ở đó. Tệp tôi đang nhập có kích thước khoảng 6GB. Rõ ràng thực tế là nó thất bại mà không đưa ra thông báo lỗi là duy nhất đối với tôi, tôi đã cố gắng để người khác làm việc đó và việc nhập vẫn thất bại, nhưng nó đã đưa ra một thông báo lỗi (một thông báo không có ích, nhưng ít nhất là một cái gì đó cho phép người dùng biết có lỗi xảy ra) và đại diện ESRI nói rằng nó sẽ báo lỗi.

Giải pháp của tôi là chia tệp thành hai CSV nhỏ hơn bằng trình soạn thảo văn bản (tôi đã sử dụng EditPad Pro), nhập từng tệp vào một FGDB dưới dạng một bảng riêng biệt, sau đó hợp nhất hai bảng FGDB. Vì một số lý do, lần đầu tiên tôi đã thất bại nhưng tôi đã làm việc sau đó. Tôi có thể đi xung quanh để kiểm tra điều này đầy đủ hơn một chút, tôi sẽ xử lý các tệp có kích thước này trên cơ sở liên tục.

Tôi đang sử dụng ArcGIS 10.0, nhưng gói dịch vụ ArcGIS 10.1 1 vừa được phát hành và thêm khả năng sử dụng bộ xử lý địa lý nền 64 bit, điều này sẽ cho phép bộ xử lý địa lý sử dụng nhiều hơn 4GB RAM, có thể khắc phục vấn đề này nhưng tôi không thể kiểm tra mà.

CẬP NHẬT: Tôi hiện đang sử dụng ArcGIS 10.1 SP1 (với addon xử lý địa lý nền 64 bit) và nó đã nhập thành công các .CSV khổng lồ này, ít nhất là những cái tôi đã xử lý cho đến nay. Trên máy có 14GB RAM (có, 14), .CSV 6GB với khoảng 10,5 triệu hàng được nhập thành công vào bảng FGDB.


1
Tôi sẽ tò mò nếu bạn có thể thử chạy nó trong bản dựng GDAL 64 bit. Tôi cá là nó sẽ hoạt động tốt.
Ragi Yaser Burhum

7

Đối với mục đích tải dữ liệu, việc đọc một tệp CSV khổng lồ vào bộ nhớ là khá ngớ ngẩn. Nó chỉ thực sự cần đọc 1 dòng tại một thời điểm.

Tôi sẽ đề nghị viết một tập lệnh Python và sử dụng csvmô-đun để đọc từng dòng và chèn các hàng vào bảng bằng cách sử dụng InsertCursor(hoặc tốt nhất là arcpy.da.InsertCursorvì nó nhanh hơn, nhưng chỉ khả dụng ở 10.1).

Chỉnh sửa: Chỉ cần đọc đoạn cuối của bạn. Có vẻ như bạn thực sự có thể thực hiện tất cả điều này trong Python khá dễ dàng, thậm chí xuất kết quả ra lại CSV hoặc một số định dạng khác.

Nếu bạn có thể mô tả chính xác những gì bạn cần làm với mỗi hàng và cột sẽ hữu ích.


4

Bạn đã thử chia các tệp csv 5GB thành nhỏ.

có một công cụ để phân chia csv dựa trên số hàng hoặc số tập tin.

Tách các tệp và sau đó thử nhập .. Nhưng có một hạn chế trong công cụ này, tôi nghĩ rằng nó sẽ chỉ hoạt động cho bảng trong một tệp (tôi nghĩ vậy). xin vui lòng. hãy thử đi.

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


Tôi dự định thử nếu tôi phải làm như vậy, sẽ không có nhiều CSV để xử lý nên có lẽ tôi sẽ tách chúng bằng tay với trình soạn thảo văn bản của mình. Tuy nhiên, tôi vẫn muốn tìm hiểu xem có ai gặp phải vấn đề này không, nếu ArcGIS sẽ tạo thói quen hiểu nhầm các bảng lớn và thậm chí không có phép lịch sự thông thường để gửi thông báo lỗi vô dụng, đó sẽ là một vấn đề.
Dan C

OK, tôi vừa thử cái này và nó hoạt động giữa chừng. Sau khi chia CSV thành hai phần nhỏ hơn (theo cách thủ công, với trình soạn thảo văn bản), họ đã nhập thành công vào hai bảng FGDB riêng biệt và tất cả các bản ghi đều ở đó. Nhưng khi tôi cố gắng hợp nhất hai bảng FGDB đó thành một, ArcGIS một lần nữa chạy qua quy trình như thể không có gì sai, và sau đó bảng được hợp nhất bị thiếu 1,3 triệu bản ghi.
Dân C

2

Tôi đã gặp phải lỗi này (001156) trên cùng một dòng của tệp văn bản được phân định bằng đường ống lớn (2.712.391) khoảng một phần tư quãng đường.
Vì vậy, tôi nghĩ rằng có một cái gì đó sai với dòng đó, nhưng nó giống hệt với phần còn lại của các hàng.
Cuối cùng tôi đã xóa các hàng khỏi nhập một phần và sau đó tải dữ liệu (Tải> Tải dữ liệu ...) và có thể nhận được tất cả các dòng 2M +.

Tôi cũng vậy, tôi đang sử dụng 10.1 SP1 w / 64 bit nền địa lý trên 16GB RAM và đó là một quá trình sẽ sử dụng RAM (không phải mọi quy trình đều được kích hoạt trong 64 bit).
Cách giải quyết chậm, klunky, nhưng nó hoạt động ổn định.
Bạn có thể phải thiết lập bảng trống trước nếu bạn không thành công với bất kỳ mức độ nhập nào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.