我有3个大型neo4j数据库(每个100万条记录),我需要将它们组合在一起。
我决定将每个Neo4j中的数据导出到json文件中,然后将其加载到新文件中。
导出该数据时出现问题。
如果我只是枚举所有节点,那么这个过程就是很长(每个节点大约10毫秒)。我试过一个CYPHER:
String cypher = "MATCH (n) RETURN n";
if (offset > 0)
cypher += " SKIP " + offset;
cypher += " LIMIT " + MAX_COMMANDS;
offset += MAX_COMMANDS;
QueryResult<Map<String, Object>> nodes = engine.query(cypher, null);
if (!nodes.iterator().hasNext())
break;
for (Map<String, Object> row : nodes) {
RestNode node = (RestNode) row.get("n");
// export code here
}
通过这个,我已经达到了每节点0.17毫秒的速度。但是,程序已经导出大约700k个节点,程序已经与Read timed out崩溃。
Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException: java.net.SocketTimeoutException: Read timed out
我试图减少MAX_COMMANDS常数,但它没有帮助。
有没有办法增加此超时?或者是否有更有效的方法从Neo4j导出数据?
我正在使用java-rest-binding 2.0库并通过REST访问Neo4j服务器
谢谢,澳大利亚国庆日快乐