2016-11-30 3 views
1

を使用しているとき、私はこの形式のファイルをインポートしています(HAN_IDが一意である場合)、「ONは、SETを... CREATE」 "" Person_name_clean "から各発明者にラベル付けしますが、より多くのCypher-icとより多くの演奏者がいるとは分かりません。違いはちょうど最後の2行です。LOADのCSV

// 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; 

具体的なケースに加えて、一般的なルールがあるかどうかは疑問です。重要であれば、ファイルには数百万の発明者が含まれています。

ありがとうございます。

答えて

2

注:ON CREATE句は、MERGE句の後にのみ使用できます。だから、あなたの2番目のオプションは、次のようになります。

//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; 

オプション2あなたはユニークなhanIDを持つようにし、入力ファイルが既にあなたのDBに存在してInventor Sを含む可能性のあるすべてのInventorを意図する場合に使用する必要があります。

注:DB内のすべてのInventorがユニークhanIDを持っているだろうことを保証するために、あなたはまた、一意性制約を作成する必要があります。

CREATE CONSTRAINT ON (i:Inventor) ASSERT i.hanID IS UNIQUE; 
+0

が「ON CREATE」上のノートをありがとうございました。私は、このステップで "MERGE"ではなく "MATCH"を使用できるように、私が発明者ノードとそれに関連するhan_IDを別々にインポートするという賢明なアドバイスに従ったので、オプション1が行く方法だと考えています。スピードを上げるために お手数をおかけしますようお願い申し上げます。 – ghoetker

関連する問題