Import method won't let my relationships load

Hi there,

im trying to load my csv and then create a relationship. First I had the problem with NULL values. Before I used this query to import. But 1/3 of my city's were missing when importing the csv. Creating a relationship wasn't a problem with this city node.

LOAD CSV WITH HEADERS FROM 'file:///csv/city.csv' AS row
WITH row WHERE row.population IS NOT NULL
WITH row WHERE row.elevation IS NOT NULL
MERGE (:City {
name: row.name,
country: row.country,
province: row.province,
population: row.population,
latitude: row.latitude,
longitude: row.longitude,
elevation: row.elevation
});

// Load citylocalname node
LOAD CSV WITH HEADERS FROM 'file:///csv/citylocalname.csv' AS row
MERGE (l:City_localname {
localname: row.localname,
city: row.city
});

After using this form of import I have all my city completely imported but can't create the relationships. No error message, just a successful creation with 0 relationships created.

LOAD CSV WITH HEADERS FROM 'file:///csv/city.csv' AS row
CREATE (c:City)
SET c.country = CASE WHEN row.country IS NOT NULL AND row.country <> '' THEN row.country ELSE NULL END,
c.province = CASE WHEN row.province IS NOT NULL AND row.province <> '' THEN row.province ELSE NULL END,
c.population = CASE WHEN row.population IS NOT NULL AND row.population <> '' THEN toInteger(trim(row.population)) ELSE NULL END,
c.latitude = CASE WHEN row.latitude IS NOT NULL AND row.latitude <> '' THEN toFloat(trim(row.latitude)) ELSE NULL END,
c.longitude = CASE WHEN row.longitude IS NOT NULL AND row.longitude <> '' THEN toFloat(trim(row.longitude)) ELSE NULL END,
c.elevation = CASE WHEN row.elevation IS NOT NULL AND row.elevation <> '' THEN toInteger(trim(row.elevation)) ELSE NULL END;

// Load citylocalname node
LOAD CSV WITH HEADERS FROM 'file:///csv/citylocalname.csv' AS row
MERGE (l:City_localname {
localname: row.localname,
city: row.city
});

Here the relationship import query:

//city has localname
LOAD CSV WITH HEADERS FROM 'file:///csv/citylocalname.csv' AS row
MATCH (n:City {name: row.city}), (l:City_localname {localname: row.localname})
MERGE (n)-[:CITY_LOCALNAME]->(l);

Can't figure out my mistake here.
Thanks for the help!

Maybe try to add:

LOAD CSV WITH HEADERS FROM 'file:///csv/city.csv' AS row
CREATE (c:City)
SET c.country = ..., c.population = ..., ...
SET c.name = ...**  <--- try to add this property

because you try to do:


MATCH (n:City {name: row.city}), (l:City_localname {localname: row.localname})
MERGE (n)-[:CITY_LOCALNAME]->(l);
1 Like

Sat on it for hours and tested every eventuality. Can't believe I just missed a column.
Thanks mate, you made my day :)