Peter is right for one more explanation:
You have encountered the EAGER problem: http://www.markhneedham.com/blog/2014/10/23/neo4j-cypher-avoiding-the-eager/ you should see it on the EXPLAIN output (delete the periodic commit and use the explanation)
+--------------+----------------------------------+-----------------------+ | Operator | Identifiers | Other | +--------------+----------------------------------+-----------------------+ | +EmptyResult | | | | | +----------------------------------+-----------------------+ | +UpdateGraph | anon[179], line, object, subject | CreateRelationship | | | +----------------------------------+-----------------------+ | +UpdateGraph | line, object, subject | MergeNode; :RESSOURCE | | | +----------------------------------+-----------------------+ | +Eager | line, subject | | | | +----------------------------------+-----------------------+ | +UpdateGraph | line, subject | MergeNode; :RESSOURCE | | | +----------------------------------+-----------------------+ | +LoadCSV | line | | +--------------+----------------------------------+-----------------------+
Eager will pull your entire CSV file to provide isolation and effectively disable your periodic commit.
If you make two passes, you can also try:
CREATE CONSTRAINT ON (e:RESSOURCE) assert e.url is unique; USING PERIODIC COMMIT 10000 LOAD CSV FROM 'file:///Users/x/data.csv' AS line FIELDTERMINATOR '\t' FOREACH (url in line[0..1] | MERGE (subject:RESSOURCE {url: trim(url)}) ); USING PERIODIC COMMIT 10000 LOAD CSV FROM 'file:///Users/x/data.csv' AS line FIELDTERMINATOR '\t' MATCH (subject:RESSOURCE {url: trim(line[0])}) MATCH (object:RESSOURCE {url: trim(line[1])}) CREATE (subject)-[:EQUIVALENCE]->(object);
source share