繁体   English   中英

将批量JSON数据导入Neo4j

[英]Importing bulk json data into neo4j

我正在尝试加载大小约为700k的json文件。 但这向我显示了堆内存空间不足错误。

我的查询如下:

WITH "file:///Users//arundhathi.d//Documents//Neo4j//default.graphdb//import//tjson.json" as url  
call apoc.load.json(url) yield value as article return article

像在csv中一样,我尝试对JSON USING PERIODIC COMMIT 1000 但是我不允许与加载json一起使用。

如何加载批量json数据?

apoc.load.json现在支持将json-path作为第二个参数。

要从文件中的数组获取前1000个JSON对象,请尝试以下操作:

WITH "file:///path_to_file.json" as url  
CALL apoc.load.json(url, '[0:1000]') YIELD value AS article
RETURN article;

[0:1000]语法指定数组索引的范围,第二个数字是互斥的(因此,在此示例中,该范围中的最后一个索引为999)。

以上内容至少应在neo4j 3.1.3(带有apoc 版本 3.1.3.6的版本 )中起作用。 还请注意,neo4j的桌面版本(通过Windows和OSX安装程序安装)对在何处放置apoc之类的插件以导入本地文件有新的要求

您还可以使用jq(超快速json转换器)将JSON转换为CSV文件。 https://stedolan.github.io/jq/tutorial/

这是根据以下建议的推荐方法: https : //neo4j.com/blog/bulk-data-import-neo4j-3-0/

如果您有很多文件,请编写一个python程序或类似的程序来遍历整个文件的调用长度:

os.system("cat file{}.json | jq '. [.entity1, .entity2, .entity3] | @csv' >> concatenatedCSV.csv".format(num))

或在Go中:

exec.Command("cat file"+num+".json | jq '. [.entity1, .entity2, .entity3] | @csv' >> concatenatedCSV.csv")

我最近针对大约700GB的JSON文件执行了此操作。 要以正确的格式获取csv文件需要花费一些时间,但是如果您按照jq上的教程进行操作,则将学习如何做。 此外,请查看标头的样式以及此处没有的标题: https//neo4j.com/docs/operations-manual/current/tools/import/

转换全部花了一天的时间,但是考虑到使用apoc的交易开销,并且一旦文件格式变为文件,就可以随时重新导入,从长远来看,这是值得的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM