Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j CSV导入-创建或更新_Neo4j_Cypher - Fatal编程技术网

Neo4j CSV导入-创建或更新

Neo4j CSV导入-创建或更新,neo4j,cypher,Neo4j,Cypher,我有以下查询来创建人员节点- USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "http://192.168.11.121/movie-reco-db/person_node.csv" as row CREATE (:Person {personId: row.person_id, name: row.name}); 我在personId上设置了索引,person_node.csv是我从MySql数据库导出的文件,该查询工作正常,但问题是每次导

我有以下查询来创建人员节点-

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "http://192.168.11.121/movie-reco-db/person_node.csv" as row
CREATE (:Person {personId: row.person_id, name: row.name});
我在personId上设置了索引,person_node.csv是我从MySql数据库导出的文件,该查询工作正常,但问题是每次导出时csv文件都会有新记录,如果我再次运行此查询,则会创建重复的节点,如果我在personId上设置了唯一索引,那么-

Node 0 already exists with label Person and property "personId"=[1]

并且不会插入新记录。所以,如果记录已经存在,是否有任何优雅的方法来更新记录,如果不存在,则创建新记录。

您正在寻找合并操作,该操作将尝试匹配,如果找不到,它将创建它。请注意,如果要合并的对象的整体不存在(例如,使用personId和名称合并节点,但现有节点具有该personId但名称稍有不同),则会创建节点

如果节点具有唯一ID,则在该节点上进行合并,然后在创建时使用
添加其余属性(当合并导致创建而不是在数据库中的现有实体上进行匹配时,仅在创建时执行on CREATE,另一个命令on MATCH仅在匹配而不是创建时执行)

您的最终查询如下所示:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "http://192.168.11.121/movie-reco-db/person_node.csv" as row
MERGE (p:Person {personId: row.person_id})
ON CREATE SET p.name = row.name;

您正在寻找合并操作,该操作将尝试匹配,如果它没有找到该对象,它将创建该对象。请注意,如果要合并的对象的整体不存在(例如,使用personId和名称合并节点,但现有节点具有该personId但名称稍有不同),则会创建节点

如果节点具有唯一ID,则在该节点上进行合并,然后在创建时使用
添加其余属性(当合并导致创建而不是在数据库中的现有实体上进行匹配时,仅在创建时执行on CREATE,另一个命令on MATCH仅在匹配而不是创建时执行)

您的最终查询如下所示:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "http://192.168.11.121/movie-reco-db/person_node.csv" as row
MERGE (p:Person {personId: row.person_id})
ON CREATE SET p.name = row.name;