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

neo4j 5.19.0安装、apoc csv导入导出 及相关问题处理

前言

突然有需求需要用apoc 导入 低版本的图谱数据,网上资料又比较少,所以就看官网资料并处理了apoc 导入的一些问题。

相关地址

apoc 官方安装网址  

apoc 官方导出csv 教程地址

apoc 官方 导入 csv 地址

docker 安装

执行如下命令启动镜像

docker run -d  --name neo4j  \-p 7474:7474 -p 7687:7687 \-v /home/neo4j/data:/var/lib/neo4j/data \-v /home/neo4j/plugins:/var/lib/neo4j/plugins \-v /home/neo4j/logs:/var/lib/neo4j/logs \-v /home/neo4j/conf:/var/lib/neo4j/conf \-v /home/neo4j/import:/var/lib/neo4j/import \-e NEO4J_apoc_export_file_enabled=true \-e NEO4J_apoc_import_file_enabled=true \-e NEO4J_apoc_import_file_use__neo4j__config=true \-e NEO4J_AUTH=neo4j/12345678 \neo4j:5.19.0

apoc安装

如果没有数据,可以执行下面的语句插入数据,后面导入导出用

CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})
CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})
CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})
CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})
CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})
CREATE (JoelS:Person {name:'Joel Silver', born:1952})
CREATE
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),
(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),
(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),
(LillyW)-[:DIRECTED]->(TheMatrix),
(LanaW)-[:DIRECTED]->(TheMatrix),
(JoelS)-[:PRODUCED]->(TheMatrix);

从apoc 插件地址 下载 apoc-core-5.19.0 的jar,放到 /home/neo4j/plugins

然后编辑  /home/neo4j/conf/neo4j.conf ,添加如下配置

#没装成功的时候需要自己配置插件目录,成功了就不需要
#server.directories.plugins=/var/lib/neo4j/plugins
#下面两个官方是建议需要什么开放什么,我是直接全开放了
dbms.security.procedures.allowlist=apoc.*
dbms.security.procedures.unrestricted=apoc.*
#网上有出现上下面的配置,但是我不配置也没影响
#server.jvm.additional=Dapoc.export.file.enabled=true
#server.jvm.additional=Dapoc.import.file.enabled=true
server.directories.import=/var/lib/neo4j/import

此处有个问题:由于我一开始配置的 neo4j 是别人装的,我将apoc插件放到挂载的 plugins 下,apoc没装成功,也没有错误,把我整蒙了,后面是在 stackoverflow 看到有人给了 server.directories.plugins 配置,试着配一下才成功的,主要是没装成功也看不到错误,排查起来比较费劲。,需要注意下。自己按上面的步骤应该安装是不需要配置的。

apoc导出

然后执行如下指令导出数据

 CALL apoc.export.csv.all("movies.csv", {}) 

如果出现如下界面,表示插件安装成功,数据导出成功,文件会导出到 /home/neo4j/import

如果出现下面的错误,就是要考虑配置 server.directories.plugins 

There is no procedure with the name `apoc.export.csv.all` registered for this database instance. Please ensure you've spelled the procedure name correctly and that the procedure is properly deployed.

apoc导入

打开导出的csv 文件,数据格式如下图所示

但是我当时用别人配置服务的数据导出的时候,csv内容如下所示,包括别人从3.x的版本导出的数据也是这样的数据,多出了重复的列名_type,_start_,_end

如果像上面一样有重复的标签,就需要自己删除重复的_type,_start_,_end标签,否则就会出现如下错误

