0

ファイルエンドポイントを使用してデータベースにレコードを挿入することに関するクエリが 1 つあります。dbにjson型のレコードを挿入したい。json ファイルと、データベースに挿入したすべてのファイル データを作成します。私のクエリは、これらすべてのデータをデータベースに正常に挿入できますが、それは継続的に挿入されたデータであり、エラーが発生しましたキー 'PRIMARY' の重複エントリ '1'
どうすればこのエラーを解決できますか?データを再帰的に挿入したくない.どうすればよいですか?私はこれを一度だけしますか?次のフローを使用しました

**File->Json to Object->Splitter->Database**

私を助けてください

4

3 に答える 3

1

重複したエントリが確実に破棄されるように、(スプリッタの後に)べき等メッセージ フィルタを使用できます。json 表現に一意の識別子がある場合は、べき等メッセージ フィルターを使用します。

<idempotent-message-filter idExpression="#[entry.id]">
    <simple-text-file-store directory="./idempotent"/>
 </idempotent-message-filter>

それ以外の場合は、Idempotent Secure Hash Message Filterを使用します(ハッシュ値に基づいてメッセージをフィルタリングします)。

<idempotent-secure-hash-filter messageDigestAlgorithm="SHA26">
    <simple-text-file-store directory="./idempotent"/>
</idempotent-secure-hash-message-filter>

詳細については、次のリファレンスを確認してください。

于 2014-12-30T09:41:25.230 に答える
0

Mule で.ackクエリを使用すると、重複を簡単に確認でき ます...

.ackは、通常のクエリの直後に自動的に実行されるクエリです...

挿入クエリの直後に実行され、既に挿入されている行をチェックしてフラグを設定する .ack クエリを作成する必要があります...

ここで.ackクエリ でそれを行う方法を確認してください:- http://training.middlewareschool.com/mule/database-transport/
およびここで:- http://www.mulesoft.org/documentation/display/current/JDBC+ Transport+Reference#JDBCTransportReference-Acknowledgement

于 2014-12-30T08:00:46.807 に答える