0

Python から Oracle データベースにリストを挿入しようとしています。各リストから 4 つのデータを Oracle に挿入し、3 つのデータ エントリが一致する場合は更新したいと考えています。一致しない場合は挿入します。

Equip_ID
Parameter_Name
Parameter_Value
Customer

この 1 つのエントリについて、Equip_ID、Parameter_Name、および Customer が既に DB にあるエントリと一致する場合は、パラメータ値を更新します。一致しない場合は、すべてのデータを DB に挿入します。これは私がこれまでに持っているものですが、機能していないようです。

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 に答える