我看不到通过更改配置来实现它的方法。但是如果你真的想要关系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.*
系列的整体功能可能会或可能不会有什么进一步的影响。
“export.csv”的标题是否包含“_start”,“_ end”,“_ type”'?你需要有实际的关系ID? –
嗨Dave,感谢您的快速响应,是的头部包含'_start,_end,_type'。它确实包含节点的'_id',所以我想知道为什么它没有为关系做这件事。是的,我希望有实际的关系ID属于这3个属性:) –
请记住,关系ID不会对你很有用,因为当你导入时,你无法控制Neo4j将分配给哪个内部ID给新创建的节点和关系。节点_id被导出的原因是您将有一个唯一的关键字用于识别节点,以便通过关系将它们连接起来,但是一旦所有内容都被导入并连接起来,那些_id可能不会非常有用。 – InverseFalcon