如何使用包含关系 ID 的 Neo4j APOC 导出到 .csv

How to export to .csv with Neo4j APOC including relationship ID

最近我一直在使用 Neo4j 来完成我正在学习的课程的项目。 我已经弄清楚如何使用 APOC 将我的数据库导出到 .csv。

但是,导出的 .csv 文件不包含关系 ID。 我使用以下调用导出数据库:

CALL apoc.export.csv.all("export.csv",{})

我还可以使用以下 Cypher 查询来获取关系 ID:

MATCH ()-[r]-() RETURN ID(r)

存在 apoc.export.csv.query() 但我想不出包含 [=30= 中包含的信息的查询]调用并包含关系ID。

我可能会单独请求 ID,然后使用 Python 脚本将它们放入 export.csv,但我不确定关系的顺序对于单独的 calls/queries。

非常感谢任何帮助!

我找不到通过更改配置来实现的方法。但是如果您真的想要带有关系 ID 的输出,您可以克隆 apoc 存储库并对 apoc/export/csv/CsvFormat.java 进行一些更改。这是一种将关系 ID 添加到输出的非常快捷的方法。

您需要将 ID 添加到 header。我在下面的行中附加了 , "_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.* collection 的整体功能可能会或可能不会产生什么进一步的影响。