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

Java初始化大量数据到Neo4j中(二)

接Java初始化大量数据到Neo4j中(一)继续探索,之前用create命令导入大量数据发现太过耗时,查阅资料说大量数据初始化到Neo4j需要使用neo4j-admin import

业务数据说明可以参加Java初始化大量数据到Neo4j中(一),这里主要是将处理好的节点数据和关系数据分别导出为csv

在这里插入代码片

入口controller.java

//导出节点数据到csv文件中
@GetMapping("exportNodeData")
public void exportNodeData(HttpServletResponse response) {service.exportNodeData(response);
}//导出关系数据到csv文件中
@GetMapping("exportRelationData")
public void exportRelationData(HttpServletResponse response) {service.exportRelationData(response);
}

service.java

//导出节点数据@Overridepublic void exportNodeData(HttpServletResponse response) {//节点数据,按照自己的实际业务添加,我这里对应的是所有表的数据,因为我业务中所有表结果基本一样,也即节点属性都一样。每个表的数据一个map,key是表名作为节点的标签Map<String, List<NodeData>> nodeDataMap;List<Map<String,String>> data = new ArrayList<>();for(String key:nodeDataMap.keySet()){List<NodeData> dataList = nodeDataMap.get(key);if (StringUtils.isEmpty(key) || dataList ==null || dataList .isEmpty()) {continue;}for (NodeData nodeData:dataList ) {Map<String,String> map = new HashMap<>();String id = nodeData.getId();String name = nodeData.getName();String table = nodeData.getName();//因为不同表的id会重复,需要一个不重复的值作为节点唯一值(我这里用的是表id拼接表数据id)String uniqueValue = nodeData.getUniqueValue(); map.put(":LABEL",table );map.put("id",id);map.put("name",name);map.put("uniqueValue:ID",uniqueValue);data.add(map);}}try {response.setCharacterEncoding("UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + new String("nodeimport.csv".getBytes(StandardCharsets.UTF_8), "ISO8859-1"));response.setContentType(ContentType.APPLICATION_OCTET_STREAM.toString());CsvWriter csvWriter =  CsvUtil.getWriter(response.getWriter()) ;csvWriter.writeBeans(data);csvWriter.close();} catch (IOException e) {e.printStackTrace();}
}//导出关系数据@Overridepublic void exportRelationData(HttpServletResponse response) {//关系数据,将每一个表数据的关系作为RelationData实体List<RelationData> relationDatas;List<Map<String,String>> data = new ArrayList<>();for (RelationData relation : relationDatas)  {Map<String,String> map = new HashMap<>();String relationName = relation .getRelationName();String id = relation .getId();//因为节点是通过表id拼接数据id,所以关系这里也需要加上拼接后不重复的值//开始节点唯一的值String uniqueStartValue = relation .getUniqueStartValue();//结束节点唯一的值String uniqueEndValue = relation .getUniqueEndValue();map.put("relationName",relationName) ;map.put("id",id) ;map.put(":START_ID",uniqueStartValue) ;map.put(":END_ID",uniqueEndValue) ;map.put(":TYPE",relationName) ;data.add(map);}try {response.setCharacterEncoding("UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + new String("relationimport.csv".getBytes(StandardCharsets.UTF_8), "ISO8859-1"));response.setContentType(ContentType.APPLICATION_OCTET_STREAM.toString());CsvWriter csvWriter =  CsvUtil.getWriter(response.getWriter()) ;csvWriter.writeBeans(data);csvWriter.close();} catch (IOException e) {e.printStackTrace();}}

CsvUtil用的是Hutool中的工具类,引入下面依赖即可

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.21</version></dependency>

解释:
节点中的,
uniqueValue:ID 冒号前面可以随便写,冒号后端必须是ID,标识全局id,不可重复
:LABEL:这个是标签名,必须这样写
除了这两个以外的字段都是作为节点的属性。
导出的nodeimport.csv文件如下
在这里插入图片描述

关系中:

:START_ID:开始节点的唯一值
:END_ID:结束节点的唯一值
:TYPE:关系类型
除这三个外的字段都作为关系

导出的relationimport.csv文件如下:
在这里插入图片描述

