2017-08-21 28 views
0

私はIBM Db2データベースシステムを使用しています。私はCSVファイルから読み込んだ後に塗りつぶす3列(1つの主キーなど)のテーブルを持っています。私のファイルから繰り返しデータを取得することがあるので、この場合は無視する必要があります。Db2:新しいデータを挿入して既存のデータを更新する方法は?

私の問題は、挿入または更新を行う正しいDb2 SQL文が見つかりませんでした。私の現在のソリューションで、私は私のコードで例外を取得:

DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=1;DB2INST1.TI_APGROUP_0, DRIVER=4.12.55

INSERTUPDATEへの簡単な方法はありますか?

答えて

0

私がしたいことをする解決策を見つけましたが、それが最良の方法かどうかわかりません!とにかく私はそれは同じ問題に直面しています誰を助けるために投稿したが、誰もが別の提案を持っているかどうそれは歓迎です:私はこのクエリをしようとしています

MERGE INTO KDDBD01.KDTCTCT AS CT USING (SELECT COUNT(ADR_MAIL_UTIL) FROM KDDBD01.KDTCTCT) ON (CT.ADR_MAIL_UTIL = :contactEmail) WHEN NOT MATCHED THEN INSERT (CT.ADR_MAIL_UTIL) VALUES (:contactEmail) 
1

Db2のIMPORTコマンドには、INSERT_UPDATEオプションがあります。 IMPORT commandについてここで読むことができます。

データが既にデータベースにある場合は、MERGEステートメントの使用を検討してください。

どちらのコンテキストでも、いくつかのルールに基づいて新しいデータを挿入し、既存のデータを更新します。

+0

: は 'KDDBD01 FROM ADR_MAIL_UTILを選択します(使用したCT AS KDDBD01.KDTCTCTにマージ。 )CT.ADR_MAIL_UTIL = CT1.ADR_MAIL_UTIL(ON CT1(ADR_MAIL_UTIL) AS KDTCTCT) THEN INSERT(CT.ADR_MAIL_UTIL) VALUES( 'ボワットメールgenerique') ' に一致したが、私は'警告を取得しない:DB2のSQL警告:SQLCODE = 100、SQLSTATE = 02000、SQLERRMC = null、DRIVER = 4.12.56 SQLState:02000 ErrorCode:100' –

+0

警告(SQLCODE = 100)は、行が見つからなかったことを意味します。それはエラーではありません。 – mao

+0

はい、私はそれが 'SELECT ADR_MAIL_UTIL FROM KDDBD01.KDTCTCT'が初めて実行するときに行を返さないので、それは完全に論理的だと思います!私の場合、データが存在しない場合にのみデータを挿入したいからです。私は混乱していますが、私はこのクエリの解決策を見つけることができません –

関連する問題