I'm a long-time graph person, but digging into Neo4j at the moment.
I am excited by graphs of infrastructure (physical and virtual) but will get enthusiastic about anything graph-y, so let's build something!
Aura supports apoc that that should be all good.
With regards to not creating the relationship - I suspect you need to OPTIONAL MATCH for the state nodes, so they will be created if they aren't there. If you MATCH and they are missing, the query term...
You should be able to do this using apoc.coll.zip. This will take your list and attach context to it as:
LOAD CSV WITH HEADERS FROM 'file:///file.csv' AS row
[snip]
// The zip returns a result of the format [["X", 123], ["Y", 456]]
UNWIND apoc.coll.z...
What happens when you PROFILE the query?
I'm running the below on the Movies DB (~200 nodes, but running with way less memory than you are talking about here so your 500 node example shouldn't be the end of the world) and this is about as sensible as...