Làm thế nào để xóa / tạo cơ sở dữ liệu trong Neo4j?


104

Có thể tạo / xóa các cơ sở dữ liệu khác nhau trong cơ sở dữ liệu đồ thị Neo4j như trong MySQL không? Hoặc, ít nhất, làm thế nào để xóa tất cả các nút và mối quan hệ của một đồ thị hiện có để có được một thiết lập rõ ràng cho các thử nghiệm, ví dụ: sử dụng các lệnh shell tương tự như rmrelhoặc rm?

Câu trả lời:


98

Bạn chỉ có thể xóa toàn bộ thư mục đồ thị với rm -rf, vì Neo4j không lưu trữ bất kỳ thứ gì bên ngoài:

rm -rf data/*

Ngoài ra, tất nhiên bạn có thể lặp lại qua tất cả các nút và xóa các mối quan hệ của chúng và chính các nút, nhưng điều đó có thể quá tốn kém chỉ để thử nghiệm ...


7
Và nếu bạn lặp lại trên tất cả các nút, thì bạn nên để nút tham chiếu ở lại.
nawroth

6
Thư mục đồ thị nằm ở đâu?
Pramod

3
@Pramod của nó trong thư mục dữ liệu của thư mục neo4j. Bạn không thể bỏ lỡ nó
devshorts

7
Trên MacOSX với homebrew: /usr/local/Cellar/neo4j/community-1.9.2-unix/libexec/data
Ashley

5
Có lẽ bạn nên dừng máy chủ neo4j trước khi thực hiện lệnh này.
John Bachir

98

lệnh đơn giản hơn để xóa tất cả các nút và mối quan hệ:

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

11
+1 cho tuyên bố. Nhưng hãy lưu ý, chỉ vì bạn xóa tất cả các nút, không có nghĩa là các nhãn bạn đã sử dụng bị quên hoàn toàn. Trình duyệt sẽ vẫn hiển thị tất cả các nhãn. Ditto cho các thuộc tính nút và nhãn mối quan hệ.
Dilum Ranatunga

@DilumRanatunga 1. bạn có biết làm thế nào để làm cho tân quên nhãn? 2. làm thế nào các thuộc tính của nút có thể vẫn tồn tại nếu các nút bị xóa, hoặc các nhãn quan hệ vẫn còn của các mối quan hệ bị xóa?
John Bachir

1
Ý tôi không phải là các giá trị thực tế; Ý tôi là tên tài sản.
Dilum Ranatunga

5
có thể không chỉ có các nút và các cạnh, mà còn có các chỉ mục trong DB, và việc loại bỏ chúng sẽ khó hơn. Ngoài ra, tôi vừa quản lý để làm hỏng một phiên bản DB bằng cách thử nghiệm lặp đi lặp lại lớn bao gồm cả việc xóa và có vẻ như việc xóa các tệp DB một cách vật lý và để Neo4J tạo lại chúng khi khởi động lại mang lại sự cải thiện rõ ràng về hiệu suất.
lưu lượng

Tôi đã hết bộ nhớ trên neo4j trong bộ chứa docker.
bolec_kolec 21/07/17

52

Từ Neo4j 2.3,

Chúng tôi có thể xóa tất cả các nút có mối quan hệ ,

MATCH (n)
DETACH DELETE n

Hiện tại không có bất kỳ tùy chọn nào để tạo nhiều cơ sở dữ liệu trong Noe4j. Bạn cần tạo nhiều cửa hàng dữ liệu Neo4j. Xem tài liệu tham khảo .


3
Câu trả lời tốt nhất nếu bạn không muốn sử dụng hệ thống tệp.
ThomasH

Vấn đề với cách tiếp cận này là nó sẽ không xóa các Ràng buộc cũng như chỉ mục
Davide

47

Tạo cơ sở dữ liệu mới trong Neo4j

Trước khi bắt đầu cộng đồng neo4j, hãy nhấp vào tùy chọn duyệt

nhập mô tả hình ảnh ở đây

và chọn một thư mục khác

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

và nhấp vào nút bắt đầu.

nhập mô tả hình ảnh ở đây

Cơ sở dữ liệu mới được tạo trên chỉ thị đó


12

cách nhanh chóng và bẩn thỉu mà hoạt động tốt:

bin/neo4j stop
rm -rf data/
mkdir data
bin/neo4j start

11

Đối với bất kỳ ai khác cần một biểu đồ rõ ràng để chạy bộ thử nghiệm - https://github.com/jexp/neo4j-clean-remote-db-addon là một tiện ích mở rộng tuyệt vời cho phép xóa db thông qua cuộc gọi REST. Rõ ràng, tuy nhiên, không sử dụng nó trong sản xuất!


Nó dường như xóa nút 0. Làm cách nào để tạo lại nó?
Sẽ

1
Trên thực tế, nó bỏ qua nút tham chiếu ( github.com/jexp/neo4j-clean-remote-db-addon/blob/master/src/… ). Nhưng nếu nút tham chiếu của bạn biến mất (và bạn cần nó), bạn sẽ cần phải bắt đầu với một dir dữ liệu sạch, vì vẫn chưa có setRefenceNode()lệnh gọi ( stackoverflow.com/questions/7186832/… ).
Matt Luongo

7

Chạy mã thử nghiệm của bạn trên một phiên bản neo4j khác.

  1. Sao chép thư mục neo4j của bạn vào một vị trí mới. Sử dụng cái này để thử nghiệm. cd vào thư mục mới.
  2. Thay đổi cổng để bạn có thể chạy thử nghiệm và sử dụng nó bình thường đồng thời. Để thay đổi cổng mở conf/neo4j-server.propertiesvà thiết lậporg.neo4j.server.webserver.port không sử dụng.
  3. Khởi động máy chủ thử nghiệm khi thiết lập. Làm ./neo4j stoprm -rf data/graph.dbrơi lệ.

Để biết thêm chi tiết, hãy xem neo4j: Làm thế nào để chuyển đổi cơ sở dữ liệu? và các tài liệu .


6

Trong Neo4j 2.0.0 cái? không còn được hỗ trợ. Sử dụng TÙY CHỌN TRẬN ĐẤU thay thế:

START n=node(*)
OPTIONAL MATCH (n)-[r]-()
delete n,r;

6

Câu trả lời dễ nhất là: KHÔNG

Cách tốt nhất để "bắt đầu lại" là

  • di chuyển đến một thư mục dữ liệu trống khác

hoặc là

  • đóng Neo4j hoàn toàn
  • làm trống thư mục dữ liệu cũ
  • khởi động lại Neo4j và đặt thư mục trống làm thư mục dữ liệu

Có một cách để xóa tất cả các nút và mối quan hệ (như được mô tả ở đây )

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

1

Trong 2.0.0 -M6 Bạn có thể thực thi tập lệnh Cypher sau để xóa tất cả các nút và quan hệ:

start n=node(*)
match (n)-[r?]-()
delete n,r

2
Rất tiếc, điều này tạo ra lỗi trong bản phát hành 2.0.0 mới nhất: SyntaxException: Dấu chấm hỏi không còn được sử dụng cho các mẫu tùy chọn - thay vào đó hãy sử dụng TRÒ CHƠI TÙY CHỌN (dòng 1, cột 26) ==> "start n = node (*) match (n ) - [r?] - () xóa n, r "
richj

Tôi không hiểu các phiếu phản đối, vì câu trả lời nói rõ ràng Trong 2.0.0 -M6 , là phiên bản mới nhất khi tôi trả lời câu hỏi, trong khi các phiên bản khác cung cấp câu trả lời chính xác cho bản dựng mới nhất hiện tại .
Martin Seeler

1

Kể từ phiên bản 3, tôi tin rằng bây giờ có thể tạo các cá thể cơ sở dữ liệu riêng biệt và do đó vị trí của chúng hơi khác một chút.

Tham khảo: https://neo4j.com/developer/guide-import-csv/

--Into retail.db rõ ràng là cơ sở dữ liệu đích, không được chứa cơ sở dữ liệu hiện có.

Trên hộp Ubuntu của tôi, vị trí nằm trong:

/var/lib/neo4j/data/databasesnơi tôi hiện chỉ thấy graph.dbmà tôi tin rằng phải là mặc định.


0

Bạn có thể xóa các tệp dữ liệu của mình và nếu bạn muốn thực hiện theo cách này, tôi khuyên bạn chỉ nên xóa graph.db của mình chẳng hạn. Nếu không, bạn sẽ làm rối thông tin xác thực của mình.

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.