10 列のOracle Table
名前があり、その主キーを構成します。ここで、 SQL ステートメントを使用してこのテーブルに挿入します。Consumer
column# 2, 3 and 4
Pandas Dataframe
Insert...On Duplicate Key Update
まず、pandas の NaN または NaT を Oracle None に変換してから、Dataframe の行をタプルに変換して挿入します。挿入中に主キー違反が発生した場合は、テーブルの最後の 4 列のみを更新する必要があります。
ここで使用しているコードは次のとおりです。
df1 = df.astype(object).where(df.notnull(), None)
rows = [tuple(x) for x in df1.values]
query = """INSERT INTO CONSUMER VALUES (:1,:2,:3, :4, :5, :6, :7, :8, :9, :10) ON DUPLICATE KEY UPDATE
DT = VALUES(:7),
AT = VALUES(:8),
OB = VALUES(:9),
UT = VALUES(:10)"""
dbcur.executemany(query, rows)
dbcon.commit()
ここで、DT、AT、OB、および UT は、テーブルの最後の 4 列の名前です。しかし、これは私に次のエラーを与えています:
cx_Oracle.DatabaseError: ORA-00933: SQL command not properly ended
誰かが私のコードの問題点を見つけて修正するのを手伝ってくれませんか? よろしくお願いします。