从 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
我正在使用 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