首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将批量json数据导入neo4j

将批量json数据导入neo4j
EN

Stack Overflow用户
提问于 2017-04-13 14:28:59
回答 2查看 1.6K关注 0票数 2

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

我的问题如下:

代码语言:javascript
复制
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数据?

EN

回答 2

Stack Overflow用户

发布于 2018-12-13 05:34:14

您还可以使用jq将JSON转换为CSV文件,jq是一种超快的json转换器。https://stedolan.github.io/jq/tutorial/

这是推荐的方式,根据:https://neo4j.com/blog/bulk-data-import-neo4j-3-0/

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

代码语言:javascript
复制
os.system("cat file{}.json | jq '. [.entity1, .entity2, .entity3] | @csv' >> concatenatedCSV.csv".format(num))

或在Go中:

代码语言:javascript
复制
exec.Command("cat file"+num+".json | jq '. [.entity1, .entity2, .entity3] | @csv' >> concatenatedCSV.csv")

最近,我对大约700 of的JSON文件执行了此操作。将csv文件转换为正确的格式需要一些考虑,但如果您遵循jq上的教程,您将学会如何做到这一点。此外,请查看标题需要设置的内容以及此处不需要设置的内容:https://neo4j.com/docs/operations-manual/current/tools/import/

它花了大约一天的时间来转换所有这些文件,但考虑到使用apoc的事务开销,以及一旦文件转换成格式就可以随时重新导入的能力,从长远来看,这是值得的。

票数 2
EN

Stack Overflow用户

发布于 2017-04-14 08:32:39

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

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

代码语言:javascript
复制
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 release 3.1.3.6)中工作。还要注意的是,桌面版的neo4j (通过Windows和OSX安装程序安装)有一个new requirement,关于在哪里放置像apoc这样的插件以便导入本地文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43385030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档