Je cours apoc.create.node contre un fichier .CSV. J'ai besoin que les noeuds qui peuvent être créés soient créés même si un ou plusieurs noeuds échouent à cause d'une clé dupliquée.Existe-t-il un moyen d'appeler apoc.create.node afin qu'il n'échoue pas si un ou plusieurs des noeuds ne peuvent pas être créés en raison d'une clé dupliquée?
je lance ceci:
CALL apoc.load.csv('FILE:///C:/Temp/Test/Test/Neo4jTest/import/Neo4j_AttributeProvenance.csv',{sep:","}) YIELD map CALL apoc.create.node([map.NodeType], {Key:map.Key, AttributeName:map.AttributeName, TableName:map.TableName, SchemaName:map.SchemaName, DataType:map.DataType, PreviousKey:map.PreviousKey}) yield node return count(*)
et je reçois ce
Neo4jUtils.ExecActionQuery().execute(): Failed to invoke procedure `apoc.create.node`: Caused by: org.neo4j.graphdb.ConstraintViolationException: Node(357) already exists with label `SubNode` and property `Key` = 'queryprocessingtest.ttablea.testDateTime'
Le fichier .csv ressemble à ceci
NodeType,Key,SchemaName,TableName,AttributeName,DataType,PreviousKey
RootNode,queryprocessingtest.q01.testDateTimeX,queryprocessingtest,q01,testDateTime,datetime,
SubNode,queryprocessingtest.ttablea.testDateTime,queryprocessingtest,ttablea,testDateTime,datetime,queryprocessingtest.q01.testDateTime
Je ne sais pas qui peut être fait dans apoc.load.csv, mais vous pouvez certainement le faire que si vous utilisez « simple » CSV CHARGE. –
@TomGeudens True, mais si je fais cela, je ne peux pas le faire: https://stackoverflow.com/questions/45166907/how-to-use-a-csv-field-to-define-the-node- label-in-a-load-statement, c'est un catch-22. :) – nicomp