2017-10-24 8 views
1

これは本当に簡単な作業であると思われていますが、私は苦労しています。グラフデータベースとNeo4jの専門家であれば、私は本当に助けに感謝して、私の人生をもっと楽にしてくれるでしょう。私はCSVファイルのNULL値でこのMERGE句を理解しているようには見えません。Neo4jでnull値のCSVファイルをインポート

Example.csvファイル

LOAD CSV WITH HEADERS FROM 'file:///EXAMPLE.csv' AS row WITH row RETURN row 

を実行するときのチームとルームがNULL値を持っているように、私はいくつかのフィールドを見ることができます


Name,Lastname,Team,Room 

AAAA,BBBB,CCCC,1111 

DDDD,EEEE,FFFF,2222 

GGGG,HHHH,,3333 

IIII,JJJJ,KKKK, 

LLLL,MMMM,CCCC,1111 

NNNN,OOOO,,2222 

が含まれています。 Employees、Team、Roomのノードを作成したいと思います。これまでに書いたコードはここにあります。


CREATE CONSTRAINT ON (t:Team) ASSERT t.name IS UNIQUE; 

CREATE CONSTRAINT ON (r:Room) ASSERT r.name IS UNIQUE; 

LOAD CSV WITH HEADERS FROM 'file:///EXAMPLE.csv' AS row WITH row WHERE row.Room <> '' AND row.Room IS NOT NULL AND row.Team <> '' AND row.Team IS NOT NULL 

CREATE (m:Employee {name: toUpper(row.Lastname), firstname: toUpper(row.Name)}) 

MERGE (r:Room { name:row.Room}) 

MERGE (t.Team {name:row.Team}) 

CREATE (m)-[:WORKS_IN]->(r) 

CREATE (m)-[:WORKS_WITH]->(t); 

私は、null値がキャンセルと取られていないとあなたはすでにいくつかのエントリを推測推測します。部門やチームにエントリがない場合でも、従業員をデータベース内に保ちたい。 nullの場合、関係は存在しません。

私は本当に事前にいくつかの助けと多くの感謝を感謝します。

答えて

1

FOREACHCASE WHENhandle conditionsを試すことができます。このような何か:

CREATE (m:Employee {name: toUpper(row.Lastname), firstname: toUpper(row.Name)}) 
FOREACH (n IN (CASE WHEN row.Room IS NULL THEN [] ELSE [1] END) | 
    MERGE (r:Room { name:row.Room}) 
    CREATE (m)-[:WORKS_IN]->(r) 
) 
FOREACH (n IN (CASE WHEN row.Team IS NULL THEN [] ELSE [1] END) | 
    MERGE (t:Team {name:row.Team}) 
    CREATE (m)-[:WORKS_WITH]->(t) 
) 

関連行がnullの異なる場合FOREACHブロックは一度だけ実行されます。

+0

ありがとうブルーノ! – jorzylicious

+0

こんにちは@jorzyliciousあなたは大歓迎です!また、この回答があなたの質問を解決した場合は、チェックマークをクリックして[受諾](https://meta.stackexchange.com/q/5234/179419)を検討してください。これは、あなたが解決策を見つけ出し、回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。これを行う義務はありません。 –

+0

あなたが私を助けることができるかどうかもう一つ質問があります。私がデータセットをアップロードした後、いくつかの名前にカンマの前に空白があることに気付きました。たとえば、AAAA、BBBB、CCCC、1111 Here AAAA 。ですから、私がCypher MATCH(n:Employee {name: 'AAAA'})RETURN nで照会する必要があるときには、スペースを入れなければなりません。アップロードする前にスペースやフォーマット方法を避ける方法はありますか? – jorzylicious

関連する問題