最近我一直在使用Neo4j作为我正在关注的课程的项目。 我已经想出如何使用APOC将我的数据库导出到.csv。
但是,导出的.csv文件不包含关系ID。 我使用以下调用来导出数据库:
CALL apoc.export.csv.all("export.csv",{})
我还可以使用以下Cypher查询来获取关系ID:
MATCH ()-[r]-() RETURN ID(r)
存在 apoc.export.csv.query(),但我想不出包含 apoc.export.csv.all中包含的信息的查询 call并且还包含关系ID。
我可以单独请求ID,并使用Python脚本将它们放入export.csv,但我不确定单独的调用/查询的关系顺序是否相同。
非常感谢任何帮助!
答案 0 :(得分:1)
我无法通过更改配置来查看。但是,如果您真的希望输出具有关系ID,则可以克隆apoc repo并对apoc/export/csv/CsvFormat.java
进行一些更改。将关系id添加到输出是一种非常快捷的方法。
您需要将ID添加到标头中。我在下面的行中添加了, "_id:id"
...
List<String> relHeader = generateHeader(relPropTypes, config.useTypes(), "_start:id", "_end:id", "_type:label", "_id:id");
List<String> header = generateHeader(relPropTypes, config.useTypes(), "_start:id", "_end:id", "_type:label", "_id:id");
您需要更改writeRels(SubGraph graph, CSVWriter out, Reporter reporter, Map<String, Class> relPropTypes, int cols, int offset)
我补充说......
row[offset+3]=String.valueOf(rel.getId());
并在以下行中将偏移量从3更改为4
collectProps(relPropTypes.keySet(), rel, reporter, row, 4 + offset);
它产生了一个看起来像这样的结果......
"_id","_labels","name","_start","_end","_type","_id","a_lot"
"0",":Node","A",,,,,
"1",":Node","B",,,,,
"2",":Node","C",,,,,
,,,"0","1","REL","0",""
,,,"0","2","LIKES","1","true"
我使用3.2社区进行测试。我不知道这些变化可能会对apoc.export.*
集合的整体功能产生什么影响,也可能没有影响。