2017-06-27 14 views
1

私は単一のプロパティで複数の列を使用するcsvを持っています。しかし、すべての列が同時に充填されるわけではありません。Neo4j:ヌル値を含むコレクションはプロパティに格納できません

LOAD CSV WITH HEADERS FROM "file:c:/Users/emp.csv" AS row 
CREATE (:Employee {ID: row.EID, Name: row.ENAME, Language: [row.L1, row.L2 , 
row.L3]}); 

ここで、L1またはL2またはL3列の値は空です。

「null値を含むコレクションはプロパティに保存できません。」というエラーが表示されます。

どうすれば解決できますか?

答えて

1

をフィルタリングすることに明確な使用して試すことができます:

LOAD CSV WITH HEADERS FROM "file:c:/Users/emp.csv" AS row 
UNWIND [row.L1, row.L2, row.L3] AS x 
WITH row, COLLECT(x) AS langs 
CREATE (:Employee {ID: row.EID, Name: row.ENAME, Language: langs}); 

UNWIND句の場所L1L2、および個別のデータ行でL3COLLECTアグリゲーション関数はそれらを一緒に収集しますが、NULLの値は無視します。

+0

1回のクエリで複数のunwind文を使用するにはどうすればよいですか?今度は、row4とrow5を1つのプロパティとして結合したいとします。 "file:c:/Users/emp.csv"からHEADERSをロードします。 UNWIND [row.L1、row.L2、row.L3] AS x WITH行、COLLECT(x)AS langs UNWIND [row.L1、row.L2] AS y WITH行、COLLECT(y)AS z CREATE(:Employee {ID:row.EID、Name:row .ENAME、言語: langs、something:z}); これは機能しません。このコメントでコードを書式設定できません。申し訳ありません。 –

+1

2番目の 'WITH'節には、渡したいすべての識別子が含まれている必要があるため、' lang'をインクルードする必要があります。 – cybersam

0

あなたはこれがあなたのために働くかもしれないnull値

LOAD CSV WITH HEADERS FROM "file:c:/Users/emp.csv" AS row 
WITH *, distinct(row.L1 + row.L2 + row.L3) as langs 
CREATE (:Employee {ID: row.EID, Name: row.ENAME, Language: langs}); 
関連する問題