Tameiki
Tameiki

Reputation: 45

Create doesn't make all nodes and relationships appear

I just downloaded and installed Neo4J. Now I'm working with a simple csv that is looking like that:

enter image description here

So first I'm using this to merge the nodes for that file:

LOAD CSV WITH HEADERS FROM 'file:///Athletes.csv' AS line
MERGE(Rank:rank{rang: line.Rank})
MERGE(Name:name{nom: line.Name})
MERGE(Sport:sport{sport: line.Sport})
MERGE(Nation:nation{pays: line.Nation})
MERGE(Gender: gender{genre: line.Gender})
MERGE(BirthDate:birthDate{dateDeNaissance: line.BirthDate})
MERGE(BirthPlace: birthplace{lieuDeNaissance: line.BirthPlace})
MERGE(Height: height{taille: line.Height})
MERGE(Pay: pay{salaire: line.Pay})

and this to create some constraint for that file:

CREATE CONSTRAINT ON(name:Name) ASSERT name.nom IS UNIQUE
CREATE CONSTRAINT ON(rank:Rank) ASSERT rank.rang IS UNIQUE

Then I want to display to which country the athletes live to. For that I use:

Create(name)-[:WORK_AT]->(nation)

But I have have that appear:

enter image description here

I would like to know why I have that please.

I thank in advance anyone that takes time to help me.

Upvotes: 0

Views: 35

Answers (2)

nhanlam
nhanlam

Reputation: 36

Yes, Agree with @cybersam, it's the case sensitive issue of 'name' and 'nation' variables. My suggesttion:

MERGE (Name)-[:WORK_AT]->(Nation)

I see that you're using MERGE for nodes, so just in case any values of Name or Nation duplicated, you should use MERGE instead of CREATE.

Upvotes: 1

cybersam
cybersam

Reputation: 66927

Several issues come to mind:

  1. If your CREATE clause is part of your first query: since the CREATE clause uses the variable names name and nation, and your MERGE clauses use Name and Nation (which have different casing) -- the CREATE clause would just create new nodes instead of using the Name and Nation nodes.

  2. If your CREATE clause is NOT part of your first query: your CREATE clause would just create new nodes (since variable names, even assuming they had the same casing, are local to a query and are not stored in the DB).

Solution: You can add this clause to the end of the first query:

    CREATE (Name)-[:WORK_AT]->(Nation)

Upvotes: 1

Related Questions