知识库

如何在 Cypher 中执行等效于 SQL 的 Create Table as Select

在传统的 SQL RDBMS 中,可以使用 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 节点。