【小笔记】如何在docker中更新或导入neo4j数据?

如何在docker中更新或导入neo4j数据?

(1)背景
我尝试了4.4.9和5.19.0版本的Neo4j社区版,基于他们的镜像创建容器后,需要导入我准备好的csv文件或dump文件,因为数据量非常大,所以采用neo4j-admin工具导入方案
(2)遇到的问题
neo4j-admin工具需要使Neo4j处于停止状态,当进入容器后,执行了neo4j stop指令后,容器会自动退出!查询运行的docker容器,发现容器已经停止运行了…然后曾经的3.X版本是可以停止后,保持在容器中操作的。
不停止neo4j进行数据导入,就只有load CSV方式了,但是我的数据量有几百万,load csv想都不敢想…
(3)原因:
在这里插入图片描述
(4)可能的解决办法

在这里插入图片描述
我试过上面的5,无效,然后又在网上找了一通,发现谈这个问题的都很少,始终没找到一个可好用有效的办法。

(6)最终解决办法
找个这篇博客,尝试了一下,发现有用:
neo4j 数据迁移简单操作

我再结合我的实践说一下我的理解和分析:

  • docker版本的Neo4j,特别是用到了5.X的,neo4j stop这个指令就基本上不能用了,用了就停止容器,还怎么执行neo4j-admin呢?所以只能考虑在容器未运行的状态下进行数据迁移;
  • 容器停止状态下,dump和csv都无法导入,准确说来,什么导入方式都不可用,但是还有一种最简单纯粹的方法:就是复制已经导入好的数据库数据,替换容器的空数据库数据,即用数据复制的方式

数据复制的具体方法(可用)

1.首先你的Neo4容器(称为A)它在创建时是有外挂路径的,至少要挂载data路径(存放数据库文件)

docker run -d --name neo4j-5.19 -p 7474:7474 -p 7687:7687 -v /data/neo4j/data:/data -v /data/neo4j/logs:/logs -v /data/neo4j/conf:/var/lib/neo4j/conf -v /data/neo4j/import:/var/lib/neo4j/import --env NEO4J_AUTH=neo4j/neo4j 可用的镜像版本
  1. 在你的电脑,win或linux都可以,再搞一个Neo4j(称为B,就是正常的安装包,不是容器),基于它完成数据导入:
    (1)删除两个目录:data/databases/neo4j,data/transactions/neo4j
    (2)切换到Neo4j目录下的bin路径:cd bin
    (3)执行neo4j-admin进行数据导入,5.X版本的参考如下:
neo4j-admin database import full --nodes=import/nodes_series.csv --nodes=import/nodes_part_fused.csv --relationships=import/relation_series2part_fused.csv --skip-bad-relationships

此时data/databases/neo4j,data/transactions/neo4j两个路径下的数据会重新生成,即导入的数据。

3.复制B的data/databases/neo4j,data/transactions/neo4j到A对应的路径下进行替换(替换前,可以先删除A挂载路径下的data/databases/neo4j,data/transactions/neo4j)。

4.启动A,可以发现A原本没数据的,现有有了数据了。如此,达成曲线救国。

特别注意:A和B的版本必须一模一样,如此B的导入数据在A中可以正常使用!
上面给的是B的neo4j-admin导入方式,实际上其它方式,在容器外都是可用的哈。

附录:Neo4j数据导入方式

Neo4j导入数据的方式有:

  • 使用LOAD CSV导入数据
  • 使用APOC导入数据
  • 使用编程语言(Java,python,js,C#,Go)导入数据
  • 使用neo4j-admin工具导入数据
  • 使用应用导入数据
  • 使用ETL工具导入数据
    在这里插入图片描述
    详细可参考:
    Neo4j导入数据的5种方式详解配图

个人经验:
(1)小数据集(如几百、几千条)可以用load CSV方式,最简单,无需停止Neo4j,可以在线导入,最大缺点就是慢,且导入数据有上限(好像是1W条)
(2)大量数据(如十万、百万级),用neo4j-admin工具导入,百万级实体和关系导入,只需要秒级或几分钟级,缺点:必须基于空数据库,且neo4j处于未运行状态。

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值