有没有办法使用 foreach 或 unwind 将 csv 导入 Neo4j?

Is there a way to import a csv into Neo4j using foreach or unwind?

我正在使用以下 .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)

我收到“无法访问地图”错误。你能帮帮我吗?

我会将负载分解为多个步骤。

加载用户。

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)