fluent / fluent-plugin-sql

SQL input/output plugin for Fluentd
108 stars 58 forks source link

Oracle record update feature not available #73

Open suganyp07 opened 5 years ago

suganyp07 commented 5 years ago

I am using this plugin, Oracle instant client, ruby-oci8 and activerecord-oracle_enhanced-adapter. Below is the configuration used:

<match oracle.input>
@type sql
host xxx.xxxxxx.xxxxx.xxxx.net
port 1555
database test
adapter oracle_enhanced
username xxxxxxxxxx
password xxxxxxxxxx
<table>
table reg_as_data
column_mapping 'tn:tn,regtime:regtime,domain:domain,scscf:scscf,pcscf:pcscf,deviceip:deviceip,devicename:devicename,subscribertype:subscribertype,hss:hss,expires:expires,devicemac:devicemac,provgroup:provgroup,cmts:cmts,account_no,account_no,sub_id:sub_id,zipcode:zipcode,icmp_ping:icmp_ping,sip_ping:sip_ping'
</table>
 </match>

In 'reg_as_data' table, 'tn' is the primary key. With this setup, records are inserted into the table. However, when the same 'tn' sends updated data, the record is not getting updated. Error details given below for reference.

2019-06-07 11:05:03 +0000 [error]: #0 Got deterministic error again. Dump a record error_class=ActiveRecord::RecordNotUnique error="OCIError: ORA-00001: unique constraint (PDBADMIN.SYS_C0012535) violated: INSERT INTO \"REG_AS_DATA\" (\"TN\",\"REGTIME\",\"DOMAIN\",\"SCSCF\",\"PCSCF\",\"DEVICEIP\",\"DEVICENAME\",\"SUBSCRIBERTYPE\",\"HSS\",\"EXPIRES\",\"DEVICEMAC\",\"PROVGROUP\",\"CMTS\",\"ACCOUNT_NO\",\"SUB_ID\",\"ZIPCODE\",\"ICMP_PING\",\"SIP_PING\") VALUES ('2011010086',' 1559905418','xxxxxxx','scscfman2','pcscfman2','21.168.211.17','Load-Test1','BCV','hssman1','3600','mACB313E2ECCA','phil1',NULL,NULL,NULL,NULL,NULL,NULL)" record=#<Fluent::Plugin::SQLOutput::BaseModel_897089696::RegAsDatum tn: 0.2011010086e10, regtime: 0.1559905418e10, domain: "xxxxxxx", scscf: "scscfman2", pcscf: "pcscfman2", deviceip: "21.168.211.17", devicename: "Load-Test1", subscribertype: "BCV", hss: "hssman1", expires: 0.36e4, devicemac: "mACB313E2ECCA", provgroup: "phil1", cmts: nil, account_no: nil, sub_id: nil, zipcode: nil, icmp_ping: nil, sip_ping: nil>

Are there any configurations available to update records in ORACLE DB? Thank you.

repeatedly commented 5 years ago

Are there any configurations available to update records in ORACLE DB?

From the README, activerecord-import is not supported. https://github.com/zdennis/activerecord-import/#duplicate-key-update So hard to support upsert for Oracle in this plugin for now. I'm not sure AR 6's batch import supports upsert or not.