从 MySQL 到 neo4j 的大数据集插入

Large dataset insertion into neo4j from MySQL

我正在使用 python 3 结合 py2neo (v 3.1.2) 将大量数据从 MySQL 插入到 Neo4j。 MySQL 中的 table 大约有 2000 万行。 我想插入而不按照 neo4j 网站上的建议将 MySQL 数据转换为 CSV

我的代码如下所示:

transaction=graph_db.begin()
sql="SELECT id FROM users"
cursor.execute(sql)
user_data=cursor.fetchall()
count=1
for row in user_data:
    user_node=Node("User",user_id=row[0])
    transaction.create(user_node)
    if count%10000==0:
        transaction.commit()
    count=count+1

目标是插入 10000 个批次。但事务在第一次迭代后中断(第一次插入一批 10k)。以下是错误:

raise TransactionFinished(self)
py2neo.database.TransactionFinished: <py2neo.database.BoltTransaction object at 0x104e36588>

谁能解释一下这个错误的含义以及如何解决这个问题?

我不知道python,但问题是你在循环中提交事务并没有打开它:

sql="SELECT id FROM users"
cursor.execute(sql)
user_data=cursor.fetchall()
count=1
for row in user_data:
    if count%10000==1:
        transaction=graph_db.begin()
    user_node=Node("User",user_id=row[0])
    transaction.create(user_node)
    if (count%10000==0) or (count==len(user_data)):
        transaction.commit()
    count=count+1