apoc怎么将节点和关系分开导入到图数据库,有导过的吗?给个例子参考参考
apoc怎么将节点和关系分开导入到图数据库,有导过的吗?给个例子参考参考
8 回复
python封装的两个方法,可以参考下
def extract_node(self,source,query,label,etltime): # 抽取节点数据(source:数据来源类型,query:查询语句,label:节点标签,etltime:etl时间)
check='''{pid:row.pid}'''
cypher=f'''
call apoc.load.jdbc("{source}","{query}") YIELD row
merge(n:outside:{label} {check}) set n=row, n.etltime="{etltime}"
'''
c=carrier()
tx=c.run_cypher(cypher)
return cypher
def extract_relationship(self,source,query,label,label_end,relationtype): # 抽取关系数据(source:数据来源类型,query:查询语句,label:节点标签,label_end:尾部节点标签,relationtype:关系类型)
check='''{pid:row.pid}'''
check_e='''{pid:row.pid_e}'''
cypher=f'''
call apoc.load.jdbc("{source}","{query}") YIELD row
merge (n:outside:{label} {check}) with *
merge (n_e:outside:{label_end} {check_e}) with *
merge (n)-[r:{relationtype}]->(n_e) set r+=row
'''
c=carrier()
tx=c.run_cypher(cypher)
return cypher
@nonono 请教个问题 1、关系建立一条导入一条和所有关系建立完了再批量导入速度差别大吗? 2、我想调用apoc中的图算法,python该怎么半,下载apco源代码然后import 还是怎么办,谢谢?
1.复杂的语句,可以建立好节点之后再建立关系,不会产生eager 参考 https://markhneedham.com/blog/2014/10/23/neo4j-cypher-avoiding-the-eager/ 2.apoc中的算法包已经过时,以后不会更新了。都放到了algo算法包中,直接用cypher语句就可以调用 call