尝试将python中的列表插入Oracle数据库。我想将每个列表中的4个数据插入Oracle,如果有3个数据条目匹配,我想更新。如果它们不匹配,我想插入。
Equip_ID
Parameter_Name
Parameter_Value
Customer
因此,如果Equip_ID,Parameter_Name和Customer匹配数据库中已有的条目,那么对于这一项,我想更新参数值。如果它们不匹配,那么我想将所有数据插入到数据库中。这是我到目前为止,但它似乎没有工作。
MERGE INTO dbName.tableName
USING '26522931','Customer','Para001','99999'
ON (tableName.EQUIPMENT_NODE_ID = '26522931' AND tableName.STREAM_NAME = 'Customer' AND tableName.PARAMETER_NAME = 'Para000')
WHEN MATCHED THEN
UPDATE SET tableName.PARAMETER_VALUE = '99999'
WHEN NOT MATCHED THEN
INSERT (EQUIPMENT_NODE_ID,STREAM_NAME,PARAMETER_NAME,PARAMETER_VALUE) VALUES('26522931','Customer','Para000','99999')
答案 0 :(得分:1)
我的猜测是你想要这样的东西。如果您没有其他表可用作源,则需要从DUAL中选择数据。
MERGE INTO dbName.tableName
USING (select '26522931' equipment_node_id,
'Customer' stream_name,
'Para001' parameter_name,
'99999' parameter_value
from dual) src
ON (tableName.EQUIPMENT_NODE_ID = src.EQUIPMENT_NODE_ID
AND tableName.STREAM_NAME = src.STREAM_NAME
AND tableName.PARAMETER_NAME = src.PARAMETER_NAME )
WHEN MATCHED THEN
UPDATE SET tableName.PARAMETER_VALUE = src.parameter_value
WHEN NOT MATCHED THEN
INSERT (EQUIPMENT_NODE_ID,
STREAM_NAME,
PARAMETER_NAME,
PARAMETER_VALUE)
VALUES(src.EQUIPMENT_NODE_ID,
src.STREAM_NAME,
src.PARAMETER_NAME,
src.PARAMETER_VALUE)