【问题标题】:Creating a Neo4j Graph Database Using LOAD CSV使用 LOAD CSV 创建 Neo4j 图形数据库
【发布时间】:2015-10-28 08:44:21
【问题描述】:

我有一个 CSV 文件,其中包含我想使用 Neo4j 转换为图形数据库的数据。文件中的列格式如下:

Person1 |人2 |积分

现在 Person1 和 Person2 中的 id 是多余的,所以我改用 Merge 语句。但我没有得到正确的结果。 对于示例数据集,输出似乎是正确的,但是当我导入由 2M 行组成的数据集时,它不会以某种方式创建关系。

我正在输入我目前正在使用的密码。

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:C:/Users/yogi/Documents/Neo4j/default.graphdb/sample.csv" AS csvline
MERGE (p1:Person {id:toInt(csvline.id1)})
MERGE (p2:Person {id:toInt(csvline.id2)})
CREATE (p1)-[:points{count:toInt(csvline.c)}]->(p2)

【问题讨论】:

  • 您的查询看起来正确。节点是否正确创建?
  • 嘿@MartinPreusse,节点正在正确创建,但关系数显示为 0。也许我也错过了 35,000 个节点中的大约 200 个节点。
  • 为了排除故障,您可以在两个查询中拆分节点和关系的创建。请参阅 Stefan 回答中的链接。

标签: database graph neo4j nodes graph-databases


【解决方案1】:

您应该检查的一些事项:

  1. 您是否使用索引:CREATE INDEX ON :Person(id) 应在导入前运行
  2. 根据您使用的 Neo4j 版本,该语句可能受制于“eager-pipe”,这基本上会阻止定期提交。有关渴望管道的更多信息,请参阅http://www.markhneedham.com/blog/2014/10/23/neo4j-cypher-avoiding-the-eager/

【讨论】:

  • 急切的事情确实奏效了。我尝试先创建节点,然后匹配它们以创建关系。
猜你喜欢
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多