Neo4j/Cypher 导入 CSV 文件

Neo4j/Cypher Import a CSV file

我有一个 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 但是只有一个空节点当我这样做。

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

从你的代码来看,你似乎没有为你的 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), 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)

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


感谢您的回答。 我回发查询是因为我忘记删除了一个“]”:

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), name: line.Name, platform: line.Platform, year:toInteger(line.Year)}) 
//WITH v  <- remove this!
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) 

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