在 Neo4j 中加载 Gephi 输入 CSV

Load Gephi input CSV in Neo4j

我创建了一个与 Gephi 兼容的 csv 文件(节点和边缘文件),并在 Gephi 中导入了图形。但是,该图具有 geph 不支持的平行边。为此,我搬到了 Neo4j。但是,我发现很难将用于 Gephi 的 csv 文件导入到 Neo4j 中。

我查看了 Neo4j 文档以导入 csv 文件,但是它认为这些文件是 rdms 样式。

请帮助在 Neo4j 中加载边缘和节点 csv 文件。

示例节点文件:

Id;attr1;attr2
2;23;A
1;34;B

示例边缘文件:

 Source;Target;attr3
 1;2;Plays

看看 Cypher 的 LOAD CSV functionality。使用您的示例文件,将数据加载到 Neo4j 中的 Cypher 语句如下所示:

首先,label/property 上的 create a uniqueness constraint 标识唯一 ID(我将在此处使用 Person 标签,但更改为适合您域的任何内容):

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

然后遍历 nodes.csv 文件,为 csv 文件中的每一行创建一个节点:

LOAD CSV WITH HEADERS FROM "file:///nodes.csv" AS row FIELDTERMINATOR ';'
MERGE (n:Person {personID: row.Id})
SET n.attr1 = row.attr1,
    n.attr2 = row.attr2;

请注意,对于 Neo4j 3.0+,默认情况下文件 url 是相对于 $NEO4j_HOME.

中的 import 目录的

然后创建关系:

LOAD CSV WITH HEADERS FROM "file:///rels.csv" AS row FIELDTERMINATOR ';'
MATCH (source:Person) WHERE source.Id = row.Source
MATCH (target:Person) WHERE target.Id = row.Target
MERGE (source)-[r:KNOWS]->(target)
SET r.attr3 = row.attr3;

有关更多信息,请参阅 this example in the docs info/options。