gpt4 book ai didi

java - Neo4J批量创建关系

转载 作者:行者123 更新时间:2023-12-01 08:54:32 33 4
gpt4 key购买 nike

CSV 是加快批量关系创建速度的唯一选项吗?

我在网上看了很多文章,他们都在讲CSV。 CSV 肯定会给我带来性能提升(你能猜出有多大吗?),但我不确定是否可以以 CSV 格式存储数据。 还有其他选择吗?使用 Neo4J 3 BOLT 协议(protocol)我能得到多少 yield ?

我的程序

我正在使用 Neo4j 2.1.7。我尝试同时创建大约 50000 个关系。我批量执行 10000 个查询,插入全部 50000 个查询大约需要120-140 秒

我的查询如下所示:

MATCH (n),(m) 
WHERE id(n)=5948 and id(m)=8114
CREATE (n)-[r:MY_REL {
ID:"4611686018427387904",
TYPE: "MY_REL_1"
PROPERTY_1:"some_data_1",
PROPERTY_2:"some_data_2",
.........................
PROPERTY_14:"some_data_14"
}]->(m)
RETURN id(n),id(m),r

最佳答案

正如 documentation 中所写:

Cypher supports querying with parameters. This means developers don’t have to resort to string building to create a query. In addition to that, it also makes caching of execution plans much easier for Cypher.

因此,您需要将数据打包为参数并通过密码查询传递:

UNWIND {rows} as row
MATCH (n),(m)
WHERE id(n)=row.nid and id(m)=row.mid
CREATE (n)-[r:MY_REL {
ID:row.relId,
TYPE:row.relType,
PROPERTY_1:row.someData_1,
PROPERTY_2:row.someData_2,
.........................
PROPERTY_14:row.someData_14
}]->(m)
RETURN id(n),id(m),r

关于java - Neo4J批量创建关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135766/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com