如何使用包含关系 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 的整体功能可能会或可能不会产生什么进一步的影响。
最近我一直在使用 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 的整体功能可能会或可能不会产生什么进一步的影响。