Neo4j/Cypher 导入 CSV 文件

问题描述

我有一个 CSV 文件,它有 11 列:等级、年份、名称... 它包含最好的视频游戏销售。我是 Neo4j 和 cypher 的新手。

我正在尝试使用此密码查询将其导入到 neo4j: LOAD CSV WITH HEADERS FROM 'file:///vgsales.csv' AS line CREATE (:Vgsales {rank: toInteger(line.Rank),name: line.Name,platform: line.Platform,year: toInteger(line.Year),genre: line.Genre,publisher: line.Publisher,NA_sales: toInteger(line.NA_Sales),EU_sales: toInteger(line.EU_Sales)],JP_sales: toInteger(line.JP_Sales),Other_sales: toInteger(line.Other_Sales),Global_sales: toInteger(line.Global_Sales)})

当我这样做时,我有节点,但它们之间没有关系,我需要用这个查询给出图形模型:调用 db.schema.visualization 但是当我这样做时只有一个空节点.

我不明白为什么没有任何关系。

解决方法

感谢您的回答。 我正在发回查询,因为有一个我忘记删除的“]”:

LOAD CSV WITH HEADERS FROM 'file:///vgsales.csv' AS line CREATE(v:Vgsales {rank: toInteger(line.Rank),name: line.Name,platform: line.Platform,year:toInteger(line.Year)}) WITH v MERGE (g:GENRE {genre: line.Genre}) MERGE (p:PUBLISHER {publisher: line.Publisher,NA_sales: toInteger(line.NA_Sales),EU_sales: toInteger(line.EU_Sales),JP_sales: toInteger(line.JP_Sales),Other_sales: toInteger(line.Other_Sales),Global_sales: toInteger(line.Global_Sales)}) MERGE (v)-[:IN_GENRE]->(g) MERGE (p)-[:PUBLISHED]->(v) 

但是查询仍然不起作用。我有这个错误:enter image description here

这是我的数据集的样子:enter image description here

明天我必须做的练习是找到一个数据集,找到一个有问题的,并用一个插件算法回答它,然后获取图形模型并在neo4j中加载csv文件,但我不知道该怎么做添加节点之间的关系。

,

您的脚本存在语法错误。您可以删除下面的这一行:

WITH v 

我在我的 neo4j 浏览器上试过了,效果很好:

LOAD CSV WITH HEADERS FROM 'file:///vgsales.csv' AS line 
CREATE(v:Vgsales {rank: toInteger(line.Rank),year:toInteger(line.Year)}) 
//WITH v  <- remove this!
MERGE (g:GENRE {genre: line.Genre}) 
MERGE (p:PUBLISHER {publisher: line.Publisher,Global_sales: toInteger(line.Global_Sales)}) 
MERGE (v)-[:IN_GENRE]->(g) 
MERGE (p)-[:PUBLISHED]->(v) 

Result: Added 3 labels,created 3 nodes,set 11 properties,created 2 relationships,completed after 235 ms.
,

从您的代码来看,您似乎没有为 csv 中的每一行创建任何关系,而只是一个节点。 我的建议是先尝试创建一个模型。您可以使用 arrows.app 来尝试描述您的模型。

关系是通过连接两个节点来创建的

CREATE (:PERSON {name:"CHARLIE")-[:FOLLOWS]->(:PERSON {name:"JOHN"})

从你的代码 id 可能尝试类似的东西

LOAD CSV WITH HEADERS FROM 'file:///vgsales.csv' AS line CREATE(v:Vgsales {rank: toInteger(line.Rank),year: toInteger(line.Year)}) WITH v MERGE (g:GENRE {genre: line.Genre}) MERGE (p:PUBLISHER {publisher: line.Publisher,EU_sales: toInteger(line.EU_Sales)],Global_sales: toInteger(line.Global_Sales)}) MERGE (v)-[:IN_GENRE]->(g) MERGE (p)-[:PUBLISHED]->(v)

我不确定这是否适合您的模型,尽管您可以尝试绘制您的模型,也许我会写出更好的代码。