Reputation: 341
I am trying to load the data from the csv and display the nodes along with the relations as the graph in Neo4j. I am able to load the entity1 and entity2 in Neo4j, but unable to load the relations from the csv.
My csv file looks like this
Below is my CYPHER Code
LOAD CSV WITH HEADERS FROM "file:////csvFiles/Fraud_Triplets_Neo4j.csv" AS csvLine
MERGE (a:Subject {
Object1:csvLine.Entity1
,display:csvLine.Entity1
});
LOAD CSV WITH HEADERS FROM
"file:////csvFiles/Fraud_Triplets_Neo4j.csv" AS csvLine
MERGE (b:Object { Object2:csvLine.Entity2 ,display:csvLine.Entity2 });
LOAD CSV WITH HEADERS FROM "file:////csvFiles/Fraud_Triplets_Neo4j.csv" AS csvLine
MATCH (a:Subject { Object1: csvLine.Entity1})
MATCH (b:Object { Object2: csvLine.Entity2})
MERGE ((a) -[:Relation{r:csvLine.Relation}]-> (b))
Kindly let me know, how should i specify relation from csv file.
Upvotes: 0
Views: 202
Reputation: 16365
I don't know if I understood you question completely, but I guess you are trying to create the relationship with types based on column "Relation" of your .CSV file.
You can do it installing APOC Procedures and using apoc.create.relationship
procedure.
Also, your Cypher query can be simplified. You don't need to call LOAD CSV
3 times. Try something like this:
LOAD CSV WITH HEADERS FROM "file:////csvFiles/Fraud_Triplets_Neo4j.csv" AS csvLine
MERGE (a:Subject {
Object1:csvLine.Entity1,
display:csvLine.Entity1
});
MERGE (b:Object {
Object2:csvLine.Entity2,
display:csvLine.Entity2
});
CALL apoc.create.relationship(a, csvLine.Relation, {}, b) YIELD rel
RETURN *
Note: Remember to install APOC Procedures based on the version of Neo4j you are using. Take a look in the Version Compatibility Matrix.
Upvotes: 1