当前位置: 首页 > 知识库问答 >
问题:

在neo4j中导入多个CSV的有效方法

华宇
2023-03-14

我正在为调用数据集在neo4j中创建一个图形数据库。数据集存储在csv文件中,包含以下列:Source、Target、Timestamp、Duration。这里的源和目标是人员ID(数字),Timestamp是datetime,持续时间以秒为单位(整数)。

CREATE CONSTRAINT ON ( person:Person ) ASSERT (person.pid) IS UNIQUE
:auto USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM 'file:///calls/calls_28.csv' AS line
WITH toInteger(line.Source) AS Source, 
datetime(replace(line.Time,' ','T')) AS time,
toInteger(line.Target) AS Target,
toInteger(line.Duration) AS Duration
MATCH (p1:Person {pid: Source})
MATCH (p2:Person {pid: Target})
MERGE (p1)-[rel:CALLS {time: time, duration: Duration}]->(p2)
RETURN count(rel)

我使用的是Neo4j 4.0.3

共有1个答案

秦博达
2023-03-14

您的merge子句必须检查现有的匹配关系(以避免创建重复项)。如果在person节点之间添加了大量关系,这可能会使merge子句变慢。

您应该考虑使用create而不是merge是否安全。

 类似资料: