我正在导入此表单的文件(其中HAN_ID是唯一的):
"HAN_ID"|"Person_name_clean"|"Person_ctry_code"|"Matched"
"4"|"GESELLSCHAFT FUER NUCLEONIC & ELECT MBH"|"DE"|"0"
"5"|"IMPEX ESSEN VERTRIEB VON WERKZEUGEN GMBH"|"DE"|"0"
我看到两种方法可以将“Person_name_clean”中的“name”标签添加到每个发明人,但我不确定是更多Cypher-ic和更高性能。不同之处在于最后两行。
// 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;
除了我的具体情况,我想知道是否有任何一般规则是首选。如果重要,该文件包含数百万发明人。
谢谢。
答案 0 :(得分:2)
注意:document.getElementById
子句只能在ON CREATE
子句后使用。所以,你的第二个选择应该是:
MERGE
如果您希望每个//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
,则应使用选项2。
注意:为了确保数据库中的每个Inventor
都有唯一的Inventor
,您还应该创建一个唯一性约束:
hanID