新手小白想问问各位大佬,shell脚本中用LOAD和MERGE导出数据速度特别慢怎么处理呀代码如下
发布于 5 年前 作者 newming 1779 次浏览 来自 问答

因为数据需要每天更新(有增加有修改也有不变的),所以每天重新导入一次csv文件,用import需要每天都清空一次数据库,觉得不太合适,但是用如下代码的话,发现MERGE速度特别慢,,请问各位大佬有什么好的办法吗# #!/bin/bash /dataport/neo4j/bin/cypher-shell -u neo4j -p ***** 'LOAD CSV WITH HEADERS FROM “file:///orgbase.csv” AS line MERGE(p:orgbase0411{org_id:line.org_id})ON CREATE SET org_name=line.org_name,pat_org_id=line.pat_org_id}); ' /dataport/neo4j/bin/cypher-shell -u neo4j -p ***** 'MATCH (m:orgbase0411),(n:orgbase0411) where m.org_id=n.pat_org_id MERGE (n)-[:REPORTS_TO0411]->(m); ’

3 回复

pat_org_id org_id 这两个字段有建索引么?

@zhoujieren64 /dataport/neo4j/bin/cypher-shell -u neo4j -p ***** 'LOAD CSV WITH HEADERS FROM “file:///orgbase.csv” AS line MERGE(p:orgbase0411{org_id:line.org_id})ON CREATE SET org_name=line.org_name,pat_org_id=line.pat_org_id});我只运行这一条语句就很慢很慢了,你说的是match的时候建索引是吧

@newming merge之前建索引,因为merge的时候需要根据org_id定位节点存储位置,然后再更新,这个定位过程极大依赖于索引

回到顶部