csv - Neo4j 为 CSV 导出指定字段和列名
问题描述
我正在将一些节点导出到 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;
物品 |
---|
1314757 |
红色美味 |
富士 |
“” |
7462518 |
盒子1 |
9686463 |
1472641 |
我希望他们如何安排是这样的:
PK | 类型 | 姓名 | 有苹果 (pk) | 字段1 |
---|---|---|---|---|
1314757 | 苹果 | 布雷本 | ||
7462518 | 苹果 | 节日 | ||
3010653 | 苹果 | 富士 | ||
9686463 | 盒子 | 盒子1 | 1472641 | 字段值 |
9686463 | 盒子 | 方框2 | 7462518 | 字段值 |
4726110 | 苹果 | 红色美味 |
有没有办法只使用 cypher/apoc 以这种格式获取它们?它们不需要按字母顺序排列。
解决方案
你会发现UNION 子句在这里很有帮助
就像是...
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
推荐阅读
- haskell - 在 Haskell 中计算近似值的生成器、选择器模式
- excel - Excel 以千为单位复制百分比...为什么?
- iterm2 - 更改 cygwin mintty/Mac iTerm/Unix xterm 的前景色和背景色的 ANSI 序列
- javascript - 从 JS 中的两个(或更多)内置对象(Map、EventTarget)继承
- bash - 从 bash 中的 yaml 数组中获取值
- html - HTML:如何在每次单击 html 中的选项卡时刷新页面/文档?
- c# - 一个 RGB 设置为 255 的随机颜色生成
- c# - 如何从数据库中获取数组中的数据?
- python - 在字符串 python 中查找带有额外字符的名称
- c++ - 如何确定相对于 x 轴像素范围的像素强度?