有没有办法使用 foreach 或 unwind 将 csv 导入 Neo4j?
Posted
技术标签:
【中文标题】有没有办法使用 foreach 或 unwind 将 csv 导入 Neo4j?【英文标题】:Is there a way to import a csv into Neo4j using foreach or unwind? 【发布时间】:2022-01-08 04:22:42 【问题描述】:我正在使用以下 .csv 文件进行 Neo4j 导入。有202个球拍。 racketX 下方的数字是用户对该球拍的评分。
我想创建用户之间的关系以及他们对每个球拍的评分。这是我目前的做法:
LOAD CSV WITH HEADERS FROM 'http://spreding.online/racket-recommendation-system/data/formattedFiles/formattedUsers.csv' AS row
WITH row
WHERE row.username IS NOT NULL
MERGE (u:User
username: row.username,
height_m: toInteger(row.height),
weight_kg: toInteger(row.weight)
)
WITH row, u, range(3, 204) as indexes
MATCH (r:Racket)
UNWIND r as racket
UNWIND indexes as i
MERGE (u)-[:RATES rating:toInteger(row[i])]->(racket)
我收到“无法访问地图”错误。你能帮帮我吗?
【问题讨论】:
【参考方案1】:我会将负载分解为多个步骤。
加载用户。
LOAD CSV WITH HEADERS FROM 'http://spreding.online/racket-recommendation-system/data/formattedFiles/formattedUsers.csv' AS row
WITH row
WHERE row.username IS NOT NULL
MERGE (u:User
username: row.username,
height_m: toInteger(row.height),
weight_kg: toInteger(row.weight)
)
加载球拍。
UNWIND RANGE(1,202) as idx
CREATE (:Racket racketNumber:"racket"+idx)
加载关系。
LOAD CSV WITH HEADERS FROM 'http://spreding.online/racket-recommendation-system/data/formattedFiles/formattedUsers.csv' AS row
UNWIND RANGE (1,202) as idx
MATCH (u:User username:row.username)
MATCH (r:Racket racketNumber:"racket"+idx)
MERGE (u)-[:RATES rating:toInteger(row["racket"+idx])]->(r)
【讨论】:
以上是关于有没有办法使用 foreach 或 unwind 将 csv 导入 Neo4j?的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB 操作符 $unwind 展开数组(agregation)