使用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; neo4j stop 导出 其中test文件夹在neo4j下面 导入 导入成功: 再启动neo4j neo4j start

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

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

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

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

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

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

    2024年02月16日
    浏览(44)
  • 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日
    浏览(62)
  • 【大数据】Neo4j 图数据库使用详解

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

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

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

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

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

    2024年02月14日
    浏览(50)
  • 图数据库—Neo4j使用指南

    目录 Q / A Neo4j 安装 Basic concept Cypher Basic MATCH 查询 WITH INDEX 索引 最短路径 Shortest path Movie Graph Create 创建 Find 查找 Query 查询 Solve 最短路径 Bacon Path Recommend 推荐 Clean up 删除电影数据 LOAD CSV 加载 Persons Movies 数据 Northwind Graph Northwind 数据表结构 加载 Product Catalog CSV 文件 创建 Pr

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

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

    2024年02月04日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包