之后找到Neo4j安装目录,找到import目录,将这个两个导出的文件放到import目录下
在这里插入图片描述
删除data\databases目录下的文件(neo4j-admin import要求是空文件 ) ,停掉Neo4j

cmd进入到bin目录,执行下面语句

neo4j-admin import --mode=csv  --nodes "E:\work_soft\neo4j-community-3.5.5-windows\neo4j-community-3.5.5\import\nodeimport.csv" --relationships "E:\work_soft\neo4j-community-3.5.5-windows\neo4j-community-3.5.5\import\relationimport.csv" --ignore-extra-columns=true --ignore-missing-nodes=true --ignore-duplicate-nodes=true

在这里插入图片描述
成功之后启动Neo4j,查看数据即可。

相关文章:

Java初始化大量数据到Neo4j中(二)

接Java初始化大量数据到Neo4j中(一)继续探索&#xff0c;之前用create命令导入大量数据发现太过耗时&#xff0c;查阅资料说大量数据初始化到Neo4j需要使用neo4j-admin import 业务数据说明可以参加Java初始化大量数据到Neo4j中(一)&#xff0c;这里主要是将处理好的节点数据和…...

flink1.17安装

Flink1.17安装 官网地址&#xff1a; https://nightlies.apache.org/flink/flink-docs-release-1.17/zh//docs/try-flink/local_installation/ 安装jdk11 ps&#xff1a;只能安装openjdk11&#xff0c;昨天安装的oracle jdk17&#xff0c;结果怎么也运行不起来。 sudo apt …...

SLAM从入门到精通(gmapping建图)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们介绍了hector slam建图。相对而言&#xff0c;hector slam建图对数据的要求比较低&#xff0c;只需要lidar数据就可以建图了。但是hector …...

中国312个历史文化名镇及景区空间点位数据集

一部中华史&#xff0c;既是人类创造丰富物质财富的奋头史&#xff0c;又是与自然共生共存的和谐史不仅留存下悠久丰富的人文思想和情怀&#xff0c;还在各处镌刻下可流传的生活场景&#xff0c;历史文化名镇(以下简称:名镇)就是这样真实的历史画卷。“镇”是一方的政治文化中心…...

记一次Mybatis驼峰命名导致的线上BUG及处理方案

前言 方向从一开始就错了&#xff0c;还是执着的去寻找问题的解决方案&#xff0c;简直就是一场重大灾难&#xff0c;但这也是每个修行者的必由之路。这个线上问题&#xff0c;差点让我的心里防线崩溃&#xff0c;苦寻无门&#xff0c;最终得以解决也多亏了身边的各路大佬的群…...

在MyBatisPlus中添加分页插件

开发过程中&#xff0c;数据量大的时候&#xff0c;查询效率会有所下降&#xff0c;这时&#xff0c;我们往往会使用分页。 具体操作入下&#xff1a; 1、添加分页插件&#xff1a; package com.zhang.config;import com.baomidou.mybatisplus.extension.plugins.Pagination…...

算法题系列8·买卖股票的最佳时机

目录 题目描述 实现 提交结果 题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。 设计一个算法来计算你所能获取的最大利润。…...

DC电源模块关于宽电压输入和输出的范围

BOSHIDA DC电源模块关于宽电压输入和输出的范围 DC电源模块是一种电子设备&#xff0c;能够将输入的直流电源转换成所需的输出电源&#xff0c;用于供电各种电子设备。其中&#xff0c;关于宽电压输入和输出的范围&#xff0c;是DC电源模块常见的设计要求之一。本文将详细介绍…...

【Docker】docker拉取镜像错误 missing signature key

问题 当我使用docker拉取一个特定的镜像时&#xff0c;提示错误&#xff1a; 错误 missing signature key 但是拉取其他镜像又可以访问&#xff0c;&#xff0c;&#xff0c;&#xff0c;于是&#xff0c;我怀疑是否是docker版本问题。 docker --version结果确实&#xff0…...

C- 静态链接

静态链接意味着在编译时将所有库函数直接嵌入到最终的可执行文件中&#xff0c;而不是在运行时通过共享库来动态链接这些函数。静态链接的结果是一个更大的可执行文件&#xff0c;因为它包含了所有必要的代码&#xff0c;但它可以在没有外部依赖的情况下独立运行。 下面是一个…...

