使用文件端点在db mule esb中插入记录
我有一个关于使用文件端点在数据库中插入记录的查询。 我想在数据库中插入json类型的记录。我创建json文件和所有插入数据库的文件数据。我的问题是我可以成功地在数据库中插入所有这些数据,但这是连续插入的数据,并且出现了错误,键“PRIMARY”的重复条目“1”使用文件端点在db mule esb中插入记录,mule,mule-studio,mule-component,Mule,Mule Studio,Mule Component,我有一个关于使用文件端点在数据库中插入记录的查询。 我想在数据库中插入json类型的记录。我创建json文件和所有插入数据库的文件数据。我的问题是我可以成功地在数据库中插入所有这些数据,但这是连续插入的数据,并且出现了错误,键“PRIMARY”的重复条目“1” 如何解决此错误?我不想递归插入数据。如何只执行一次? 我使用了以下流程 **File->Json to Object->Splitter->Database** 请帮助我您可以使用Mule中的.ack查询轻松检查副本
如何解决此错误?我不想递归插入数据。如何只执行一次? 我使用了以下流程
**File->Json to Object->Splitter->Database**
请帮助我您可以使用Mule中的.ack查询轻松检查副本 .ack是在正常查询之后立即自动运行的查询 您需要创建.ack查询,该查询将在插入查询后立即运行,并将检查已插入的行并设置标志 在此处检查如何使用.ack查询执行此操作:-
在这里:
您可以使用一个幂等式消息过滤器(在拆分器之后)来确保丢弃重复的条目。如果json表示具有唯一标识符,请使用幂等式消息筛选器
<idempotent-message-filter idExpression="#[entry.id]">
<simple-text-file-store directory="./idempotent"/>
</idempotent-message-filter>
否则,请使用幂等安全哈希消息筛选器(该筛选器将根据消息的哈希值筛选消息)
请检查以下内容以了解更多信息。就我个人而言,我会尽量避免使用带有简单消息存储的幂等过滤器,因为它会阻止数据库中数据的潜在进一步更新
如果您的DBMS支持它,我将尝试使用UPSERT机制,该机制将有效地使您的查询幂等。这可以用这个和这个来完成 谢谢你的回复。还有别的办法吗?因为我不想在我的数据库中创建一个额外的列(作为标志),谢谢你的回复。我能解决它。但我想停止执行死刑。它仍在继续..我如何解决此问题?考虑到您的信息,问题是您多次处理同一文件。如果从不同的文件更新数据库,请对文件名或其哈希使用拆分器之前的筛选器(这将丢弃已处理的文件)。如果您使用相同的文件(使用新内容更新),那么您必须使用此答案中的解决方案。您能给我举个例子吗?我必须使用哪个过滤器,以及如何知道文件已处理??另一个解决方案是配置文件端点以移动或重命名(命名模式失败)已处理的文件。这样可以确保已处理的文件不会再次“进入”端点。
<idempotent-secure-hash-filter messageDigestAlgorithm="SHA26">
<simple-text-file-store directory="./idempotent"/>
</idempotent-secure-hash-message-filter>