将查询中的节点连接到一行中,以便使用Cypher在Neo4J中导出为csv
我有一个neo4J图,它代表了一场国际象棋比赛 假设我运行这个:将查询中的节点连接到一行中,以便使用Cypher在Neo4J中导出为csv,neo4j,cypher,concatenation,export-to-csv,Neo4j,Cypher,Concatenation,Export To Csv,我有一个neo4J图,它代表了一场国际象棋比赛 假设我运行这个: MATCH(c:ChessMatch{m_id:1“})-[:PLAYED](p:Player)RETURN* 这给了我两位棋手在一场国际象棋比赛中的结果 图表如下所示: | m_id | date | comments | p_id_A | name_A | p_id_B | name_B | |------|------------|-------------|--------|--
MATCH(c:ChessMatch{m_id:1“})-[:PLAYED](p:Player)RETURN*
这给了我两位棋手在一场国际象棋比赛中的结果
图表如下所示:
| m_id | date | comments | p_id_A | name_A | p_id_B | name_B |
|------|------------|-------------|--------|-----------|--------|------------------|
| 1 | 1969-05-02 | epic battle | 1 | Roy Lopez | 2 | Aron Nimzowitsch |
这些属性是这样的:
|--------------|------------------|
| (ChessMatch) | |
| m_id | 1 |
| date | 1969-05-02 |
| comments | epic battle |
|--------------|------------------|
| (player) | |
| p_id | 1 |
| name | Roy Lopez |
|--------------|------------------|
| (player) | |
| p_id | 2 |
| name | Aron Nimzowitsch |
|--------------|------------------|
我想将此数据导出到csv,如下所示:
| m_id | date | comments | p_id_A | name_A | p_id_B | name_B |
|------|------------|-------------|--------|-----------|--------|------------------|
| 1 | 1969-05-02 | epic battle | 1 | Roy Lopez | 2 | Aron Nimzowitsch |
谷歌搜索,令人惊讶的是,我没有找到任何可靠的答案。我能想到的最好方法就是使用
py2neo
,将所有数据作为单独的表格拉下来,合并到Pandas中,但这似乎没有什么启发性。任何关于如何使用cypher的想法都会非常有启发性。APOC有一个程序:
apoc.export.csv.query
查看更多详细信息。注意,您必须将以下内容添加到neo4j.conf:
apoc.export.file.enabled=true
希望这有帮助
问候,,
Tom谢谢你的快速回答。我从哪里运行
apoc.export.csv.query
from?从neo4j shell?(我在插件目录中正确地找到了apoc jar文件。)。我是否只在命令前面使用CALL out?此外……我如何将所有3个节点的属性放在一行中进行csv导出?是的,没错。从浏览器中,neo4j shell或cypher shell……都可以工作:-)。例如:调用apoc.export.csv.query(“匹配(u:User)-[r:RATED]->(m:Movie)返回u.name,r.rating,m.title LIMIT 10”results.csv“,{})我会接受你的答案…如果我能想出如何在单行中返回结果…照目前的情况,在你的示例中,我们会得到3行不同的结果:名称、评级和标题。好吧,快速尝试一下可能是:MATCH(p1:Player)-[:PLAYED]>(c:ChessMatch{m_id:1})你仍然可以得到两行(显然有两个结果符合该匹配),但一个简单的限制1(因为两条线实际上是相同的,但相反)解决了这个问题。