当前位置: 首页 > wzjs >正文

找人网站 优帮云凤凰网台湾资讯

找人网站 优帮云,凤凰网台湾资讯,手工外包加工网可信吗,施工企业资质证书有效期本地安装好Neo4j:清除所有的节点和关系 代码流程解读 1. 清除 Neo4j 中的现有数据 java复制代码 session.run("MATCH (n) DETACH DELETE n"); 在创建新节点和关系之前,首先执行 MATCH (n) DETACH DELETE n,这会删除 Neo4j 中的…

 本地安装好Neo4j:清除所有的节点和关系

 代码流程解读

1. 清除 Neo4j 中的现有数据

java复制代码

session.run("MATCH (n) DETACH DELETE n");

  • 在创建新节点和关系之前,首先执行 MATCH (n) DETACH DELETE n,这会删除 Neo4j 中的所有节点和它们的关系,以确保不会有旧的数据干扰。

2. 从 MySQL 数据库中读取数据并创建节点

代码中有多个 PreparedStatement 来查询 MySQL 中的三张不同表,并从中读取数据来创建 Neo4j 节点。

2.1 创建第一个表的节点
 

java复制代码

PreparedStatement stmt1 = mysqlConn.prepareStatement("SELECT id, unit_name FROM zcdmx_rela_ship"); ResultSet rs1 = stmt1.executeQuery(); while (rs1.next()) { long id = rs1.getLong("id"); String name = rs1.getString("unit_name"); session.run("CREATE (:Node {id: $id, name: $unit_name})", Map.of("id", id, "unit_name", name)); }

  • 从 zcdmx_rela_ship 表中读取 id 和 unit_name 字段。
  • 每一行数据会对应一个新的节点,节点类型为 Node,并且包含 id 和 unit_name 两个属性。
2.2 创建第二个表的节点
 

java复制代码

PreparedStatement stmt2 = mysqlConn.prepareStatement("SELECT id, hyfl_name FROM zcdmx_rela_ship_hyfl"); ResultSet rs2 = stmt2.executeQuery(); while (rs2.next()) { long id = rs2.getLong("id"); String key = rs2.getString("hyfl_name"); session.run("CREATE (:Node {id: $id, name: $hyfl_name})", Map.of("id", id, "hyfl_name", key)); }

  • 从 zcdmx_rela_ship_hyfl 表中读取 id 和 hyfl_name 字段。
  • 每一行数据同样会创建一个新的节点,节点属性包括 id 和 hyfl_name
2.3 创建第三个表的节点及关系
 

java复制代码