Failed to invoke procedure `apoc.import.csv`: Caused by: java.lang.IllegalStateException: Duplicate key _type (attempted merging values apoc.load.Mapping@45da0937 and apoc.load.Mapping@d89fe8

 然后按如下要求修改movies.csv的内容:

1.将 _id 改成 oldId:ID

2.将 _labels 改为 :LABEL

3.将 _start 改为 oldId:START_ID

4.将 _end 改为 oldId:END_ID

5.将 _type 改为 :TYPE

6.将 _labels 那一列下面的值改成 Movie,Person 用逗号分隔多个标签,去掉所有冒号

 我在基于上述需求改的时候,不小心把 :LABEL  敲成 :LABELS ,于是出现了如下的错误,看的我一脸懵逼

Failed to invoke procedure `apoc.import.csv`: Caused by: org.neo4j.internal.kernel.api.exceptions.schema.IllegalTokenNameException: '' is not a valid token name. Token names cannot be empty or contain any null-bytes.

之后如果基于上面的文件进行直接导入,会出现如下的错误,也很莫名其妙

Failed to invoke procedure `apoc.import.csv`: Caused by: java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.List (java.lang.String and java.util.List are in module java.base of loader 'bootstrap'

这是因为关系和节点都在同一个 csv 里面,需要拆成两个 csv,一个只有关系,一个只有节点,如下面的图片所示。

然后这两个文件都需要放到 /home/neo4j/import 里面

之后执行命令下面的指令(此处 labels type 都不要传值,这两个配置是指定本次导入的节点配置的 label 和关系配置的 type,我们需要用的label type 都在 csv 里,不需要自己指定)

CALL apoc.import.csv([{fileName: 'file:/node.csv', labels: []}],[{fileName: 'file:/relationship.csv', type: ''}],{ arrayDelimiter: ','}
)

如下结果表示成功

数据正常导入,原数据的 id 被作为 oldId 被插入到 neo4j 

csv数据修改问题

1.我这个 demo 是因为数据量少,所以直接人工修改,不是很费劲,但是人工修改的时候需要注意编码问题,有些编辑工具如 excel 修改后再保存,会修改 csv 的编码,此时导入就会出现乱码,需要自己通过如 notepad 等其他工作,把编码改为UTF-8

2.当数据量特别多的时候,手动改就显得又卡,又难操作了,此时可以考虑参考下面的代码,然后基于自己的要求调整。(apoc 好像是使用opencsv 解析的,也可以考虑用opencsv)

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-csv</artifactId><version>1.7</version>
</dependency>
try (Reader reader = Files.newBufferedReader(Paths.get("movies.csv"))) {CSVPrinter csvPrinter = null;boolean isFirst = true;Iterable<CSVRecord> records = CSVFormat.DEFAULT.parse(reader);int recordIndex = 0;for (CSVRecord record : records) {recordIndex++;if (isFirst) {isFirst = false;List<String> heads = Lists.newArrayList();int index = 0;for (String s : record) {index++;heads.add(s);}csvPrinter = new CSVPrinter(Files.newBufferedWriter(new File("gen.csv").toPath(),StandardOpenOption.CREATE, StandardOpenOption.WRITE), CSVFormat.DEFAULT.withHeader(heads.toArray(new String[heads.size()])));continue;}List<String> bodys = Lists.newArrayList();int index = 0;for (String s : record) {if (index == 1) {s = s.replaceAll(":", ";").replaceFirst(":", "");}index++;bodys.add(s);}csvPrinter.printRecord(bodys.toArray(new String[bodys.size()]));csvPrinter.flush();}
}

相关文章:

neo4j 5.19.0安装、apoc csv导入导出 及相关问题处理

前言 突然有需求需要用apoc 导入 低版本的图谱数据&#xff0c;网上资料又比较少&#xff0c;所以就看官网资料并处理了apoc 导入的一些问题。 相关地址 apoc 官方安装网址 apoc 官方导出csv 教程地址 apoc 官方 导入 csv 地址 docker 安装 执行如下命令启动镜像 doc…...

C/C++ OpenCV 矩阵运算

C/C OpenCV 矩阵运算详解 &#x1f4a1; OpenCV 是一个强大的开源计算机视觉和机器学习库&#xff0c;它提供了丰富的矩阵运算功能&#xff0c;这对于图像处理和计算机视觉算法至关重要。本文将详细介绍如何使用 C/C 和 OpenCV 进行常见的矩阵运算。 矩阵的创建与初始化 在进…...

无人机桥梁3D建模的拍摄频率

无人机桥梁3D建模的拍摄频率 无人机桥梁3D建模的拍摄频率&#xff08;每秒拍摄照片数&#xff09;需根据建模精度、飞行速度、相机性能等因素综合确定。以下是专业级作业的详细参数分析&#xff1a; 1. 核心计算公式 拍摄频率&#xff08;fps&#xff09; \frac{飞行速度&…...

ESP32-idf学习(三)esp32C3连接iot

一、前言 上一篇用蓝牙作为通信方式&#xff0c;虽然勉强完成了控制&#xff0c;但结果显然不是那么符合我们的预期&#xff0c;既然用蓝牙还需要研究一段时间&#xff0c;那我们就先整一些现成的&#xff0c;不需要研究的&#xff01;iot云平台&#xff01;这里当然也是通过w…...

详解鸿蒙仓颉开发语言中的计时器

今天又到了大家喜闻乐见的科普环节&#xff0c;也可以说是踩坑环节&#xff0c;哈哈哈。今天聊一聊仓颉开发语言中的计时器&#xff0c;这部分可老有意思了。 为什么这么说呢&#xff0c;因为关于仓颉的计时器你几乎搜不到任何的文档&#xff0c;也没有相关的代码提示&#xf…...

【计算机网络】第3章:传输层—拥塞控制原理

目录 一、PPT 二、总结 &#xff08;一&#xff09;拥塞的定义 &#xff08;二&#xff09;拥塞产生的原因 &#xff08;三&#xff09;拥塞控制的目标 &#xff08;四&#xff09;拥塞控制方法分类 1. 端到端拥塞控制 2. 网络辅助拥塞控制 &#xff08;五&#xff09;…...

Vue3(watch,watchEffect,标签中ref的使用,TS,props,生命周期)

Vue3&#xff08;watch&#xff0c;watchEffect&#xff0c;标签中ref的使用,TS,props,生命周期&#xff09; watch监视 情况三&#xff1a;监视reactive定义的对象类型的数据 监视reactive定义的对象类型的数据&#xff0c;默认开启深度监视。地址没变&#xff0c;新值和旧…...

【nssctf第三题】[NSSCTF 2022 Spring Recruit]easy C

这是题目&#xff0c;下载附件打开是个C文件 #include <stdio.h> #include <string.h>int main(){char a[]"wwwwwww";char b[]"dvxbQd";//try to find out the flagprintf("please input flag:");scanf(" %s",&a);if…...

Cocos 打包 APK 兼容环境表(Android API Level 10~15)

使用 Cocos 打包 APK&#xff1a;Android 10 ~ Android 15 兼容版本对照表 ✅ 本表基于 Cocos Creator 3.x 实际测试及官方建议整理 &#x1f4c6; 最后更新时间&#xff1a;2025年6月 &#x1f4a1; 推荐使用 Android Studio 2022 或命令行构建工具 Android 版本API Level推荐…...

数据结构之堆:解析与应用

一、堆的核心定义与性质 堆是一种特殊的完全二叉树&#xff0c;分为最大堆和最小堆&#xff1a; 最大堆&#xff1a;每个节点的值 ≥ 子节点值&#xff0c;根节点为最大值。最小堆&#xff1a;每个节点的值 ≤ 子节点值&#xff0c;根节点为最小值。 关键性质&#xff1a; …...

DBeaver导入/导出数据库时报错解决方案

导出&#xff1a; 报错&#xff1a;mysqldump: Got error: 2026: SSL connection error: error:0A000102:SSL routines::unsupported protocol when trying to connect 在额外的命令参数中添加"--ssl-modeDISABLED"可以关闭SSL服务&#xff0c;从而成功解决问题。这…...

GPIO模拟串口通信

在资源受限的嵌入式项目中,GPIO模拟串口(UART)仍有实际需求。尽管现代MCU多数具备多个硬件串口,但实际项目中仍可能遇到串口数量不足的情况,尤其在低成本、小封装芯片的应用场景中。 一、GPIO模拟串口的基本原理 GPIO模拟串口,顾名思义,就是通过软件控制普通IO口的高低…...

uniapp与微信小程序开发平台联调无法打开IDE

经测试属于网络问题。本机需要联网。否则会出现Hbuilder运行微信小程序到模拟器时无法打开 微信开发者工具 这个页面出不来会一直显示异常。这期间微信小程序开发工具的端口是通的 需要先联网...

第十二节:第五部分:集合框架:Set集合的特点、底层原理、哈希表、去重复原理

Set系列集合特点 哈希值 HashSet集合的底层原理 HashSet集合去重复 代码 代码一&#xff1a;整体了解一下Set系列集合的特点 package com.itheima.day20_Collection_set;import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.…...

【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 &#x1f525; 前言 一&#xff1a;&#x1f525; 项目储备知识 &#x1f98b; HTTP 服务器&#x1f98b; Reactor 模型&#x1f380; 单 Reactor 单线程&#xff1a;单I/O多路…...

基于大数据的个性化购房推荐系统设计与实现(源码+定制+开发)面向房产电商的智能购房推荐与数据可视化系统 基于Spark与Hive的房源数据挖掘与推荐系统设计

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

FFmpeg学习笔记

1. 播放器的架构 2. 播放器的渲染流程 3. ffmpeg下载与安装 3.0 查看PC是否已经安装了ffmpeg ffmpeg 3.1 下载 wget https://ffmpeg.org/releases/ffmpeg-7.0.tar.gz 3.2 解压 tar zxvf ffmpeg-7.0.tar.gz && cd ./ffmpeg-7.0 3.3 查看配置文件 ./configure …...

Chrome 通过FTP,HTTP 调用 Everything 浏览和搜索本地文件系统

【提问1】 Chrome调用本地 everything.exe, everything 好像有本地 FTP 服务器&#xff1f; 【DeepSeek R1 回答】 是的&#xff0c;Everything 确实内置了 HTTP/FTP 服务器功能&#xff0c;这提供了一种相对安全的浏览器与本地应用交互的方式。以下是完整的实现方案&#x…...

GpuGeek如何成为AI基础设施市场的中坚力量

AI时代&#xff0c;算力基础设施已成为支撑技术创新和产业升级的关键要素。作为国内专注服务算法工程师群体的智算平台&#xff0c;GpuGeek通过持续创新的服务模式、精准的市场定位和系统化的生态建设&#xff0c;正快速成长为AI基础设施领域的中坚力量。本文将深入分析GpuGeek…...

【Hot 100】45. 跳跃游戏 II

目录 引言跳跃游戏 IIdp解题贪心解题 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;【Hot 100】45. 跳跃游戏 II❣️ 寄语&#xff1a;书到用时方恨少&#xff0c;事非经过不知难&#xff01; 引言 跳跃…...

Codeforces Round 1026 (Div. 2) C. Racing

Codeforces Round 1026 (Div. 2) C. Racing 题目 In 2077, a sport called hobby-droning is gaining popularity among robots. You already have a drone, and you want to win. For this, your drone needs to fly through a course with n n n obstacles. The i i i-…...

Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、CloudScraper概述1.1 CloudScraper 介绍1.2 安装二、基本使用方法2.1 创建scraper实例2.2 发送请求2.3 带参数的请求2.4 自定义浏览器指纹2.5 设置代理2.6 自定义请求头三、高级配置3.1 处理Cloudflare挑战-自动处理…...

oracle sql 语句 优化方法

1、表尽量使用别名&#xff0c;字段尽量使用别名.字段名&#xff0c;这样子&#xff0c;可以减少oracle数据库解析字段名。而且把 不需要的字段名剔除掉&#xff0c;只保留有用的字段名&#xff0c;不要一直使用 select *。 2、关联查询时&#xff0c;选择好主表 。oracle解析…...

Python数学可视化——显函数、隐函数及复杂曲线的交互式绘图技术

Python数学可视化——显函数、隐函数及复杂曲线的交互式绘图技术 一、引言 在科学计算和数据分析中&#xff0c;函数与方程的可视化是理解数学关系和物理现象的重要工具。本文基于Python的Tkinter和Matplotlib库&#xff0c;实现一个功能完善的函数与方程可视化工具&#xff…...

代码随想录打卡|Day51 图论(dijkstra(堆优化版)精讲、Bellman_ford 算法精讲)

图论part09 dijkstra&#xff08;堆优化版&#xff09;精讲(不熟悉) 代码随想录链接 题目链接 import java.util.*;class Edge {int to; // 邻接顶点int val; // 边的权重Edge(int to, int val) {this.to to;this.val val;} }class MyComparison implements Comparator<…...

【深度剖析】流处理系统性能优化:解决维表JOIN、数据倾斜与数据膨胀问题

目录 前言:为什么你的流处理作业总是慢? 一、维表JOIN优化:从普通连接到高性能查询 1.1 时态表的双面性 1.2 Lookup Join 优化 1.3 多表JOIN优化策略 二、数据倾斜:单分区也会遇到的隐形杀手 2.1 单分区数据倾斜 2.2 热点键打散技术 2.3 时间窗口预聚合 三、数据…...

PostgreSQL优化实践:从查询到架构的性能提升指南

## 引言 PostgreSQL作为先进的开源关系型数据库&#xff0c;在复杂查询处理与高并发场景中表现卓越&#xff0c;但不当的使用仍会导致性能瓶颈。本文系统性梳理优化路径&#xff0c;覆盖SQL编写、索引策略、参数调优等关键环节&#xff0c;配合代码示例与量化建议&#xff0c;…...

AI入门——AI大模型、深度学习、机器学习总结

以下是对AI深度学习、机器学习相关核心技术的总结与拓展&#xff0c;结合技术演进逻辑与前沿趋势&#xff0c;以全新视角呈现关键知识点 一、深度学习&#xff1a;从感知到认知的技术革命 核心突破&#xff1a;自动化特征工程的范式变革 深度学习通过多层神经网络架构&#x…...

【AI论文】论文转海报:迈向从科学论文到多模态海报的自动化生成

摘要&#xff1a;学术海报生成是科学交流中一项关键但具有挑战性的任务&#xff0c;需要将长上下文交织的文档压缩成单一的、视觉上连贯的页面。 为了应对这一挑战&#xff0c;我们引入了第一个用于海报生成的基准和度量套件&#xff0c;该套件将最近的会议论文与作者设计的海报…...

智慧零工平台前端开发实战:从uni-app到跨平台应用

智慧零工平台前端开发实战:从uni-app到跨平台应用 本文将详细介绍我如何使用uni-app框架开发一个支持微信小程序和H5的零工平台前端应用,包含技术选型、架构设计、核心功能实现及部署经验。 前言 在当今移动互联网时代,跨平台开发已成为提高开发效率的重要手段。本次我选择…...