2013-03-26 2 views
1

Я загрузил некоторые данные в базу данных диаграммы neo4j, используя пакетный импортер. Теперь скажем, если мне нужно загрузить больше данных, тогда мне нужно отслеживать, что было вставлено извне, или есть стандартные функции neo4j, которые могут быть использованы для:Несколько загрузок в neo4j

1) получить идентификатор для последнего узла, вставленного таким образом что я знаю идентификатор для нового узла, который нужно вставить и индексировать соответственно.

2) получить список узлов, уже присутствующих в базе данных, чтобы я мог проверить уникальность узлов, которые будут вставлены. если узел уже существует в базе данных, я просто использую тот же идентификатор и не создам новый узел.

3) проверьте уникальность триплетов - предположим, что триплет «Январьский месяц is_a» уже присутствует в базе данных neo4j, и, скажем, новые данные, которые я хочу вставить, также имеют один и тот же триплет, я бы не хотел его вставлять так как это даст мне дублирующие результаты.

Например: если добавить следующие данные в Neo4j базе графа, используя пакетную импортеру: https://github.com/jexp/batch-import

$ cat nodes.csv 
name age works_on 
Michael 37 neo4j 
Selina 14 
Rana 6 
Selma 4 

$ cat nodes_index.csv 
0 name age works_on 
1 Michael 37 neo4j 
2 Selina 14 
3 Rana 6 
4 Selma 4 

$ cat rels.csv 
start end type since counter:int 
1 2 FATHER_OF 1998-07-10 1 
1 3 FATHER_OF 2007-09-15 2 
1 4 FATHER_OF 2008-05-03 3 
3 4 SISTER_OF 2008-05-03 5 
2 3 SISTER_OF 2007-09-15 7 

Теперь, если вам нужно добавить больше данных в той же базе данных, то вам необходимо знать следующие вещи :

1) если узлы уже существуют, то каковы их идентификаторы, чтобы вы могли использовать их при создании триплета, а затем создать список таких узлов (не в базе данных), а затем начать с идентификатора, был использован в последнем импорте и использовать его как начальный идентификатор для создания нового node_index.csv

2) если триплет в базе данных уже существует, то не создавайте этот триплет снова, так как это приведет к дублированию результата при выполнении запросов cypher к базе данных.

Похоже, тот же вопрос поднимался и здесь: https://github.com/jexp/batch-import/issues/27

Спасибо!

ответ

0

1- почему вы должны знать, последний идентификатор узла .. вам не нужно знать идентификатор, чтобы вставить новый узел будет добавлен автоматически в первый свободный идентификатор в графе

2- уникальность, почему вы не используете создать уникальный запрос «для узлов и отношений»

здесь вы можете проверить ссылки: http://docs.neo4j.org/chunked/1.8/cypher-query-lang.html

Смежные вопросы