Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j加载csv的时间很长_Neo4j_Cypher_Load Csv - Fatal编程技术网

Neo4j加载csv的时间很长

Neo4j加载csv的时间很长,neo4j,cypher,load-csv,Neo4j,Cypher,Load Csv,大家好,Stackoverflow 我有一个简单的查询来加载csv,但浏览器需要很长时间才能加载,并且仍然显示加载符号 我的问题是: LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line WITH line MERGE (u:User{name:line.userId}) MERGE (m:Movie {movieId:line.movieId}) MERGE (u)-[r:RATED {ratin

大家好,Stackoverflow

我有一个简单的查询来加载csv,但浏览器需要很长时间才能加载,并且仍然显示加载符号

我的问题是:

LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line 
WITH line MERGE (u:User{name:line.userId}) 
MERGE (m:Movie {movieId:line.movieId}) 
MERGE (u)-[r:RATED {rating:line.rating}]->(m) 
RETURN u, m, r
我看不出代码中有错误

ratings_small.csv有以下列:

用户ID电影ID分级时间戳

1312.51260759144

1 1029 3 1260759179

1106131260759182

112921260759185

1172 4 1260759205

有100004条记录

亲切问候,,
Anna

我相信你没有关于:User(name)和:Movie(movieId)的索引

执行以下两个查询,然后重试LOAD CSV命令,它将在几秒钟内导入该命令:

CREATE CONSTRAINT ON (u:User) ASSERT u.name IS UNIQUE;
CREATE CONSTRAINT ON (m:Movie) ASSERT m.moveId IS UNIQUE;
其次,我假设用户只对一部电影进行一次评分,因此不必对属性进行关系合并,您可以如下更改查询:

LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line 
WITH line MERGE (u:User{name:line.userId}) 
MERGE (m:Movie {movieId:line.movieId}) 
MERGE (u)-[r:RATED]->(m)
SET r.rating = line.rating
RETURN u, m, r
USING PERIODIC COMMIT 2000
LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line 
WITH line MERGE (u:User{name:line.userId}) 
MERGE (m:Movie {movieId:line.movieId}) 
MERGE (u)-[r:RATED]->(m)
SET r.rating = line.rating
RETURN u, m, r
为了避免Neo4j试图在一个事务中处理完整的CSV,您可以(为了避免内存问题)如下:

LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line 
WITH line MERGE (u:User{name:line.userId}) 
MERGE (m:Movie {movieId:line.movieId}) 
MERGE (u)-[r:RATED]->(m)
SET r.rating = line.rating
RETURN u, m, r
USING PERIODIC COMMIT 2000
LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line 
WITH line MERGE (u:User{name:line.userId}) 
MERGE (m:Movie {movieId:line.movieId}) 
MERGE (u)-[r:RATED]->(m)
SET r.rating = line.rating
RETURN u, m, r
最后,我怀疑您是否有任何应用程序,甚至Neo4j浏览器可以同时显示所有内容,因此我不会从LOAD CSV查询返回任何内容:

USING PERIODIC COMMIT 2000
LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line 
WITH line MERGE (u:User{name:line.userId}) 
MERGE (m:Movie {movieId:line.movieId}) 
MERGE (u)-[r:RATED]->(m)
SET r.rating = line.rating

我相信你没有关于:User(name)和:Movie(movieId)的索引

执行以下两个查询,然后重试LOAD CSV命令,它将在几秒钟内导入该命令:

CREATE CONSTRAINT ON (u:User) ASSERT u.name IS UNIQUE;
CREATE CONSTRAINT ON (m:Movie) ASSERT m.moveId IS UNIQUE;
其次,我假设用户只对一部电影进行一次评分,因此不必对属性进行关系合并,您可以如下更改查询:

LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line 
WITH line MERGE (u:User{name:line.userId}) 
MERGE (m:Movie {movieId:line.movieId}) 
MERGE (u)-[r:RATED]->(m)
SET r.rating = line.rating
RETURN u, m, r
USING PERIODIC COMMIT 2000
LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line 
WITH line MERGE (u:User{name:line.userId}) 
MERGE (m:Movie {movieId:line.movieId}) 
MERGE (u)-[r:RATED]->(m)
SET r.rating = line.rating
RETURN u, m, r
为了避免Neo4j试图在一个事务中处理完整的CSV,您可以(为了避免内存问题)如下:

LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line 
WITH line MERGE (u:User{name:line.userId}) 
MERGE (m:Movie {movieId:line.movieId}) 
MERGE (u)-[r:RATED]->(m)
SET r.rating = line.rating
RETURN u, m, r
USING PERIODIC COMMIT 2000
LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line 
WITH line MERGE (u:User{name:line.userId}) 
MERGE (m:Movie {movieId:line.movieId}) 
MERGE (u)-[r:RATED]->(m)
SET r.rating = line.rating
RETURN u, m, r
最后,我怀疑您是否有任何应用程序,甚至Neo4j浏览器可以同时显示所有内容,因此我不会从LOAD CSV查询返回任何内容:

USING PERIODIC COMMIT 2000
LOAD CSV WITH HEADERS FROM "file:///ratings_small.csv" AS line 
WITH line MERGE (u:User{name:line.userId}) 
MERGE (m:Movie {movieId:line.movieId}) 
MERGE (u)-[r:RATED]->(m)
SET r.rating = line.rating

谢谢我添加了约束,现在我有了这个错误:Neo.DatabaseError.Statement.ExecutionFailed-java heap spaceI设置如下:dbms.memory.heap.initial\u size=5G dbms.memory.heap.max\u size=5G@Anna我编辑了答案.dbms.memory.pagecache.size=2G节点(:Movie,:User)一个接一个地加载正常。现在,我运行查询:------->使用定期提交2000加载CSV,标题来自“file:///ratings_small.csv“作为行与行匹配(u:User{userId:line.userId}),(m:Movie{movieId:line.movieId})创建(u)-[r:RATED]->(m)SET r.rating=line.rating----------->它输出:执行在开放事务中使用定期提交的查询是不可能的,现在我有了这个错误:Neo.DatabaseError.Statement.ExecutionFailed-java heap spaceI设置如下:dbms.memory.heap.initial\u size=5G dbms.memory.heap.max\u size=5G@Anna我编辑了答案.dbms.memory.pagecache.size=2G节点(:Movie,:User)一个接一个地加载正常。现在,我运行查询:------->使用定期提交2000加载CSV,标题来自“file:///ratings_small.csv“作为行与行匹配(u:User{userId:line.userId}),(m:Movie{movieId:line.movieId})创建(u)-[r:RATED]->(m)SET r.rating=line.rating----------->它输出:不可能在打开的事务中执行使用定期提交的查询