2016-05-13 27 views
2

ノードの「プロパティ」を仮定します。私が使用しています「ヘッダを持つLOADのCSVを...」に続き は、サンプルファイル形式です:として私は、それぞれD、A、B、Cとノードを持つにフィールド列を変換し、100110120500にはどうすればよいneo4jのノードの動的プロパティの設定

fields  
a=100,b=110,c=120,d=500 

ノードのプロパティ "プロパティ"?

LOAD CSV WITH HEADERS FROM 'file:/sample.tsv' AS row FIELDTERMINATOR '\t' 
CREATE (:Properties {props: row.fields}) 

上記の個々のプロパティを作成しませんが、 "A = 100、B = 110、C = 120、D = 500"

また、異なる行が有することができるように小道具に文字列値を設定しますキー値の異なるセット。それはキーが動的である必要があります。私は列としてこのキーと値を分割して、ロードしないようにする方法を探しています(他の列は、私はSOのためにそれをトリミングし、同様にあります)

fields 
a=100,b=110,c=120,d=500 
X=300,y=210,Z=420,P=600 
... 

。なぜなら、それは動的であるからです。今日はaa、bb、cc、ddなどに変更される可能性があります。 新しい列ヘッダーを認識するためにローダースクリプトを変更し続けたくありません。

これを解決するための指針はありますか?私は最新の3.0.1 neo4jバージョンを使用しています。

答えて

1

まず物事最初:fields::あなたのファイルフォーマットは現在、単一のヘッダ/プロパティを定義しますが、文字列全体(a=100,b=110,c=120,d=500が)あなたのノードのpropsに終わるだろうと、フィールド・ターミネータとしてタブを定義しているので

fields  
a=100,b=110,c=120,d=500 

プロパティ:

props as single property

特性を有することは、動的にロードされた:まず、適切なヘッダーを設定します。

"a","b","x","y" 
1,2,, 
,,3,4 

その後、あなたはこのようなもので問い合わせることができます:

LOAD CSV WITH HEADERS FROM 'file:///Users/David/overflow.csv' AS row 
CREATE (:StackOverflow { a:row.a, b:row.b,x:row.x,y:row.y}) 

あなたが何か実行するとその後:

match(so:StackOverflow) return so 

をあなたが望んでいた変数のプロパティを取得します:

variable properties

+0

私はいつもそのオプションを持っていますが、問題は、 "フィールド"の列a、b、c、d、e、f、g ....および将来のキーのようなかなり多くのキーが存在するため、少し異なります。フィールドの列のキーもa、b、c、dからx、y、zに変更できます。私はCSVローダーを変え続けることができません。私はノードのプロパティとして "フィールド"のキー値を設定する柔軟な方法を探しています。 – Kunal

+0

私はさらに明確にするために質問を編集しました。回答いただきありがとうございます。 – Kunal

+0

その場合、CSVを解析するために独自のローダを構築することになります。組み込みのローダーはそのために設計されていません。 –

関連する問題