我正在尝试将简单的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
}
}
}