如何解决根据新记录和重复记录更新数据库中的列
我正在处理一个问题,其中我从文件夹中提取文件名列表并将其存储到数据库表中,此过程将每小时运行一次,因此如果有重复的文件名被读取,我将需要什么从文件夹中然后我不需要表中的任何重复记录,它只会更新旧记录,但是如果有任何新记录,它将插入记录。 我正在使用Spring Data Jpa,我知道可以通过使用saveAll方法自动完成它,但是我需要的是,如果文件重复,它将更新表中的另一列“说明”,该记录说明此记录已更新,但是当它正在插入一条新记录,并说一条新记录。
我想知道在不使用任何循环的情况下最有效的方法是什么。
解决方法
很容易就有一个异步作业,并且此异步作业存在于1个或多个应用程序实例的上下文中。您需要照顾几个问题:
-
正在读取文件的作业仅需要在应用程序的一侧运行。为此,您应该使用@Schedlock google它。
-
读取文件名后,需要针对数据库验证它们。此过程存在几种变体:
A)测试每个文件将导致每个文件1次选择查询,这可能是不希望的。
B)您可以从数据库中选择所有现有文件,然后您的工作就是将传入文件分为两组-存在的文件和不存在的文件。另一个选择是选择所有现有文件。
C)如果文件数量太大,以至于您无法立即有效地读取它。您可以创建第二个表“传入文件”,然后将所有传入文件保留在那里,然后使用“ SAVED_FILES”执行JOIN,以找出已经保存的文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。