【问题标题】:Neo4j Batch Insert with node Labels in VB.NETNeo4j 在 VB.NET 中使用节点标签批量插入
【发布时间】:2015-01-03 04:16:13
【问题描述】:

我有一个现有的数据库,其中节点标记为“Person”,并且发布此批量插入工作(例如,节点与属性一起出现),但没有将节点标记为“Person”

[{"method":"POST","to":"/node","body":{"RN":"2","fullname":"Herman Allen Slumpff","surname":"Slumpff", 
"name":"Herman Allen","sex":"M","union_id":"309","mn":"1","bd":"19161207","dd":"19901127", 
"bp_id":"56","dp_id":"4441"},"ID":0}]

其实我可以迭代很多节点,用这个方法快速插入。但是,它们是无标签的笔记。

Neo4j 文档建议下面的请求应该有效,但它没有:

[{"method":"POST","to":"/node","body":{"RN":"2","fullname":"Herman Allen Slumpff", 
"surname":"Slumpff","name":"Herman Allen","sex":"M","union_id":"309","mn":"1","bd":"19161207","dd":"19901127", 
"bp_id":"56","dp_id":"4441","ID":0},{"method":"POST","to":"{0}/labels","body":"Person"}]

我正在使用 Neo4j 2.1.6。可能存在版本问题?

WebException 错误:远程服务器返回错误:(500) 内部服务器错误。

7

{
  "message" : "Unexpected character ('{' (code 123)): was expecting double-quote to start field name\n  
  at [Source: org.eclipse.jetty.server.HttpConnection$Input@1ffc119{HttpChannelOverHttp@1de8fe8 
  {r=2,a=DISPATCHED,uri=/db/data/batch},HttpConnection@b9f35c{FILLING},g=HttpGenerator{s=START}, 
   p=HttpParser{s=END,280 of 280}}; line: 1, column: 230]",
  "exception" : "JsonParseException",
  "fullname" : "org.codehaus.jackson.JsonParseException",
  "stacktrace" : [ "org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1433)", 
  "org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:521)", 
  "org.codehaus.jackson.impl.JsonParserMinimalBase._reportUnexpectedChar(JsonParserMinimalBase.java:442)",   
  "org.codehaus.jackson.impl.Utf8StreamParser._handleUnusualFieldName(Utf8StreamParser.java:1537)",   
  "org.codehaus.jackson.impl.Utf8StreamParser._parseFieldName(Utf8StreamParser.java:1227)",   
  "org.codehaus.jackson.impl.Utf8StreamParser.nextToken(Utf8StreamParser.java:495)", 
  "org.neo4j.server.rest.batch.BatchOperations.parseAndPerform(BatchOperations.java:152)", 
  "org.neo4j.server.rest.batch.NonStreamingBatchOperations.performBatchJobs(NonStreamingBatchOperations.java:49)", 
  "org.neo4j.server.rest.web.BatchOperationService.batchProcess(BatchOperationService.java:128)", 
  "org.neo4j.server.rest.web.BatchOperationService.performBatchOperations(BatchOperationService.java:77)", 
  "java.lang.reflect.Method.invoke(Unknown Source)", 
  "org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:139)", 
  "java.lang.Thread.run(Unknown Source)" ]
}

谢谢!

戴夫

【问题讨论】:

  • 我已经解决了这个问题。我首先批量插入节点,然后查询它们。然后,我遍历节点,通过它们的属性确定它们的类型,并使用动词 /node/{0}/labels 相应地分配标签。

标签: neo4j batch-processing


【解决方案1】:

您可能不小心将"id":0 从节点属性主体外部移动到节点属性主体内部?那么 {0} 就不能再引用 job-id 0 了。

[{"method":"POST","to":"/node",
  "body":{"RN":"2","fullname":"Herman Allen Slumpff","surname":"Slumpff","name":"Herman Allen", 
  "sex":"M","union_id":"309","mn":"1","bd":"19161207","dd":"19901127","bp_id":"56","dp_id":"4441"},
  "id":0},
 {"method":"POST","to":"{0}/labels","body":"Person"}]

为了确定,请尝试一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 2016-09-26
    • 1970-01-01
    相关资源
    最近更新 更多