如何在Neo4j中插入大量数据

2024-10-01 09:27:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在Neo4j中插入与traceroute相关的数据。我有大约55K个唯一节点,traceroute大约是80K,我使用Python和neo4jrestclient与数据库通信。带有traceroutes的文件具有以下语法:

83.212.7.42;83.212.7.41;62.217.100.63;83.97.88.69;62.40.112.215;62.40.98.150

我的代码是:

from neo4jrestclient.client import GraphDatabase
from neo4jrestclient import client


db = GraphDatabase("...")

node = db.labels.create("ipNode")



with open("traceroutes") as input:

for line in input:
    l= zip(line.split(';;'))
    i=len(l)
    try:
        prev=l[0][0]
        queryProbe = 'MERGE (a:ipNode7 {ip:"' + prev + '"})'
        db.query(queryProbe, returns=(client.Node, str, client.Node))
        for counter in range(1,i-1):
            next = l[counter][0]
            queryMergeNode = 'MERGE (b:ipNode7 {ip:"' + next + '"})'
            db.query(queryMergeNode, returns=(client.Node, str, client.Node))
            queryUpdateRelationship= 'MATCH (a:ipNode7 {ip:"' + prev + '"}),(b:ipNode7 {ip:"' + next + '"}) WHERE NOT (a)-[:precede]-(b) WITH a,b CREATE (a)-[:precede]->(b)'
            db.query(queryUpdateRelationship, returns=(client.Node, str, client.Node))
            prev=next
    except Exception:
         print "error"

问题是,在正确插入20K个节点之后,插入速度会很快减慢,我无法再放置任何其他节点。在


Tags: fromipclientnodedb节点queryreturns
1条回答
网友
1楼 · 发布于 2024-10-01 09:27:04

你对:ipNode7(ip)有唯一的限制吗?如果不这样做,那么数据库将被迫对具有给定ip的所有节点运行标签扫描。结果的行为看起来与您遇到的非常相似,插入速度随着标签的节点数的增加而急剧下降。在

相关问题 更多 >