0

我有一个关于使用文件端点在数据库中插入记录的查询。我想在数据库中插入 json 类型的记录。我创建 json 文件和我插入数据库的所有文件数据。我的查询是我可以在数据库中成功插入所有这些数据,但是连续插入数据并发生错误 键“PRIMARY”的重复条目“1”
我该如何解决这个错误?我不想递归地插入数据。怎么能我只做一次?我使用了以下流程

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

请帮我

4

3 回答 3

1

就我个人而言,我会尽量避免使用简单消息存储的幂等过滤器,因为它会防止数据库中数据的潜在更新。

如果您的 DBMS 支持它,我会尝试使用 UPSERT 机制,该机制将有效地使您的查询具有幂等性。这可以在postgresqlmysql中使用 this 来完成。

于 2014-12-30T13:04:16.963 回答
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+传输+参考#JDBCTransportReference-Acknowledgment

于 2014-12-30T08:00:46.807 回答