File upload 使用LOAD CSV功能在neo4j中上载的最大文件大小是多少

File upload 使用LOAD CSV功能在neo4j中上载的最大文件大小是多少,file-upload,neo4j,File Upload,Neo4j,使用加载CSV功能可以上载到Neo4J数据库的最大文件大小是多少?这取决于系统规格吗? 我已成功上载了包含500K记录(约180MB)的文件,但在使用定期提交加载CSV时,如果尝试4.8GB文件时出现java堆空间错误,则上载会崩溃。您需要注意急切问题。根据您执行的操作,查询计划可能会显示包含eager的元素 查询计划可以通过解释加载CSV…..检查ECD(去掉定期提交进行检查) eager基本上意味着Cypher认为可能存在跨行依赖关系,因此该语句不能在多个事务中执行,定期提交被停用。因此,您

使用加载CSV功能可以上载到Neo4J数据库的最大文件大小是多少?这取决于系统规格吗?
我已成功上载了包含500K记录(约180MB)的文件,但在使用
定期提交
加载CSV
时,如果尝试4.8GB文件时出现java堆空间错误,则上载会崩溃。您需要注意
急切
问题。根据您执行的操作,查询计划可能会显示包含
eager
的元素

查询计划可以通过
解释加载CSV…..
检查ECD(去掉
定期提交
进行检查)

eager
基本上意味着Cypher认为可能存在跨行依赖关系,因此该语句不能在多个事务中执行,
定期提交
被停用。因此,您的CSV文件在一个事务中处理

但是有一种方法可以解决这个问题:允许您结合使用
apoc.periodic.iterate
apoc.load.csv
,请参见以下从csv文件导入一些twitter数据的复杂示例:

call apoc.periodic.iterate('call apoc.load.csv("file:/tmp/all.csv", {
 sep:";", 
 header:true, 
 mapping:{
  retweets:{type:"int"},
  favorites:{type:"int"},
  date:{type:"int"},
  mentions:{array:true, arraySep:" "},
  hashtags:{array:true, arraySep:" "}
 }
}) yield map',
"with {map} as map 
merge (u:User{username:map.username})
merge (t:Tweet {id:map.id})
on create set t.text=map.text, t.date=map.date, t.retweet=map.retweets, t.favorite=map.favorites, t.link=map.permalink
merge (k:Keyword{name:map.keyword})
merge (t)-[:HAS_KW]->(k)
merge (u)-[:SENT_TWEET]->(t)
FOREACH (m IN [x in map.mentions WHERE x<>''] |
   MERGE (mentioned:User {username:substring(m,1)})
   MERGE (t)-[:MENTIONS]->(mentioned)
)
FOREACH (h in [x in map.hashtags WHERE x<>''] |
   MERGE (ht:HashTag{name:h})
   MERGE (t)-[:USES_HASHTAG]->(ht)
)
", {batchSize:5000, parallel:false}); 
调用apoc.periodic.iterate('call apoc.load.csv(“file:/tmp/all.csv”){
九月:“;”,
标题:对,
映射:{
转发:{type:“int”},
收藏夹:{type:“int”},
日期:{type:“int”},
提到:{array:true,arraySep:”“},
hashtags:{array:true,arraySep:}
}
})产量图',
“以{map}作为映射
合并(u:User{username:map.username})
合并(t:Tweet{id:map.id})
在创建集合时,t.text=map.text,t.date=map.date,t.retweet=map.retweets,t.favorite=map.favorites,t.link=map.permalink
合并(k:Keyword{name:map.Keyword})
合并(t)-[:具有\u KW]->(k)
合并(u)-[:已发送\u TWEET]->(t)
FOREACH(地图中的m IN[x.表示x']|
合并(提到:用户{用户名:子字符串(m,1)})
合并(t)-[:提及]->(提及)
)
FOREACH(h in[x in map.hashtags,其中x']|
合并(ht:HashTag{name:h})
合并(t)-[:使用\u标签]->(ht)
)
“,{batchSize:5000,parallel:false});

是否使用定期提交加载?我没有。这似乎确实提高了绩效。谢谢