Neo4j에서 데이터베이스를 삭제 / 생성하는 방법은 무엇입니까?


104

MySQL과 같이 그래프 데이터베이스 Neo4j 에서 다른 데이터베이스를 생성 / 삭제할 수 있습니까? 또는 최소한 기존 그래프의 모든 노드와 관계를 삭제하여 테스트를위한 깨끗한 설정을 얻는 방법 (예 : rmrel또는 rm?

답변:


98

rm -rfNeo4j는 그 외부에 아무것도 저장하지 않기 때문에을 사용하여 전체 그래프 디렉토리를 제거 할 수 있습니다 .

rm -rf data/*

또한 물론 모든 노드를 반복하고 관계와 노드 자체를 삭제할 수 있지만 테스트에는 너무 많은 비용이들 수 있습니다 ...


7
그리고 모든 노드를 반복하는 경우 참조 노드를 유지하는 것이 좋습니다.
nawroth 2010

6
그래프 디렉토리는 어디에 있습니까?
Pramod 2013 년

3
@Pramod는 neo4j 디렉토리의 데이터 디렉토리에 있습니다. 놓치지
마세요

7
/usr/local/Cellar/neo4j/community-1.9.2-unix/libexec/data : 사제와에서라도에
애슐리

5
이 명령을 수행하기 전에 neo4j 서버를 중지하는 것이 좋습니다.
John Bachir 2015 년

98

모든 노드와 관계를 삭제하는 더 간단한 명령 :

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

11
진술에 +1. 그러나 모든 노드를 삭제한다고해서 사용한 레이블이 완전히 잊혀진 것은 아닙니다. 브라우저는 여전히 모든 레이블을 표시합니다. 노드 속성 및 관계 레이블도 마찬가지입니다.
Dilum Ranatunga

@DilumRanatunga 1. 네오가 레이블을 잊게 만드는 방법을 알고 있습니까? 2. 노드가 삭제되거나 관계의 관계 레이블이 삭제 된 경우 노드 속성이 어떻게 유지됩니까?
John Bachir

1
나는 실제 값을 의미하지 않습니다. 재산 이름 자체를 의미합니다.
Dilum Ranatunga 2014-06-12

5
노드와 엣지뿐만 아니라 DB에 인덱스도있을 수 있으며이를 제거하기가 더 어렵습니다. 또한 삭제를 포함하여 대규모 반복 테스트를 통해 DB 인스턴스를 망가뜨릴 수 있었는데 실제로 DB 파일을 삭제하고 다시 시작할 때 Neo4J가 파일을 다시 생성하면 성능이 크게 향상됩니다.
흐름

도커 컨테이너의 neo4j에서 메모리가 부족합니다.
bolec_kolec jul.

52

Neo4j 2.3부터

관계가있는 모든 노드를 삭제할 수 있습니다 .

MATCH (n)
DETACH DELETE n

현재 Noe4j에는 여러 데이터베이스를 생성 할 수있는 옵션이 없습니다. Neo4j 데이터의 여러 저장소를 만들어야합니다. 참조를 참조 하십시오 .


3
파일 시스템에 의존하지 않으려는 경우 가장 좋은 대답입니다.
ThomasH

이 접근 방식의 문제점은 제약 조건이나 인덱스를 삭제하지 않는다는 것입니다
Davide

47

Neo4j에서 새 데이터베이스 만들기

neo4j 커뮤니티를 시작하기 전에 찾아보기 옵션을 클릭하십시오

여기에 이미지 설명 입력

다른 디렉토리를 선택하십시오

여기에 이미지 설명 입력

여기에 이미지 설명 입력

시작 버튼을 클릭합니다.

여기에 이미지 설명 입력

해당 디렉토리에 생성 된 새 데이터베이스


12

잘 작동하는 빠르고 더러운 방법 :

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

11

깨끗한 그래프를 필요로 다른 사람이 테스트 스위트를 실행하려면 - https://github.com/jexp/neo4j-clean-remote-db-addon은 지내는 호출을 통해 DB를 취소 할 수있는 좋은 확장이다. 하지만 프로덕션에서 사용하지 마세요!


노드 0을 삭제하는 것 같습니다. 어떻게 다시 생성합니까?

1
실제로 참조 노드 ( github.com/jexp/neo4j-clean-remote-db-addon/blob/master/src/… )를 건너 뜁니다 . 그러나 참조 노드가 사라지고 필요하다면 setRefenceNode()아직 호출 이 없기 때문에 깨끗한 데이터 디렉토리로 시작해야합니다 ( stackoverflow.com/questions/7186832/… ).
Matt Luongo

7

다른 neo4j 인스턴스에서 테스트 코드를 실행합니다.

  1. neo4j 디렉토리를 새 위치에 복사합니다. 테스트에 사용하십시오. 새 디렉토리로 cd하십시오.
  2. 테스트를 실행하고 동시에 정상적으로 사용할 수 있도록 포트를 변경하십시오. 포트 개방을 변경하고 사용하지 않는 포트로 conf/neo4j-server.properties설정 org.neo4j.server.webserver.port합니다.
  3. 설정시 테스트 서버를 시작하십시오. 수행 ./neo4j stoprm -rf data/graph.db분해합니다.

자세한 내용은 neo4j : 데이터베이스 전환 방법을 참조하십시오 . 문서 .


6

Neo4j 2.0.0에서는? 더 이상 지원되지 않습니다. 대신 OPTIONAL MATCH를 사용하십시오.

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

6

가장 쉬운 대답은 아니오 입니다.

"다시 시작"하는 가장 좋은 방법은

  • 다른 빈 데이터 폴더로 이동

또는

  • Neo4j를 완전히 닫습니다.
  • 이전 데이터 폴더 비우기
  • Neo4j를 다시 시작하고 빈 폴더를 데이터 폴더로 설정하십시오.

모든 노드와의 관계를 삭제하는 방법 (설명이 여기에 )

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

1

2.0.0 -M6에서 다음 Cypher 스크립트를 실행하여 모든 노드와 관계를 삭제할 수 있습니다.

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

2
불행히도 이것은 최신 2.0.0 릴리스에서 오류를 생성합니다. SyntaxException : 물음표는 더 이상 선택적 패턴에 사용되지 않습니다. 대신 OPTIONAL MATCH를 사용하십시오 (라인 1, 열 26) ==> "start n = node (*) match (n )-[r?]-() delete n, r "
richj 2014 년

대답은 내가 질문에 답변했을 때 최신 버전이었던 In 2.0.0 -M6 이라고 명확하게 말하고 다른 사람들은 현재 최신 빌드에 대한 정답을 제공 했기 때문에 반대 투표를 이해하지 못합니다 .
Martin Seeler 2014

1

버전 3부터는 별도의 데이터베이스 인스턴스를 만들 수 있으므로 위치가 약간 다릅니다.

참조 : https://neo4j.com/developer/guide-import-csv/

--into retail.db는 분명히 대상 데이터베이스이며 기존 데이터베이스를 포함해서는 안됩니다.

내 Ubuntu 상자에서 위치는 다음과 같습니다.

/var/lib/neo4j/data/databases현재 graph.db내가 기본이라고 생각하는 것만 볼 수 있습니다.


0

데이터 파일을 삭제할 수 있으며이 방법을 사용하려면 graph.db 만 삭제하는 것이 좋습니다. 그렇지 않으면 인증 정보가 엉망이 될 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.