微信公众号开发(BUG集)

1.微信公众平台接口错误:不合法的自定义菜单使用用户 地址&#xff1a;解决地址 2.微信公众平台接口错误:invalid ip 180.101.72.196 ipv6 ::ffff:180.101.72.196, not in whitelist rid: 6511420b-60c59249-01084d02 白名单离开放服务器IP...

AI项目十三:PaddleOCR训练自定义数据集

若该文为原创文章&#xff0c;转载请注明原文出处。 续上一篇&#xff0c;PaddleOCR环境搭建好了&#xff0c;并测试通过&#xff0c;接下来训练自己的检测模型和识别模型。 paddleocr检测模型训练 1、准备数据集 在PaddleOCR目录下新建文件夹&#xff1a;train_data, 这个…...

你熟悉Docker吗?

你熟悉Docker吗&#xff1f; 文章目录 你熟悉Docker吗&#xff1f;快速入门Docker安装1.卸载旧版2.配置Docker的yum库3.安装Docker4.启动和校验5.配置镜像加速5.1.注册阿里云账号5.2.开通镜像服务5.3.配置镜像加速 部署MySQL镜像和容器命令解读 Docker基础常用命令数据卷数据卷…...

Nodejs错误处理详细指南

Nodejs错误处理详细指南 学习 Node.js 中的高级错误处理技术&#xff0c;以增强应用程序的可靠性和稳定性。 在 Node.js 中&#xff0c;我们可以使用各种技术和方法来处理错误&#xff0c;可以查看这篇文章。错误处理是任何 Node.js 应用程序的一个重要方面。正确管理错误可以…...

软考 系统架构设计师系列知识点之软件架构风格

这个十一注定是一个不能放松、保持“紧”的十一。由于报名了全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;11月4号就要考试&#xff0c;因此8天长假绝不能荒废&#xff0c;必须要好好利用起来。现在将各个核心知识点一一进行提炼并做记录。 所…...

一键智能视频语音转文本——基于PaddlePaddle语音识别与Python轻松提取视频语音并生成文案

前言 如今进行入自媒体行业的人越来越多&#xff0c;短视频也逐渐成为了主流&#xff0c;但好多时候是想如何把视频里面的语音转成文字&#xff0c;比如&#xff0c;录制会议视频后&#xff0c;做会议纪要&#xff1b;比如&#xff0c;网课教程视频&#xff0c;想要做笔记&…...

[unity]对象的序列化

序 抽象的图纸叫类&#xff0c;包含具体数据的叫对象。 类的序列化和反序列化 using System.Collections; using System.Collections.Generic; using UnityEngine;using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; [Serializabl…...

java开发岗位面试

java开发岗位面试 技术栈&#xff1a;springboot框架&#xff0b;redis 个人笔试/技术面问题整理 1、SpringBoot有什么组件&#xff1f; 举例说几个&#xff1a; ①auto-configuration组件&#xff1a;核心特征。其约定大于配置思想&#xff0c;赋予了SpringBoot开箱即用的强…...

坠落防护 挂点装置

声明 本文是学习GB 30862-2014 坠落防护 挂点装置. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了高处坠落防护挂点装置的技术要求、检验方法、检验规则及标识。 本标准适用于防护高处坠落的挂点装置。 本标准不适用于体育及消…...

关于 自定义的RabbitMQ的RabbitMessageContainer注解-实现原理

概述 RabbitMessageContainer注解 的主要作用就是 替换掉Configuration配置类中的各种Bean配置&#xff1b; 采用注解的方式可以让我们 固化配置&#xff0c;降低代码编写复杂度、减少配置错误情况的发生&#xff0c;提升编码调试的效率、提高业务的可用性。 为什么说“降低…...

利用快马平台快速构建mcporter数据转换工具原型,十分钟验证数据管道设计

最近在做一个数据迁移项目时&#xff0c;遇到了需要频繁转换数据格式的需求。传统方式下&#xff0c;光是搭建开发环境、编写基础代码就要花上大半天时间。这次尝试用InsCode(快马)平台快速构建了一个mcporter数据转换工具原型&#xff0c;整个过程出乎意料地顺畅。 明确核心需…...

