0

试图将 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')
4

1 回答 1

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) 
于 2013-07-31T14:32:40.107 回答