2015-01-30 16 views
7

Có cách nào tốt để sử dụng API Java Neo4j để di chuyển một số dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác không? Trường hợp sử dụng của tôi là tải một vài nghìn nút vào một cơ sở dữ liệu tạm thời, thực hiện một loạt các phép biến đổi, sau đó xuất kết quả vào cơ sở dữ liệu chính và xóa các kết quả tạm thời.Dữ liệu xuất và nhập Neo4j

Tôi không muốn ẩn dữ liệu trong db đích, đây là quá trình phụ gia. Tôi thấy rất nhiều người trên internet (ví dụ: here) nói rằng "chỉ cần sao chép thư mục dữ liệu vào vị trí mới", nhưng tất nhiên điều đó sẽ che khuất đích.

CẬP NHẬT - Tôi đã thử nghiệm với neo4j-shell -path tmpDir -c "DUMP MATCH n RETURN n;" | neo4j-shell -path dbDir -file -, nhưng nó thực sự rất chậm. Việc tạo ra đầu ra có vẻ đủ nhanh nhưng lại cho nó trở lại băng giá, ngay cả trên một cơ sở dữ liệu trống mới.

+0

Bạn có đang kéo dữ liệu mới vào biểu đồ hiện tại hoặc bạn phủ lên dữ liệu mới hoặc cả hai? Toàn bộ biểu đồ mới có chuyển sang biểu đồ hiện tại không? –

+0

Toàn bộ đồ thị mới sẽ được nhập khẩu, nhưng nó sẽ không có bất kỳ tương tác nào với các nút hiện có - nó sẽ là một tập hợp các nút và cạnh rời rạc. Tôi chủ yếu tải vào DB chính một thành phần kết nối lớn tại một thời điểm. –

Trả lời

6

Có một số tùy chọn:

  1. Bạn có thể chỉ cần mở hai cơ sở dữ liệu neo4j trong bản java của bạn và sử dụng API Java để chuyển các nút và các mối quan hệ từ một đến khác.

  2. On mức thấp đối với hạt giống ban đầu bạn có thể làm tương tự với hàng loạt Inserter-apis, giống như tôi đã làm ở đây: https://github.com/jexp/store-utils/tree/21

  3. bạn có thể xuất kết quả cypher để CSV (ví dụ từ trình duyệt) và nhập nó một lần nữa sử dụng ví dụ LOAD CSV

  4. Bạn có thể sử dụng neo4j-shell-tools cho một số tác vụ xuất nhập khẩu ví dụ như xuất sang GraphML hoặc CSV và nhập lại vào

+0

Cảm ơn, tôi sẽ cung cấp tùy chọn 1) một ảnh. –

+0

Điều đó hoạt động khá tốt, đây là ý chính về cách tôi đã thực hiện: https://gist.github.com/kenahoo-windlogics/036639a7061877acc520 –

+20

Phân phối DBMS mà không tích hợp, đơn giản, một lệnh, không lập trình, 0 -learning "nhập khẩu/xuất khẩu tất cả mọi thứ" tính năng nên được thực hiện một hành vi phạm tội hình sự. –

Các vấn đề liên quan