Neo4j 从查询结果创建新数据库

问题描述 投票:0回答:1

Neo4j 中有没有办法创建一个新数据库,并由另一个数据库中的一些查询数据填充?

例如,我有一个由以下节点组成的数据库:

上面的图表可以通过以下语句创建: (在此示例中,假设该图是完整的数据库)

CREATE (n0:Node)
CREATE (n1:Node)
CREATE (n2:Node {capital_letter: "A"})
CREATE (n3:Node)
CREATE (n4:Node)
CREATE (n5:Node)
CREATE (n6:Node {capital_letter: "B"})
CREATE (n7:Node)
CREATE (n8:Node {capital_letter: "A"})
CREATE (n9:Node {capital_letter: "B"})
CREATE (n10:Node)
CREATE (n2)-[:TRANSACTIONS]->(n0)
CREATE (n2)-[:TRANSACTIONS]->(n1)
CREATE (n2)-[:TRANSACTIONS]->(n3)
CREATE (n3)-[:TRANSACTIONS]->(n6)
CREATE (n4)-[:TRANSACTIONS]->(n2)
CREATE (n4)-[:TRANSACTIONS]->(n7)
CREATE (n6)-[:TRANSACTIONS]->(n5)

我的问题

有没有办法查询这些节点的子图,然后将它们放入新的持久数据库中?

例如,我想建立一个新的数据库,其中包含所有 A 和 B 节点,以及它们的所有邻居以及它们之间的所有关系。

我想象如下:

INSERT INTO NEW DATABASE "NEW DB"
MATCH (a {capital_letter: "A"})
OPTIONAL MATCH (a {capital_letter: "A"})-[t1]-(a_neighbours)
MATCH (b {capital_letter: "B"})
OPTIONAL MATCH (b {capital_letter: "B"})-[t2]-(b_neighbours)
RETURN a, b, t1, t2, a_neighbours, b_neighbours

当然上面的语句不起作用,但是Neo4J中是否有任何可能构建这样的数据库?

请注意,我的数据库由 100Mio+ 节点组成,因此只有可行的方法才真正有帮助。

**我的最后一招是查询数据,将其导出到.csv,然后通过neo4j-admin工具构建一个新数据库https://neo4j.com/docs/operations-manual/current/tutorial/ neo4j-admin-导入/

我只是想知道是否还有其他(也许更快)的方法。

import neo4j subgraph
1个回答
-1
投票

在 Neo4j 世界中,DML 和 DDL 语句并不是相互隔离的。通过转储文件或 CSV 导出源数据并导入是唯一的本机选项。
如果您通过另一种编程语言连接到 Neo4j,您可以在那里构建逻辑以从源图读取并将结果写入目标图。

© www.soinside.com 2019 - 2024. All rights reserved.