使用apoc将数据从数据库导入neo4j

这篇具有很好参考价值的文章主要介绍了使用apoc将数据从数据库导入neo4j。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、创建实体

CREATE CONSTRAINT uniq_law_id  ON (p:Law) ASSERT p.id IS UNIQUE;

CALL apoc.periodic.iterate(
      'call apoc.load.jdbc("jdbc:clickhouse://192.xxx.x.xxx:8123/xxx?user=xxx&password=xxx", " select * from xxx.xxx", []) ',
      'CALL apoc.merge.node([row.ent_label], 
      {id: row.id},
      {name:row.name,level:row.level,office:row.office,publish:row.publish,expiry:row.expiry,law_type:row.law_type,status:row.status},
      {name:row.name,level:row.level,office:row.office,publish:row.publish,expiry:row.expiry,law_type:row.law_type,status:row.status}
    ) yield node RETURN count(*)',
      {batchSize:1000, parallel:false}
    )
;

这段代码的目的是从 ClickHouse 数据库中加载数据到 Neo4j 图数据库,并在加载过程中使用 APOC(Awesome Procedures on Cypher)库提供的 apoc.merge.node 过程来合并数据,确保在图数据库中的节点具有唯一性。

逐行解释这段代码:

  1. CREATE CONSTRAINT uniq_law_id ON (p:Law) ASSERT p.id IS UNIQUE;: 这一行创建了一个唯一约束,确保 "Law" 类型的节点中的 id 属性是唯一的。这是为了防止在后续的数据加载过程中出现重复的节点。

  2. CALL apoc.periodic.iterate('call apoc.load.jdbc("jdbc:clickhouse://192.xxx.x.xxx:8123/xxx?user=xxx&password=xxx", "select * from xxx.xxx", [])', ...: 这一行使用 APOC 提供的 apoc.periodic.iterate 过程,该过程允许对数据进行迭代处理。

  3. 'call apoc.load.jdbc("jdbc:clickhouse://192.xxx.x.xxx:8123/xxx?user=xxx&password=xxx", " select * from xxx.xxx", [])': 在迭代中,首先调用 apoc.load.jdbc 过程,从 ClickHouse 数据库中加载数据。这里使用的 JDBC 连接字符串指向 ClickHouse 数据库,提供用户名和密码用于连接

  4. 'CALL apoc.merge.node([row.ent_label], ...': 在每次迭代中,对于从 ClickHouse 加载的每一行数据,调用 apoc.merge.node` 过程

    • [row.ent_label]: 这是一个用于标记节点标签的列表。在这里,使用了 row.ent_label 作为节点的标签,可能是从 ClickHouse 数据库中的某个列获取的。

    • {id: row.id}, {name:row.name,level:row.level,...}: 这里定义了节点的属性。{id: row.id} 表示节点的 id 属性,其值来自加载的行数据中的 id 列。同样的逻辑适用于其他属性。

    • yield node RETURN count(*): 返回每次迭代中处理的节点数量。这可以帮助你了解迭代的进展。

    • {batchSize:1000, parallel:false}: 定义了迭代的参数。batchSize 表示每次迭代处理的行数,parallel 表示是否并行处理。在这里,设置为串行(false)。

总的来说,这段代码的目的是从 ClickHouse 数据库中加载数据到 Neo4j 图数据库,确保在图数据库中的 "Law" 节点具有唯一的 id 属性。在加载的过程中,使用了 APOC 库的 apoc.merge.node 过程,它可以合并节点,确保数据的唯一性。

2、创建关系

CALL apoc.periodic.iterate(
  'call apoc.load.jdbc("jdbc:clickhouse://192.xxx.x.xxx:8123/xxx?user=xxx&password=xxx", " select * from xxx.xxx", [])yield row',
  'merge (n1:row.from_label {id: row.from_id})
  merge (n2:row.to_label {id: row.to_id})
  with n1, n2, row
  CALL apoc.merge.relationship(
  n1, 
  row.rel_type,
  row.name,
  {},
  {}, 
  n2, 
  {}
  ) YIELD rel
  return id(rel), type(rel), rel',
  {batchSize:2000, parallel:false}
  )
;

这段代码的目的是从 ClickHouse 数据库中加载关系数据到 Neo4j 图数据库,并在加载的过程中使用 APOC 库提供的 apoc.merge.relationship 过程来合并关系,确保在图数据库中的关系具有唯一性。

逐行解释这段代码:

  1. CALL apoc.periodic.iterate(...: 这是一个调用 APOC 提供的 apoc.periodic.iterate 过程的 Cypher 查询。该过程允许对数据进行迭代处理

  2. 'call apoc.load.jdbc("jdbc:clickhouse://192.168.1.168:8123/law?user=default&password=QuBmUhBv", " select * from law.rel_law_bzjtkx_include", []) yield row': 在迭代中,首先调用 apoc.load.jdbc 过程,从 ClickHouse 数据库中加载关系数据。这里使用的是 ClickHouse 数据库的 JDBC 连接字符串,提供用户名和密码用于连接。

  3. 'merge (n1:row.from_label {id: row.from_id}) merge (n2:row.to_label {id: row.to_id}) with n1, n2, row': 对于从 ClickHouse 加载的每一行数据,使merge 关键字创建起始节点 n1 和目标节点 n2。这里使用了 row.from_labelrow.to_label 作为节点标签,并使用 row.from_idrow.to_id 作为节点的 id 属性值

  4. CALL apoc.merge.relationship(n1, row.rel_type, row.name, {}, {}, n2, {}) YIELD rel: 使用 APOC 提供的 apoc.merge.relationship 过程,该过程可以合并关系。具体参数包括:

    • n1: 起始节点。
    • row.rel_type: 关系类型,来自于加载的数据的 rel_type 列。
    • row.name: 关系的名称,来自于加载的数据的 name 列。
    • {}: 关系的属性,这里为空对象。
    • {}: 关系的属性更新规则,这里为空对象。
    • n2: 目标节点。
  5. YIELD rel: 返回被合并的关系对象。

  6. return id(rel), type(rel), rel': 返回合并关系的 ID、关系类型和关系对象。

  7. {batchSize:2000, parallel:false}: 定义了迭代的参数。batchSize 表示每次迭代处理的行数parallel 表示是否并行处理。在这里,设置为串行(false)。

总体来说,这段代码的目的是从 ClickHouse 数据库中加载关系数据到 Neo4j 图数据库,确保在图数据库中的关系具有唯一性。在加载的过程中,使用了 APOC 库的 apoc.merge.relationship 过程,它可以合并关系,确保数据的唯一性。文章来源地址https://www.toymoban.com/news/detail-832601.html

到了这里,关于使用apoc将数据从数据库导入neo4j的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Neo4j数据库导入导出dump方法

    Neo4j数据库导入导出dump方法

    首先要关闭neo4j; neo4j stop 导出 其中test文件夹在neo4j下面 导入 导入成功: 再启动neo4j neo4j start

    2024年02月12日
    浏览(14)
  • Neo4j桌面版安装、调试和数据库导出导入

    Neo4j桌面版安装、调试和数据库导出导入

    下载路径:  Neo4j Desktop (exe) 需要填写一些信息,随便填写就行 开始下载时,界面会跳转到 激活码界面 ,激活软件用   安装完成之后,点击启动,然后输入激活码 可在Add按钮新增数据库,其中Movie DBMS为系统自带数据库,下面为自己新增 新增数据库示例: 此种情况,大概率

    2024年02月05日
    浏览(35)
  • neo4j创建数据库及导入csv文件内容详解

    neo4j创建数据库及导入csv文件内容详解

    neo4j展示知识图谱主要需要两类数据:节点数据和关系数据。本节主要讲解数据的输入格式。(示例数据较简单,可对照自己的数据进行调整) 1.节点文件 创建excel表格,以演员、电影数据为例: 第一列为属性名,可表示为属性名_Id,上图的属性名为actor或movie, 注意取值不

    2024年02月05日
    浏览(9)
  • 利用python将json格式的文件导入neo4j图数据库

    笔者收到了朋友的求助,希望我写一段python代码将含对用关系的json文件导入neo4j图数据库。json的格式如下: 他说数据量有几十万条,而且对应关系不唯一:但可以保证每条都含有名称和治疗,但是可能有若干条其他的对用关系,例如上文的例子:其既包含之前的三个模块,

    2024年02月16日
    浏览(16)
  • Neo4j数据库使用相关

    Neo4j数据库使用相关

    做知识图谱相关项目,初步使用了neo4j数据库,简单记录一下使用过程和踩坑备忘~ 操作系统Win10+Neo4j社区版(community,版本4.4.30) 目录 一、安装 1.1 安装Java和Neo4j 1.2 环境变量设置 二、 Neo4j使用 2.1 安装服务 2.2 数据库使用 2.3 数据库备份  Java下载链接:Java Downloads | Oracle

    2024年04月16日
    浏览(11)
  • 【大数据】Neo4j 图数据库使用详解

    目录 一、图数据库介绍 1.1 什么是图数据库 1.2 为什么需要图数据库 1.3 图数据库应用领域

    2024年02月08日
    浏览(15)
  • 图数据库_Neo4j和SpringBoot整合使用_实战创建明星关系图谱---Neo4j图数据库工作笔记0010

    2023-09-10 10:37:48 补充 注意:下面是旧版本的语法,如果你发现@NodeEntity这样的注解没有的话可以这样: 这里就要用@Node 另外如果@StartNode和@EndNode都没有了,那么说明是用法变了. 关于最新的用法,在官网有明确的说明和案例,很有用: 下面给出官网的案例:

    2024年02月12日
    浏览(12)
  • Neo4j之APOC安装与使用样例

    Neo4j之APOC安装与使用样例

    APOC即Awesome Procedures on Cypher ,是 Neo4j 最大和最广泛使用的扩展库,是Neo4j过程和函数的标准实用程序库。它包括 450 多个标准程序,提供实用程序、转换、图形更新等功能。它们得到很好的支持,并且很容易作为单独的函数运行或包含在 Cypher 查询中。 由于 APOC 依赖于 Neo4j 的

    2024年02月14日
    浏览(8)
  • Neo4j数据库介绍及简单使用

    Neo4j数据库介绍及简单使用

    图数据库是一种专门设计用于存储和管理图形数据的数据库类型。在图数据库中,数据以图的形式表示,其中节点表示实体,边表示实体之间的关系。这种表示方式非常适合处理具有复杂关系的数据,如社交网络、推荐系统、网络拓扑、生物信息学等领域的数据。 图数据库通

    2024年02月04日
    浏览(12)
  • Neo4j图数据库的使用笔记

    Neo4j图数据库的使用笔记

    安装准备: neo4j-3.4.0版本的zip包 找个目录解压安装zip包 启动neo4j 下载neo4j-3.4.0版本的zip包 可以去neo4j官网下载,也可以去微云数聚官网下载。 微云数聚是neo4j在国内的代理商。 解压到F:neo4jneo4j-chs-community-3.4.0-windows 控制台方式启动neo4j 通过7474端口访问neo4j提供的web管理工具

    2024年02月16日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包