Thật không may, JSON giống như XML, rất phù hợp để xử lý luồng nên hầu như tất cả các triển khai đều yêu cầu toàn bộ tập dữ liệu được tải trong bộ nhớ. Mặc dù điều này là ổn đối với các tập nhỏ trong trường hợp của bạn, không có lựa chọn nào khác ngoài việc chia tập dữ liệu thành các phần nhỏ hơn, có thể quản lý được.
Cải thiện giải pháp của Pablo, đây là một giải pháp không yêu cầu bạn thực sự mở và tải tệp vào trình chỉnh sửa và phân chia bằng tay nhưng cố gắng tự động hóa càng nhiều càng tốt toàn bộ quá trình.
Sao chép tệp json vào máy chủ Unix (linux, osx) hoặc cài đặt các công cụ cygwin trên Windows. Sau đó mở shell và sử dụng vim để xóa hàng đầu tiên và cuối cùng khỏi tệp:
$ vim places.json
gõ dd để xóa dòng đầu tiên, sau đó SHIFT-G để di chuyển phần cuối của tệp, nhập lại dd để xóa dòng cuối cùng. Bây giờ gõ : wq để lưu các thay đổi. Điều này sẽ chỉ mất một vài phút.
Bây giờ chúng tôi sẽ khai thác sức mạnh tuyệt đối của unix để phân chia tệp thành nhiều phần dễ quản lý hơn. Trong loại vỏ:
$ split -l 10000 places.json places-chunks-
Đi lấy bia. Điều này sẽ chia tệp thành nhiều tệp nhỏ hơn, mỗi tệp chứa 10000 dòng. Bạn có thể tăng số lượng dòng, miễn là bạn giữ nó đủ nhỏ để ogr2gr có thể quản lý nó.
Bây giờ chúng ta sẽ gắn đầu và đuôi vào mỗi tệp:
$ echo '{"type":"FeatureCollection","features":[' > head
$ echo ']}' > tail
$ for f in places-chunks-* ; do cat head $f tail > $f.json && rm -f $f ; done
Đi lấy một cái snak. Hai lệnh đầu tiên chỉ đơn giản là tạo một tệp tiêu đề và chân trang với nội dung chính xác (chỉ để thuận tiện thực sự), trong khi lệnh cuối cùng sẽ thêm tiêu đề và chân trang vào mỗi đoạn mà chúng tôi chia ở trên và loại bỏ đoạn không có tiêu đề / không chân (để tiết kiệm không gian ).
Tại thời điểm này, bạn có thể hy vọng xử lý nhiều tệp địa điểm - *. Json với ogr2ogr:
$ for f in places-chunks-*.json ; do ogr2ogr -your-options-here $f ; done