为了创建一个时间树,我想使用这个语句:
WITH range(2020,2021) AS years, range(1,12) as months, range(0,24) as hours, range(1,60) as minutes, range(1,60) as seconds
MERGE (tr:timeRoot {name: "timeRoot"})
FOREACH(year IN years |
MERGE (y:calYear {name: year})
MERGE (tr)-[:HAS_YEAR]->(y)
FOREACH(month IN months |
CREATE (m:calMonth {name: month})
MERGE (y)-[:HAS_MONTH]->(m)
FOREACH(day IN (CASE
WHEN month IN [1,3,5,7,8,10,12] THEN range(1,31)
WHEN month = 2 THEN
CASE
WHEN year % 4 <> 0 THEN range(1,28)
WHEN year % 100 <> 0 THEN range(1,29)
WHEN year % 400 <> 0 THEN range(1,29)
ELSE range(1,28)
END
ELSE range(1,30)
END) |
CREATE (d:calDay {name: day})
MERGE (m)-[:HAS_DAY]->(d)
FOREACH(hour IN hours |
CREATE (h:calHour {name: hour})
MERGE (d)-[:HAS_HOUR]->(h)
FOREACH(minute IN minutes |
CREATE (mi:calMin {name: minute})
MERGE (h)-[:HAS_MINUTE]->(mi)
FOREACH(second IN seconds |
CREATE (sec:calSec {name: second})
MERGE (mi)-[:HAS_SECOND]->(sec)
)
)
)
)
)
)
在 conf 文件中,内存的所有设置都是默认的,并且是推荐的。
当我遇到错误时,我的查询似乎搞砸了:
Neo.DatabaseError.Statement.ExecutionFailed Java heap space
当我减少要生成的节点数量时,它会起作用。数据库是空的,我希望它可以处理 1 个以上的 mio 节点。也许有人暗示如何调整查询或设置以允许生成甚至 10 年的时间树?
neo4j-db 的版本为 4.2.1,并在具有 12 GB 内存的 Windows 服务器上运行。
谢谢