【问题标题】:Neo4j specify fields and column names for CSV exportNeo4j 为 CSV 导出指定字段和列名
【发布时间】:2021-03-04 21:47:48
【问题描述】:

我正在将一些节点导出到 CSV,并且我想指定要导出的字段、标题中的列(字段)名称,以及将一些时间戳转换为“人类可读”的字符串。我以前使用过一个子查询并将其传递给 apoc.export.csv.query() 函数,但是当我有许多不同类型的节点时,我看不到一个简单的方法来做到这一点。理想情况下,我还想通过将主键放在由关系类型标记的列中来表达关系。举个例子:

假设我只有两种节点类型:Apples 和 Boxes。有些 Box 节点与 Apple 节点没有“:HAS”关系,有些则有多个。此查询获取我想要的值,但没有按照我需要的方式格式化它们:

MATCH (a:Apple) MATCH (b:B)-[:HAS]->(ab:Apple) 
WITH [a.pk, a.type, a.name, "", ""] AS list1, 
[b.pk, b.type, b.name, ab.pk, b.field1] AS list2 
UNWIND list1 + list2 AS item RETURN item;

item
1314757
Red Delicious
Fuji
""
7462518
Box1
9686463
1472641

我希望他们的安排是这样的:

pk type name HAS Apple (pk) field1
1314757 Apple Braeburn
7462518 Apple Gala
3010653 Apple Fuji
9686463 Box Box1 1472641 fieldval
9686463 Box Box2 7462518 fieldval
4726110 Apple Red Delicious

有没有一种方法可以让我只使用 cypher/apoc 以这种格式获取它们?它们不需要按字母顺序排列。

【问题讨论】:

    标签: csv neo4j cypher neo4j-apoc


    【解决方案1】:

    您会发现UNION clause 在这里很有帮助

    类似...

    MATCH (a:Apple) 
    RETURN a.pk AS pk, a.type AS type, a.name AS name, "" AS `HAS Apple (pk)`, "" AS field1
    UNION
    MATCH (b:B)-[:HAS]->(ab:Apple) 
    RETURN b.pk AS pk, b.type AS type, b.name AS name, ab.pk AS `HAS Apple (pk)`, b.field1 AS field1
    

    【讨论】:

      猜你喜欢
      • 2017-11-25
      • 1970-01-01
      • 2014-02-04
      • 2018-03-25
      • 2017-07-23
      • 2017-06-24
      • 2016-06-25
      • 2015-07-31
      • 2013-05-23
      相关资源
      最近更新 更多