Neo4j cypher中每行的拆分操作
我有这个疑问-Neo4j cypher中每行的拆分操作,neo4j,cypher,Neo4j,Cypher,我有这个疑问- LOAD CSV from "file:/C:/1m/movies1.csv" AS rows FIELDTERMINATOR ';' unwind rows as row foreach (r in row| SPLIT(r[3],"|") as genre merge (c:Genres { name: genre }) merge (m:Movies { MovieID: row[1] }) MERGE (m)-[:HAS_GENRE]->(c)) 排成这样-
LOAD CSV from "file:/C:/1m/movies1.csv" AS rows
FIELDTERMINATOR ';' unwind rows as row
foreach (r in row|
SPLIT(r[3],"|") as genre
merge (c:Genres { name: genre })
merge (m:Movies { MovieID: row[1] })
MERGE (m)-[:HAS_GENRE]->(c))
排成这样-
1;Toy Story (1995);Animation|Children's|Comedy
2;Jumanji (1995);Adventure|Children's|Fantasy
3;Grumpier Old Men (1995);Comedy|Romance
4;Waiting to Exhale (1995);Comedy|Drama
因此,每行的第三个元素都有多个值,我想用“|”分隔符展开这些值。但是我得到了错误-
Invalid input 'P': expected 't/T' or 'e/E' (line 4, column 2 (offset: 108))
"SPLIT(r[3],"|") as genre"
如何拆分每行中的第三项并将它们添加到一个节点中?通常,每项工作都可以通过展开来完成
LOAD CSV from "file:/C:/1m/movies1.csv" AS rows FIELDTERMINATOR ';'
MERGE (movie:Movie {MovieID:rows[0]})
SET movie.name = rows[1]
WITH movie, SPLIT(rows[2], "|") AS genres
UNWIND genres AS g
MERGE (genre:Genre {name:g})
MERGE (movie)-[:HAS_GENRE]->(genre)
RETURN movie, genre;
收益率:
您还引用了
行[3]
,该行为空。csv文件只有3列,第三列是通过行[2]
访问的,谢谢您的清理。相同的查询格式需要15分钟以上才能建立100万个关系(不需要占用大量内存或CPU时间)。有什么加速的建议吗?确保你有关于:Movie(MovieID)和:Genre(name)的索引。同时将其更改为执行合并(movie:movie{MovieID:rows[0]})设置movie.name=rows[1]
。也可以考虑使用周期提交<代码> > <代码>。如果我已经在MeVIEID上定义了索引,为什么要设置这个集合,因为它在非索引属性上被磨合。