Neo4j “什么时候更喜欢?”;在创建集合时…“;使用加载CSV时
我正在导入此表单的文件(其中HAN_ID是唯一的): 我看到了两种将“姓名”标签从“Person\u name\u clean”添加到每个发明人身上的方法,但不确定是否更加密、更高效。区别就在最后两行Neo4j “什么时候更喜欢?”;在创建集合时…“;使用加载CSV时,neo4j,Neo4j,我正在导入此表单的文件(其中HAN_ID是唯一的): 我看到了两种将“姓名”标签从“Person\u name\u clean”添加到每个发明人身上的方法,但不确定是否更加密、更高效。区别就在最后两行 // Option 1 CREATE CONSTRAINT ON (i:Inventor) ASSERT i.hanID IS UNIQUE; USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///.../201609_HAN_NAME
// Option 1
CREATE CONSTRAINT ON (i:Inventor) ASSERT i.hanID IS UNIQUE;
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///.../201609_HAN_NAME.txt" AS row
FIELDTERMINATOR '|'
CREATE (i:Inventor {hanID:row.HAN_ID,name:row.Person_name_clean});
//Option 2
CREATE CONSTRAINT ON (i:Inventor) ASSERT i.hanID IS UNIQUE;
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///.../201609_HAN_NAME.txt" AS row
FIELDTERMINATOR '|'
CREATE (i:Inventor {hanID:row.HAN_ID})
ON CREATE SET i.name=row.Person_name_clean;
除了我的具体情况外,我想知道是否有什么一般规则是可取的。如果有关系的话,该文件包含数百万发明家
谢谢。注意:创建时的
子句只能在合并
子句之后使用。因此,您的第二个选择应该是:
//Option 2
CREATE CONSTRAINT ON (i:Inventor) ASSERT i.hanID IS UNIQUE;
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///.../201609_HAN_NAME.txt" AS row
FIELDTERMINATOR '|'
MERGE (i:Inventor {hanID:row.HAN_ID})
ON CREATE SET i.name=row.Person_name_clean;
如果希望每个Inventor
都具有唯一的hanID
,并且输入文件可能包含数据库中已存在的Inventor
s,则应使用选项2
注意:为确保数据库中的每个Inventor
都具有唯一的hanID
,还应创建唯一性约束:
CREATE CONSTRAINT ON (i:Inventor) ASSERT i.hanID IS UNIQUE;
感谢您关于“创建”的说明。我认为这意味着选项1是正确的选择,因为我遵循了明智的建议,分别导入inventor节点及其关联的han_ID,允许我在此步骤中使用“匹配”而不是“合并”,以提高速度。非常感谢你的帮助。
CREATE CONSTRAINT ON (i:Inventor) ASSERT i.hanID IS UNIQUE;