我不确定这是否已被回答,但在这里。 我有一个Neoj DB已经填充了可以说100k节点标记为人。 我想导入这些人创建的活动并将它们标记为活动。 我有一个csv约1000万活动,我想导入到Neo4j。在java代码中使用密码进行批量插入的最佳方法
以下代码是我创建的Cypher语句,它可以查找与活动关联的用户,创建活动节点并在用户和活动之间建立关系。
来处理这种情况的方法是低于
public void addActivityToGraph(List<String> activities) {
Map<String, Object> params = new HashMap<>();
for (String r : activities) {
String[] rd = r.split(";");
log.info("Row count: " + (rowCount + 1) + "| " + r);
log.info("Row count: " + (rowCount + 1)
+ "| Array Length: " + rd.length);
Map<String, Object> props = new HashMap<>();
props.put("activityid", Long.parseLong(rd[0]));
props.put("objecttype", Integer.parseInt(rd[1]));
props.put("objectid", Integer.parseInt(rd[2]));
props.put("containertype", Integer.parseInt(rd[3]));
props.put("containerid", Integer.parseInt(rd[4]));
props.put("activitytype", Integer.parseInt(rd[5]));
props.put("creationdate", Long.parseLong(rd[7]));
params.put("props", props);
params.put("userid", Integer.parseInt(rd[6]));
try (Transaction tx = gd.beginTx()) {
//engine is RestCypherQueryEngine
engine.query("match (p:Person{userid:{userid}}) create unique (p)-[:created]->(a:Activity{props})", params);
params.clear();
tx.success();
}
}
}
虽然这个工程,我敢肯定,因为这个过程需要一整天的时间做完,我不使用工具的正确组合。必须有一个更简单的方法。我看到很多带有批处理API的文档,但我没有看到任何与我在这里的情况(找到一个已经存在的用户,创建用户和新活动之间的关系) 我欣赏所有我可以得到的帮助这里。
谢谢。
感谢您的支持。但我在2.0.2版本上运行,升级选项尚未提供给我。任何其他想法?我似乎无法将我的头围绕着大量的选项,但似乎并未解决我的使用案例,但这种方法非常接近。只是错误的版本。 – Jome
我发布的第一个链接中有许多其他的想法和选项。他们都在早期版本(包括2)上工作。所以检查一下。有一个用于从Excel加载CSV的选项,可以选择将CSV转换为密码,然后以这种方式进行批量加载。 github上也有专门的工具可以用来执行批量csv加载 – FrobberOfBits
请参阅以下链接,了解将CSV加载到neo4j中的程序,不需要2.1:https://github.com/jexp/batch-import – FrobberOfBits