2017-12-22 33 views
0

Neo4J Community Editionバージョン3.2.1を使用しています。私は出回っこのため、ノードを作成しているCSV LOADを使用してNeo4J/Cypherでcsvから関係を取得する方法

node1,relation,node2,type 
1,RELATED_TO,2,Married 
2,RELATED_TO,1,Married 
1,RELATED_TO,3,Child 
2,RELATED_TO,3,Child 
3,RELATED_TO,4,Sibling 
3,RELATED_TO,5,Sibling 
4,RELATED_TO,5,Sibling 

は、エッジと、このCSVファイルを考えてみましょう。私は、次のCSV loadコマンドを実行します。

load csv with headers from 
"file:///test_dataset/edges.csv" as line 
match (person1:Person {pid:line.node1}), 
    (person2:Person {pid:line.node2}) 
create (person1)-[:line.relation {type:line.type}]->(person2) 

をしかし、これは次のエラーが返されます。

Invalid input '.': expected an identifier character, whitespace, '|', a length specification, a property map or ']' (line 5, column 24 (offset: 167)) 
"create (person1)-[:line.relation {type:line.type}]->(person2)" 

私がこのように「line.relation」を使用することができないようです。 csv loadを使用してcsv-file(2番目の列)からリレーションを使用するにはどうすればよいですか?

私はthis answerを見ましたが、これはネイティブクエリ言語を使用して行いたいと思います。

クエリの残りの部分は、私はこのような関係をハードコーディングすることにより、正しくエッジを作成するために管理している正しいことを確認するには:

load csv with headers from 
"file:///test_dataset/edges.csv" as line 
match (person1:Person {pid:line.node1}), 
    (person2:Person {pid:line.node2}) 
create (person1)-[:RELATED_TO {type:line.type}]->(person2) 

答えて

3

ネイティブそれはダイナミックでノードを作成することはできませんラベルと、動的タイプとの関係。

そのため、そのための手順があります。

あなたはネイティブにそれをしたいとあなたがrelation列のすべての異なる値がわかっている場合は、そのような多くのサイファー・スクリプト(値1つ)を作成することができます

LOAD CSV WITH HEADERS FROM "file:///test_dataset/edges.csv" AS line 
WITH line WHERE line.relation ='RELATED_TO' 
MATCH (person1:Person {pid:line.node1}) 
MATCH (person2:Person {pid:line.node2}) 
CREATE (person1)-[:RELATED_TO {type:line.type}]->(person2) 
+0

感謝を。それから私はインポートツールを調べます。 –

関連する問題