我在Web应用程序中使用Neo4j 2.2.8和Spring Data。我正在使用xml来配置我的数据库,例如:
<neo4j:config storeDirectory="S:\Neo4j\mybase" />
但我正在尝试使用批量插入器来添加来自.txt文件的超过100万个节点。在读取文件并设置对象列表后,我的批处理代码如下:
public void batchInserter(List<Objects> objects) {
BatchInserter inserter = null;
try {
inserter = BatchInserters.inserter("S:\\Neo4j\\mybase");
Label movimentosLabel = DynamicLabel.label("Movimentos");
inserter.createDeferredSchemaIndex(movimentosLabel).on("documento").create();
for (Objects objs : objects{
Map<String, Object> properties = new HashMap<>();
properties.put("documento", objs.getDocumento());
long movimento = inserter.createNode(properties, movimentosLabel);
DynamicRelationshipType relacionamento = DynamicRelationshipType.withName("CONTA_MOVIMENTO");
inserter.createRelationship(movimento, objs.getConta().getId(), relacionamento, null);
}
} finally {
if (inserter != null) {
inserter.shutdown();
}
}
}
是否可以在“插件”中的xml中配置我的数据库路径?因为使用上面的配置,Neo4j给出了一个关于多个连接的错误。我可以设置属性来解决多个连接的错误吗?有谁有这个问题,并有任何想法如何解决它?欢迎提出意见。
感谢大家!
答案 0 :(得分:0)
你的问题有几个部分:
关于多个连接的错误
如果您将spring-data与绑定到特定目录或文件的本地数据库一起使用,请注意,您不能让两个neo4j进程同时打开同一个DB。这意味着如果您决定对同一文件/目录使用BatchInserter
,那么当使用spring-data DB的JVM正在运行时,这根本不会发生。我不知道如何解决这个问题。一种选择是不对文件使用批量插入器,而是使用REST API进行插入。
获取在我的xml
中配置的数据库的路径
当然,有办法做到这一点,你必须consult the relevant documentation。我不能给你代码,因为它取决于你在说什么配置文件以及它是如何构造的,但实质上应该有一种方法在这里向你的代码注入正确的东西,并从中读取属性注入对象的XML文件。
但鉴于上述“多重连接”问题,这对您无济于事。
从广义上讲,我认为您的解决方案是: