在Neo4j中是否有一种方法可以创建一个新的数据库,该数据库由另一个数据库中的一些查询数据填充?
例如,我有一个由以下节点组成的数据库:
可以通过以下语句创建上面的Graph:(在本例中,假设图形是完整的数据库)
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中是否有 * 任何 * 可能性来构造这样的数据库?
请注意,我的数据库由100 Mio+节点组成,所以只有可行的方法才是真正有帮助的。
**我最后的办法是查询数据,将其导出到.csv,然后通过neo4j-admin工具https://neo4j.com/docs/operations-manual/current/tutorial/neo4j-admin-import/构建新数据库
我只是想知道是否有另一种(也许更快的)方法。
1条答案
按热度按时间kxeu7u2r1#
在Neo4j环境中,DML和DDL语句是相互隔离的。通过转储文件或CSV导出源数据并导入它是唯一的本地选项。
如果您要连接到Neo4j through another Programming Language,则可以在那里构建逻辑,以便从源Graph读取数据并将结果写入目标Graph。