繁体   English   中英

无法在 python 中使用 cx_oracle 合并表

[英]Can't merge table using cx_oracle in python

我正在尝试使用 cx_oracle 合并两个表。 以下 sql 语言适用于 sql 开发人员工具:

 MERGE INTO ASBODS_SDDM_SCHEMA.EULA_DATA E
    USING (SELECT * FROM ASBODS_SDDM_SCHEMA.EULA_STG_DATA) ES
    ON (E.MASTER_METER_NBR = ES.MASTER_METER_NBR AND E.MASTER_ACCOUNT_NBR = ES.MASTER_ACCOUNT_NBR AND 
    E.METER_NBR = ES.METER_NBR AND E.ACCOUNT_NBR = ES.ACCOUNT_NBR AND E.EULA_DATA_TYPE_CD = ES.EULA_STG_DATA_TYPE_CD)
    WHEN MATCHED THEN
    UPDATE SET
    E.ACCEPTED_DT = ES.ACCEPTED_DT ,
    E.DECLN_OF_CONSENT_FLG = ES.DECLN_OF_CONSENT_FLG ,
    E.EULA_VERSION_NBR = ES.EULA_VERSION_NBR,
    E.SOFTWARE_VERSION_NBR = ES.SOFTWARE_VERSION_NBR,
    E.COMPANY_NM = ES.COMPANY_NM ,
    E.MACH_ID = ES.MACH_ID ,
    E.LOAD_DT = ES.LOAD_DT
    WHERE 
    E.MASTER_METER_NBR = ES.MASTER_METER_NBR AND E.MASTER_ACCOUNT_NBR = ES.MASTER_ACCOUNT_NBR AND 
    E.METER_NBR = ES.METER_NBR AND E.ACCOUNT_NBR = ES.ACCOUNT_NBR AND E.EULA_DATA_TYPE_CD = ES.EULA_STG_DATA_TYPE_CD

但是当我将这个 sql 插入 cx_Orcale 时:

import cx_Oracle

try:
    con = cx_Oracle.connect('username/pwd@server')
    cursor = con.cursor()
    cursor.execute(''' MERGE INTO ASBODS_SDDM_SCHEMA.EULA_DATA E
    USING (SELECT * FROM ASBODS_SDDM_SCHEMA.EULA_STG_DATA) ES
    ON (E.MASTER_METER_NBR = ES.MASTER_METER_NBR AND E.MASTER_ACCOUNT_NBR = ES.MASTER_ACCOUNT_NBR AND 
    E.METER_NBR = ES.METER_NBR AND E.ACCOUNT_NBR = ES.ACCOUNT_NBR AND E.EULA_DATA_TYPE_CD = ES.EULA_STG_DATA_TYPE_CD)
    WHEN MATCHED THEN
    UPDATE SET
    E.ACCEPTED_DT = ES.ACCEPTED_DT ,
    E.DECLN_OF_CONSENT_FLG = ES.DECLN_OF_CONSENT_FLG ,
    E.EULA_VERSION_NBR = ES.EULA_VERSION_NBR,
    E.SOFTWARE_VERSION_NBR = ES.SOFTWARE_VERSION_NBR,
    E.COMPANY_NM = ES.COMPANY_NM ,
    E.MACH_ID = ES.MACH_ID ,
    E.LOAD_DT = ES.LOAD_DT
    WHERE 
    E.MASTER_METER_NBR = ES.MASTER_METER_NBR AND E.MASTER_ACCOUNT_NBR = ES.MASTER_ACCOUNT_NBR AND 
    E.METER_NBR = ES.METER_NBR AND E.ACCOUNT_NBR = ES.ACCOUNT_NBR AND E.EULA_DATA_TYPE_CD = ES.EULA_STG_DATA_TYPE_CD
     ''') 
    con.commit()
    
    except cx_Oracle.DatabaseError as e:
    print('There is problem with sql', e)

finally:
    if cursor:
        con.commit()
        cursor.close()
    if con:
        con.close()
    

linux很久没有反馈了,好像一直在运行,不工作。

有朋友可以帮忙吗?

您是否在工具 session 中提交? 也许桌子被锁定了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM