【发布时间】:2018-03-02 02:08:11
【问题描述】:
我们在数据库中有 5 种不同类型的节点。最大的有~290k,最小的只有~3k。每个节点类型都有一个 id 字段,它们都被索引。我正在使用py2neo 建立关系,但速度很慢(每秒插入 2 个关系)
我使用pandas 从关系 csv 中读取,迭代每一行以创建包含在事务中的关系。我尝试在一个事务中批量处理 10k 个创建语句,但它似乎并没有提高很多速度。
下面是代码:
df = pd.read_csv(r"C:\relationship.csv",dtype = datatype, skipinitialspace=True, usecols=fields)
df.fillna('',inplace=True)
def f(node_1 ,rel_type, node_2):
try:
tx = graph.begin()
tx.evaluate('MATCH (a {node_id:$label1}),(b {node_id:$label2}) MERGE (a)-[r:'+rel_type+']->(b)',
parameters = {'label1': node_1, 'label2': node_2})
tx.commit()
except Exception as e:
print(str(e))
for index, row in df.iterrows():
if(index%1000000 == 0):
print(index)
try:
f(row["node_1"],row["rel_type"],row["node_2"])
except:
print("error index: " + index)
有人可以帮助我在这里做错了什么。谢谢!
【问题讨论】: