apoc怎么将节点和关系分开导入到图数据库,有导过的吗?给个例子参考参考
发布于 6 年前 作者 goodwater 3130 次浏览 来自 问答

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 你好!我看到你对 Neo4j 研究很深,方便的话请加我微信 gzhizh,希望交个朋友。

@nonono 刚发送了好友申请,嘿嘿

已通过。

@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

回到顶部