Vue中实现动态标签页的切换优化与状态管理

1. 动态标签页的核心需求与实现思路 在后台管理系统这类多页面应用中&#xff0c;动态标签页几乎是标配功能。想象一下你正在使用某电商后台&#xff0c;同时开着商品管理、订单处理和用户分析三个页面&#xff0c;这时候标签页的流畅切换和状态保持就显得尤为重要。 我经历过一…...

Ubuntu 24.04 环境实战:ROS 2 Kilted 实现 SLAM 建图与 Nav2 导航

一、构建地图 1、安装依赖 安装 slam_toolbox 算法库&#xff1a; sudo apt install ros-kilted-slam-toolbox安装 TurtleBot3 全套支持包&#xff1a; sudo apt install ros-kilted-turtlebot3*2、使用清华源 如果apt安装很慢&#xff0c;请先配置清华源&#xff1a; sud…...

如何去选择品质优秀的段码屏厂家

在现代电子产品中&#xff0c;LCD液晶段码屏的应用越来越广泛。选择一家优质的厂家不仅能保证产品质量&#xff0c;还能提供高效的服务。本文将为您推荐十家在LCD液晶段码屏领域表现突出的厂家&#xff0c;帮助您做出明智的选择。1. 杭州斡能电子有限公司杭州斡能电子有限公司&…...

终极指南:如何用 YahooFinanceApi 快速获取免费金融数据

终极指南&#xff1a;如何用 YahooFinanceApi 快速获取免费金融数据 【免费下载链接】YahooFinanceApi A handy Yahoo! Finance api wrapper, based on .NET Standard 2.0 项目地址: https://gitcode.com/gh_mirrors/ya/YahooFinanceApi 你是否正在寻找一个简单、免费且…...

从零到一:在本地CentOS环境完整部署yshop-drink扫码点餐系统的实战指南

1. 环境准备&#xff1a;从零搭建CentOS基础系统 第一次在本地部署yshop-drink扫码点餐系统时&#xff0c;我选择了CentOS 7.9作为基础环境。这个版本既稳定又兼容大多数现代软件包&#xff0c;特别适合作为生产环境使用。建议直接使用阿里云镜像站下载Minimal版本ISO文件&…...

超实数(Hyper-reals)的数学革命:从Hewitt到Robinson的探索历程

1. 超实数&#xff1a;一场颠覆传统数学认知的革命 想象一下&#xff0c;当你第一次学习实数时&#xff0c;老师告诉你数轴上的点与实数一一对应&#xff0c;没有任何空隙。这个看似完美的体系在20世纪中叶被一群数学家彻底颠覆了。超实数&#xff08;Hyper-reals&#xff09;的…...

cobalt家谱研究者助手:家族历史与档案管理方案

cobalt家谱研究者助手&#xff1a;家族历史与档案管理方案 引言&#xff1a;家谱研究的数字时代痛点与解决方案 你是否还在为散乱的家族史料整理而困扰&#xff1f;是否经历过珍贵的口述历史随时间流逝而湮灭&#xff1f;cobalt家谱研究者助手&#xff08;家族历史与档案管理方…...

Phi-4-Reasoning-Vision开源大模型实践:图文多模态输入格式与Phi-4模型要求对齐

Phi-4-Reasoning-Vision开源大模型实践&#xff1a;图文多模态输入格式与Phi-4模型要求对齐 1. 项目概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具&#xff0c;专为双卡RTX 4090环境优化。该工具严格遵循官方SYSTEM…...

[小红书AI自动化教程]凌晨2点我在睡觉,AI偷偷发了篇小红书爆款:醒来99+点赞,人类社媒苦役终结?

我把小红书交给 OpenClaw&#xff0c;它开始自己干活了 凌晨两点&#xff0c;我在睡觉&#xff0c;它却偷偷发了一篇爆款。 醒来点赞99&#xff0c;评论全是“姐妹求链接”。这不是科幻。去年我还为追热点熬夜秃头&#xff0c;如今一句“今天发什么”&#xff0c;AI 就能完成选…...