forgodsakehold
forgodsakehold

Reputation: 904

Cypher Import from CSV to Neo4J - How To Improve Performance

I am importing the following to Neo4J:

categories.csv

CategoryName1
CategoryName2
CategoryName3
...

categories_relations.csv

category_parent   category_child
CategoryName3     CategoryName10
CategoryName32    CategoryName41
...

Basically, categories_relations.csv shows parent-child relationships between the categories from categories.csv.

I imported the first csv file with the following query which went well and pretty quickly:

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

Then I imported the second csv file with:

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)

I have about 2 million nodes.

I tried executing the 2nd query and it is taking quite long. Can I make the query execute more quickly?

Upvotes: 0

Views: 144

Answers (1)

Rajendra Kadam
Rajendra Kadam

Reputation: 4052

Confirm you are matching on right property. You are setting only one property for Category node i.e. name while creating categories. But you are matching on property id in your second query to create the relationships between categories.

For executing the 2nd query faster you can add an index on the property (here id) which you are matching Category nodes on.

CREATE INDEX ON :Category(id)

If it still takes time, You can refer my answer to Load CSV here

Upvotes: 1

Related Questions