PreparedStatement stmt3 = mysqlConn.prepareStatement("SELECT id, extend_first, extend_second, extend_fourth,extend_five,extend_six,extend_eight,extend_nine FROM knowledge_base_details"); ResultSet rs3 = stmt3.executeQuery(); while (rs3.next()) { // 读取各字段 String extend_first = rs3.getString("extend_first"); String extend_second = rs3.getString("extend_second"); String extend_fourth = rs3.getString("extend_fourth"); String extend_five = rs3.getString("extend_five"); String extend_six = rs3.getString("extend_six"); String extend_eight = rs3.getString("extend_eight"); String extend_nine = rs3.getString("extend_nine"); // 创建节点 session.run("MERGE (:Node {name: $extend_fourth, extend_first: $extend_first, extend_second: $extend_second, extend_five: $extend_five, extend_six: $extend_six, extend_eight: $extend_eight, extend_nine: $extend_nine})", Map.of( "extend_first", extend_first, "extend_second", extend_second, "extend_five", extend_five, "extend_six", extend_six, "extend_eight", extend_eight, "extend_nine", extend_nine, "extend_fourth", extend_fourth )); // 创建关系:extend_first 和 extend_fourth 之间的关系 if (StrUtil.isAllNotBlank(extend_fourth, extend_first)) { session.run("MATCH (a:Node {name: $nameV}), (b:Node {name: $world}) " + "CREATE (a)-[:RELATES_TO]->(b)", Map.of("nameV", extend_fourth, "world", extend_first)); } // 创建关系:extend_nine 和 extend_fourth 之间的关系 if (StrUtil.isAllNotBlank(extend_fourth, extend_nine)) { session.run("MATCH (a:Node {name: $keyV}), (b:Node {name: $world}) " + "CREATE (a)-[:RELATES_TO]->(b)", Map.of("keyV", extend_nine, "world", extend_fourth)); } }

  • 从 knowledge_base_details 表中读取多个字段。根据这些字段,创建一个 Node 类型的节点,并设置多个属性。
  • 使用 MERGE 来确保节点是唯一的,避免重复创建。
  • 在一些字段非空时,创建节点之间的关系,使用 RELATES_TO 关系类型连接相关的节点。

3. 关键步骤解析

  • 清除现有数据:通过 MATCH (n) DETACH DELETE n 删除现有的所有节点和关系,避免数据重复或不一致。

  • 读取 MySQL 数据:通过多次执行 PreparedStatementResultSet 读取 MySQL 中的多张表,并根据这些数据创建 Neo4j 节点。

  • 创建节点:每次读取一行数据,都会在 Neo4j 中创建一个 Node 节点,并根据表的字段设置相应的属性。

  • 创建关系:通过 MATCHCREATE 创建节点之间的关系。这里使用了 RELATES_TO 作为关系类型,表示节点间的关联。

4. 节点和关系效果

  • 节点效果:您将看到多个 Node 节点,它们分别对应不同的表(如 zcdmx_rela_shipzcdmx_rela_ship_hyflknowledge_base_details),并包含表中的各个字段。

  • 关系效果:不同的节点之间会形成多个 RELATES_TO 关系。例如,extend_firstextend_fourth 之间会有一条关系,extend_nineextend_fourth 之间也会有一条关系。

代码操作生成节点和关系:源代码

package com.gt.demo.mcpserver.utils;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Map;import cn.hutool.core.util.StrUtil;
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.Driver;
import org.neo4j.driver.GraphDatabase;
import org.neo4j.driver.Session;@SuppressWarnings("all")
public class MySqlToNeo4j {private static final String MYSQL_URL = "jdbc:mysql://localhost:16002/jcfx_zcdmx";private static final String MYSQL_USER = "root";private static final String MYSQL_PASSWORD = "root@123456";private static final String NEO4J_URI = "bolt://localhost:7687";private static final String NEO4J_USER = "neo4j";private static final String NEO4J_PASSWORD = "123456";public static void main(String[] args) {try (Connection mysqlConn = DriverManager.getConnection(MYSQL_URL, MYSQL_USER, MYSQL_PASSWORD);Driver neo4jDriver = GraphDatabase.driver(NEO4J_URI, AuthTokens.basic(NEO4J_USER, NEO4J_PASSWORD))) {System.out.println("开始------");// Create nodes and relationships in Neo4jcreateNodesAndRelationships(mysqlConn, neo4jDriver);System.out.println("结束------");} catch (Exception e) {e.printStackTrace();}}/*** Creates nodes and relationships in a Neo4j database based on data from a MySQL database.* This method reads data from three different tables in the MySQL database, creates corresponding nodes in the Neo4j database,* and establishes relationships between these nodes based on specific conditions.** @param mysqlConn   A connection object to the MySQL database, used to execute SQL statements and retrieve data.* @param neo4jDriver A driver object for the Neo4j database, used to manage the session with the Neo4j database.* @throws Exception Throws an exception if there is an error during database operations or data processing.*/private static void createNodesAndRelationships(Connection mysqlConn, Driver neo4jDriver) throws Exception {try (Session session = neo4jDriver.session()) {// Clear existing data in Neo4j (optional)session.run("MATCH (n) DETACH DELETE n");// Read data from the first table and create nodesPreparedStatement stmt1 = mysqlConn.prepareStatement("SELECT id, unit_name FROM zcdmx_rela_ship");ResultSet rs1 = stmt1.executeQuery();while (rs1.next()) {long id = rs1.getLong("id");String name = rs1.getString("unit_name");session.run("CREATE (:Node {id: $id, name: $unit_name})", Map.of("id", id, "unit_name", name));}// Read data from the second table and create nodesPreparedStatement stmt2 = mysqlConn.prepareStatement("SELECT id, hyfl_name FROM zcdmx_rela_ship_hyfl");ResultSet rs2 = stmt2.executeQuery();while (rs2.next()) {long id = rs2.getLong("id");String key = rs2.getString("hyfl_name");session.run("CREATE (:Node {id: $id, name: $hyfl_name})", Map.of("id", id, "hyfl_name", key));}// Read data from the third table and create nodes and relationshipsPreparedStatement stmt3 = mysqlConn.prepareStatement("SELECT id, extend_first, extend_second, extend_fourth,extend_five,extend_six,extend_eight,extend_nine FROM knowledge_base_details");ResultSet rs3 = stmt3.executeQuery();while (rs3.next()) {long id = rs3.getLong("id");String extend_first = rs3.getString("extend_first");String extend_second = rs3.getString("extend_second");String extend_fourth = rs3.getString("extend_fourth");String extend_five = rs3.getString("extend_five");String extend_six = rs3.getString("extend_six");String extend_eight = rs3.getString("extend_eight");String extend_nine = rs3.getString("extend_nine");// Create node for world if it doesn't existsession.run("MERGE (:Node {name: $extend_fourth,extend_first : $extend_first, extend_second : $extend_second, extend_five: $extend_five,extend_six: $extend_six,extend_eight: $extend_eight,extend_nine: $extend_nine})", Map.of("id", id,"extend_first", StrUtil.blankToDefault(extend_first, ""),"extend_second", StrUtil.blankToDefault(extend_second, ""),"extend_five", StrUtil.blankToDefault(extend_five, ""),"extend_six", StrUtil.blankToDefault(extend_six, ""),"extend_eight", StrUtil.blankToDefault(extend_eight, ""),"extend_nine", StrUtil.blankToDefault(extend_nine, ""),"extend_fourth", StrUtil.blankToDefault(extend_fourth, "")));if (StrUtil.isAllNotBlank(extend_fourth, extend_first)) {// Create relationship between Node(nameV) and Node(world)session.run("MATCH (a:Node {name: $nameV}), (b:Node {name: $world}) " +"CREATE (a)-[:RELATES_TO]->(b)",Map.of("nameV", extend_fourth, "world", extend_first));}// Create relationship between Node(keyV) and Node(world)if (StrUtil.isAllNotBlank(extend_fourth, extend_nine)) {session.run("MATCH (a:Node {name: $keyV}), (b:Node {name: $world}) " +"CREATE (a)-[:RELATES_TO]->(b)",Map.of("keyV", extend_nine, "world", extend_fourth));}}}}}

 查看节点和关系效果

 

http://www.dtcms.com/wzjs/380565.html

相关文章:

  • 怎样给自己的店做网站如何规划企业网络推广方案
  • 深圳制作网站的公司b站推广2023
  • 包头做网站公司百度导航最新版本下载安装
  • 哪家做外贸网站好最近新闻摘抄50字
  • 做淘宝客网站要多少钱深圳网站建设公司官网
  • 上海网站建设服务多少钱培训课程总结
  • 太原网站快速排名优化手机怎么建自己的网站
  • 做赌博彩票网站查关键词排名软件
  • 查企业的官方网站广州seo公司排行
  • 河北省建设厅办事大厅网站网站制作郑州
  • 设计网络网站整站优化关键词排名
  • 开发网站制作哪有网页设计公司
  • 旅游网站建设国内外现状网络营销推广方法和手段
  • 自己做的网站如何包装广告推送平台
  • b2c网站提供的服务有哪些游戏推广员拉人犯法吗
  • 网页qq官网登录入口怎么理解搜索引擎优化
  • 网站编辑工具软件网站查找工具
  • 公司网站制作价格免费网站seo
  • 耐克运动鞋网站建设规划书框架免费seo软件推荐
  • 做网站赚谁的钱商丘seo排名
  • 软件下载网站模板关键词优化排名软件哪家好
  • 中国建设银行网站怎么改支付密码忘了怎么办杭州搜索引擎推广排名技术
  • 哪个医学网站大夫可以做离线题b站大全永不收费2023入口在哪
  • 黑群晖的做网站文件营销网站建设免费
  • axure怎么做响应式网站兰州网络seo公司
  • 长春网站建设工作室企业网络营销策略分析
  • 上市公司中 哪家网站做的好国内b2b十大平台排名
  • 现在还用dw做网站设计么郴州网站建设
  • 怎么做好网站客服seo优化有百度系和什么
  • 哪里有做营销型网站的公司快手刷粉网站推广