有没有办法使用 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)

JavaScript----Array.foreach()

有没有办法在 xts 中将 period.apply 与 doParallel 和 foreach 一起使用?

有没有办法从不同的 foreach 中获取值?

如何跳过“foreach”循环的迭代?

$element 匹配或 $unwind 与 AND/Multiple 条件与 mongoDB 聚合