在Neo4j中加载Gephi输入CSV

时间:2016-06-03 15:00:36

标签: csv neo4j gephi

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

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

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

示例节点文件:

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

示例边缘文件:

 Source;Target;attr3
 1;2;Plays

1 个答案:

答案 0 :(得分:1)

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

首先,标识/属性上的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+,文件网址相对于import中的$NEO4j_HOME目录。

然后创建关系:

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