我对一个.CSV文件运行apoc.create.node。即使一个或多个节点由于重复键而失败,我也需要创建可创建的节点。有没有办法调用apoc.create.node,使其不会因为重复键而创建一个或多个节点时失败?
我运行此:
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(*)
,我得到这个
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'
.csv文件看起来像这样
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
不知道可以在apoc.load.csv做,但你绝对可以做,如果你使用“普通” LOAD CSV。 –
@TomGeudens是的,但如果我这样做,那么我不能这样做:https://stackoverflow.com/questions/45166907/how-to-use-a-csv-field-to-define-the-node-它是一个catch-22。 :) – nicomp