淄博网站优化资讯,手机软件开发,购物网站做兼职,做网站注册哪些商标接Java初始化大量数据到Neo4j中(一)继续探索#xff0c;之前用create命令导入大量数据发现太过耗时#xff0c;查阅资料说大量数据初始化到Neo4j需要使用neo4j-admin import
业务数据说明可以参加Java初始化大量数据到Neo4j中(一)#xff0c;这里主要是将处理好的节点数据和…接Java初始化大量数据到Neo4j中(一)继续探索之前用create命令导入大量数据发现太过耗时查阅资料说大量数据初始化到Neo4j需要使用neo4j-admin import
业务数据说明可以参加Java初始化大量数据到Neo4j中(一)这里主要是将处理好的节点数据和关系数据分别导出为csv
在这里插入代码片入口controller.java
//导出节点数据到csv文件中
GetMapping(exportNodeData)
public void exportNodeData(HttpServletResponse response) {service.exportNodeData(response);
}//导出关系数据到csv文件中
GetMapping(exportRelationData)
public void exportRelationData(HttpServletResponse response) {service.exportRelationData(response);
}service.java
//导出节点数据Overridepublic void exportNodeData(HttpServletResponse response) {//节点数据按照自己的实际业务添加我这里对应的是所有表的数据因为我业务中所有表结果基本一样也即节点属性都一样。每个表的数据一个map,key是表名作为节点的标签MapString, ListNodeData nodeDataMap;ListMapString,String data new ArrayList();for(String key:nodeDataMap.keySet()){ListNodeData dataList nodeDataMap.get(key);if (StringUtils.isEmpty(key) || dataList null || dataList .isEmpty()) {continue;}for (NodeData nodeData:dataList ) {MapString,String map new HashMap();String id nodeData.getId();String name nodeData.getName();String table nodeData.getName();//因为不同表的id会重复需要一个不重复的值作为节点唯一值(我这里用的是表id拼接表数据id)String uniqueValue nodeData.getUniqueValue(); map.put(:LABEL,table );map.put(id,id);map.put(name,name);map.put(uniqueValue:ID,uniqueValue);data.add(map);}}try {response.setCharacterEncoding(UTF-8);response.setHeader(Content-Disposition, attachment;filename new String(nodeimport.csv.getBytes(StandardCharsets.UTF_8), ISO8859-1));response.setContentType(ContentType.APPLICATION_OCTET_STREAM.toString());CsvWriter csvWriter CsvUtil.getWriter(response.getWriter()) ;csvWriter.writeBeans(data);csvWriter.close();} catch (IOException e) {e.printStackTrace();}
}//导出关系数据Overridepublic void exportRelationData(HttpServletResponse response) {//关系数据将每一个表数据的关系作为RelationData实体ListRelationData relationDatas;ListMapString,String data new ArrayList();for (RelationData relation : relationDatas) {MapString,String map new HashMap();String relationName relation .getRelationName();String id relation .getId();//因为节点是通过表id拼接数据id所以关系这里也需要加上拼接后不重复的值//开始节点唯一的值String uniqueStartValue relation .getUniqueStartValue();//结束节点唯一的值String uniqueEndValue relation .getUniqueEndValue();map.put(relationName,relationName) ;map.put(id,id) ;map.put(:START_ID,uniqueStartValue) ;map.put(:END_ID,uniqueEndValue) ;map.put(:TYPE,relationName) ;data.add(map);}try {response.setCharacterEncoding(UTF-8);response.setHeader(Content-Disposition, attachment;filename new String(relationimport.csv.getBytes(StandardCharsets.UTF_8), ISO8859-1));response.setContentType(ContentType.APPLICATION_OCTET_STREAM.toString());CsvWriter csvWriter CsvUtil.getWriter(response.getWriter()) ;csvWriter.writeBeans(data);csvWriter.close();} catch (IOException e) {e.printStackTrace();}}CsvUtil用的是Hutool中的工具类引入下面依赖即可
dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.7.21/version/dependency解释 节点中的 uniqueValue:ID 冒号前面可以随便写冒号后端必须是ID,标识全局id不可重复 :LABEL这个是标签名必须这样写 除了这两个以外的字段都是作为节点的属性。 导出的nodeimport.csv文件如下
关系中:
:START_ID:开始节点的唯一值 :END_ID:结束节点的唯一值 :TYPE关系类型 除这三个外的字段都作为关系
导出的relationimport.csv文件如下
之后找到Neo4j安装目录找到import目录将这个两个导出的文件放到import目录下 删除data\databases目录下的文件(neo4j-admin import要求是空文件 ) 停掉Neo4j
cmd进入到bin目录执行下面语句
neo4j-admin import --modecsv --nodes E:\work_soft\neo4j-community-3.5.5-windows\neo4j-community-3.5.5\import\nodeimport.csv --relationships E:\work_soft\neo4j-community-3.5.5-windows\neo4j-community-3.5.5\import\relationimport.csv --ignore-extra-columnstrue --ignore-missing-nodestrue --ignore-duplicate-nodestrue成功之后启动Neo4j,查看数据即可。