Cypher Import из CSV в Neo4J - Как улучшить производительность - PullRequest
0 голосов
/ 13 апреля 2019

Я импортирую следующее в Neo4J:

Categories.csv

CategoryName1
CategoryName2
CategoryName3
...

Categories_relations.csv

category_parent   category_child
CategoryName3     CategoryName10
CategoryName32    CategoryName41
...

По сути, category_relations.csv показывает parent-childотношения между категориями из category.csv.

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

USING PERIODIC COMMIT
 LOAD CSV FROM 'file:///categories.csv' as line
 CREATE (:Category {name:line[0]})

Затем я импортировал второй файл CSV с помощью:

USING PERIODIC COMMIT
LOAD CSV FROM 'file:///categories_relations.csv' as line
MATCH (a:Category),(b:Category)
WHERE a.name = line[0] AND b.name = line[1]
CREATE (a)-[r:ISPARENTOF]->(b)

У меня около 2 миллионов узлов.

Я попытался выполнить второй запрос, и он занимает довольно много времени.Могу ли я сделать запрос быстрее?

1 Ответ

1 голос
/ 13 апреля 2019

Подтвердите, что вы подходите для правильного свойства. Вы устанавливаете только одно свойство для узла Category, т.е. name при создании категорий,Но вы сопоставляете свойство id во втором запросе, чтобы создать связи между категориями.

Для более быстрого выполнения второго запроса вы можете добавить индекс длясвойство (здесь id) , с которым вы сопоставляете узлы категории.

CREATE INDEX ON :Category(id)

Если это все еще занимает время, Вы можете отослать мой ответ на Load CSV здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...