【问题标题】:Creating Neo4j relationships from csv import file从 csv 导入文件创建 Neo4j 关系
【发布时间】:2015-12-17 07:31:27
【问题描述】:

我是 Neo4j 的新手,并且一直在研究一些示例,并且在从 csv 文件(从关系数据库)导入数据方面取得了一定的成功。我已经设法轻松地为 Persons 创建节点:

USING PERIODIC COMMIT                                                                                                 
LOAD CSV WITH HEADERS FROM "file:/home/xxx/Development/Database/exports/persons.csv" AS row               
MERGE (:Person {id: toInt(row.id)}); 

我有第二个 csv 文件,其中包含 2 个人之间的每个关系一行,我正在尝试使用以下 Cypher 查询来创建关系,但没有成功(没有返回数据,也没有任何更改):

USING PERIODIC COMMIT                                                                                                 
LOAD CSV WITH HEADERS FROM "file:/home/xxxx/Development/Database/exports/person_relationship.csv" AS row                   
MATCH (f:Person {id: toInt(row.from_person_id)}), (t:Person {id: toInt(row.to_person_id)})                            
CREATE (f)-[:RELATED_TO]->(t);

就像我说的,Person 的创建很好,但没有多少 wangling 或示例可以引导我找到正确的语法来创建关系 RELATED_TO。

任何帮助表示赞赏。

【问题讨论】:

  • 我也是 neo4j 的新手,最近使用了几乎完全相同的代码,您必须做几乎相同的事情。我只能说你的代码在我的新手眼中看起来是正确的。毫无疑问,您已经检查过了,但您确定 from_person_idto_person_id 与 person.csv 中的 ids 匹配吗?
  • 是的,检查了几次列名...谢谢
  • 请注意,我还尝试了在 web ui 中创建关系的语句(用行中的实际值替换行占位符,按预期创建关系...一定与从 csv 文件中提取数据有关?
  • 您的第二个陈述看起来是正确的。你能分享几行文件的标题吗?
  • 还要确保创建一个约束来加速它:CREATE CONSTRAINT ON (p:Person) ASSERT p.id IS UNIQUE;

标签: csv neo4j graph-databases


【解决方案1】:

您的第二个陈述看起来是正确的。你能分享几行文件的标题吗?

您还可以通过以下方式检查 cypher 的用途:

LOAD CSV WITH HEADERS FROM "file:/home/xxxx/Development/Database/exports/person_relationship.csv" AS row                   
RETURN row,  toInt(row.from_person_id), toInt(row.to_person_id)
LIMIT 5;

还要确保创建一个约束来加速它:

CREATE CONSTRAINT ON (p:Person) ASSERT p.id IS UNIQUE;

【讨论】:

  • 好信息,调试的好方法...原来我使用的是非标准分隔符;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 2018-01-11
  • 2016-07-03
相关资源
最近更新 更多