My CSV data looks like this:
device_id,device_type,connected_from,connected_to
200,Thermostat,,
201,Smoke Detector,,
202,Light Sensor,,
203,Security Camera,,
204,Smart Lock,,
,,200,201
,,200,202
,,200,203
,,201,203
,,202,204
My Cypher query is:
LOAD CSV FROM "/path-to/iot_devices_and_connections.csv" WITH HEADER AS row
WITH row WHERE row.device_id IS NOT NULL AND row.device_type IS NOT NULL
CREATE (d:Device {id: row.device_id, type: row.device_type});
The problem is that when I run the query rows with null values also get created as nodes. I've set in the code row.device_id IS NOT NULL AND row.device_type IS NOT NULL but it doesn't seem to work.
How can I create only nodes that have device_id and device_type?

Try to modify your query so that it includes
NULLIF. To quote the documentation: "This option enables you to specify a sequence of characters that will be parsed as null. By default, all empty columns in Memgraph are treated as empty strings, so if this option is not used, no values will be treated as null."You still need the
IS NOT NULLcheck in your query. TheNULLIFoption in theLOAD CSVclause only specifies how to treat a certain sequence of characters as null when loading the CSV file. It does not automatically filter out null values: