2017-08-09 5 views
3

さまざまな関係タイプのノードを持つCSVがあるとします。 1つのクエリでCSVを読み込むオプションがあり、CSVを分割してファイルを分割することなく(リレーションシップタイプごとに1つずつ)、各リレーションシップタイプをリレーションシップ名として表示できますか? (関係タイプをEdgeにプロパティとして追加することは望ましくありません)。Neo4jと複数のタイプの関係でCSVをロード

Id1 | Id2 | RelationshipType 
1 | 2 | type1 
1 | 3 | type2 
2 | 3 | type1 
... 

我々は、後に表示&クエリに以下に類似したクエリのデータにしたい:

MATCH l=(p:Id1) - [:type1] - (p:Id2) RETURN l; 
MATCH l=(p:Id1) - [:type2] - (p:Id2) RETURN l; 

答えて

4

あなたはAPOC Procedureapoc.create.relationshipを使用してそれを行うことができます。 LOAD CSVクエリはなり

Id1|Id2|RelationshipType 
1|2|type1 
1|3|type2 
2|3|type1 

このCSVファイルを考慮

LOAD CSV WITH HEADERS FROM 'file:///sample.csv' AS line FIELDTERMINATOR '|' 
WITH line 
MERGE(node0:Node {id : line.Id1}) 
MERGE(node1:Node {id : line.Id2}) 
WITH node0, node1, line 
CALL apoc.create.relationship(node0, line.RelationshipType, {}, node1) YIELD rel 
RETURN * 

結果のグラフは次のようになります。

Resultant Graph

注:使用しているNeo4jのバージョンに応じてAPOC手順をインストールすることを忘れないでください。 Version Compatibility Matrixをご覧ください。

関連する問題