如何用 Cypher 实现等同于 SQL “Create Table as Select” 的功能
在传统的 SQL 关系型数据库中,可以执行 create table as select(即 CTAS),其目的是创建一个新表并将原表中的现有数据复制到新表中。如果你想在 Cypher 中实现相同的功能,可以通过以下方式实现:
MATCH (n:Movie)
MERGE (m:New_Movie)
SET m=n;
上述语句会将所有 Movie 节点及其属性复制到一组标签为 New_Movie 的新节点。如果你的 Movie 节点数量很多,可能不想在单个事务中复制所有节点,例如可以使用 apoc.periodic.iterate 来分批执行。
call apoc.periodic.iterate("MATCH (n:Movie) RETURN properties(n) as props", "CREATE (m:New_Movie) SET m = props",{});
与 CTAS 语句一样,这不会复制该标签下的任何底层模式索引或约束。此外,如果 Movie 节点还有其他标签,这些标签也不会被复制到 New_Movie 节点上。
此页面有帮助吗?