知识库

如何使用 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 语句一样,此操作不会复制该标签上的任何底层 schema 索引或约束。此外,如果 Movie 节点具有附加标签,它们也不会被复制到 New_Movie 节点。