使用OrientDB ETL更新顶点字段值

时间:2015-11-17 07:30:23

标签: etl orientdb

我正在尝试将简单的csv上传到Orient数据库实例中。我的要求是更新现有的顶点,如果" Name"属性已存在,否则创建新记录。

即使ETL执行没有任何异常,顶点中的IsDown属性也不会更新为新值。

如果我删除" skipDuplicates" :true,然后在尝试插入重复值时出现异常。 - 找到重复的密钥

我在CustomerService.Name上使用Unique_has_index

请建议如何使用OrientDB ETL更新Vertex的属性值

csv具有以下格式:

Name,IsDown
ABC,0
XYZ,0
ABC,0
DEF,0
FGH,0

json文件如下:

{  
config: {  log: "debug" },
"source" : { "file" : {"path": "C:\Users\innchoudh\Desktop\orientdb\customer.csv"}  },
"extractor" : {"csv": {} },
"transformers": [
 { "merge": { "joinFieldName":"Name", "lookup":"CustomerService.Name" } },
 { "vertex": { "class":"CustomerService", "skipDuplicates": true} }  ],
"loader" : {
"orientdb": {
  "dbURL": "remote:localhost/Smarts",
  "dbUser" : "admin",
  "dbPassword" : "admin",
  "dbType": "graph",
  "tx" : true,
  "batchCommit" : 1000
  }
 }
}   

我甚至尝试以不同的方式执行脚本,但这会抛出异常:

{  
 config: {  "log": "debug" },
"source" : { "file" : {"path": "C:\Users\innchoudh\Desktop\orientdb\customer.csv"}  },
"extractor" : {"row": {} },
"transformers": [
  {"csv" : {"separator" : "," , "skipFrom" :1, "skipTo" :1 }}
  { "log": {} }
 "command" : { "command" : "UPDATE CustomerService set   CustomerService.IsDown = $input.IsDown UPSERT where CustomerService.Name = $input.Name"} 
],
"loader" : {
  "orientdb": {
    "dbURL": "remote:localhost/Smarts",
    "dbUser" : "admin",
    "dbPassword" : "admin",
    "dbType": "graph",
    "tx" : true,
    "batchCommit" : 1000
  }
}
}

0 个答案:

没有答案