方法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)