Deepa Huddar
Deepa Huddar

Reputation: 341

Neo4j - Unable to load Relations from csv

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 thisenter image description here

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))

I am getting this graph

Kindly let me know, how should i specify relation from csv file.

Upvotes: 0

Views: 202

Answers (1)

Bruno Peres
Bruno Peres

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

Related Questions