neo4j备份2-恢复数据

方法1

根据官方文档,可以使用json.直接恢复,具体代码如下:

CALL apoc.import.json("file:///all.json")

但是本人在使用 时发生了报错,报错信息为:

Neo.ClientError.Procedure.ProcedureCallFailed
Failed to invoke procedure `apoc.import.json`: Caused by: java.lang.RuntimeException: Missing constraint required for import. Execute this query: 
CREATE CONSTRAINT FOR (n:family name) REQUIRE n.neo4jImportId IS UNIQUE;

个人推断此错误是由于当前apoc.import.json方法没有正确处理label中存在空白的情况,直接修复此错误并不容易,因此选择了另外一个方法进行导入。

方法2

即使用apoc.load.json,该方法仅仅是读取json文件,需要结合Cypher语句创建节点和关系。

imports JSON file as a stream of values

具体代码如下

创建节点

CALL apoc.load.json("file:///all_wiki_20240928.json") YIELD value
WITH value
WHERE value.type = 'node'
UNWIND value.labels AS label
CALL apoc.create.node([label], value.properties) YIELD node AS createdNode
SET createdNode.id = value.id
RETURN count(createdNode)

创建关系:

CALL apoc.load.json("file:///all_wiki_20240928.json") YIELD value
WITH value
WHERE value.type = 'relationship'
MATCH (startNode {id: value.start.id}), (endNode {id: value.end.id})
CALL apoc.create.relationship(startNode, value.label, {}, endNode) YIELD rel AS createdRel
RETURN count(createdRel)

Reference:

官方文档apoc.load.json

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值