MultiResourceItemReader - 只读特定文件
MultiResourceItemReader - read only specific files
我有一个任务需要将新的 CSV 文件加载到数据库中。如果文件已经加载到数据库中,则应忽略该文件。目前,我正在加载所有 CSV 文件。
// daily/*.csv
@Value("${dailyExportDirPath}")
private Resource[] inputResources;
@Bean
public MultiResourceItemReader<DailyExport> multiResourceItemReader(FieldSetMapper<DailyExport> testClassRowMapper) {
MultiResourceItemReader<DailyExport> multiResourceItemReader = new MultiResourceItemReader<>();
multiResourceItemReader.setName("dailyExportMultiReader");
multiResourceItemReader.setDelegate(reader(testClassRowMapper));
multiResourceItemReader.setStrict(true);
multiResourceItemReader.setResources(inputResources);
return multiResourceItemReader;
}
我想创建一个 table 来包含所有已加载的文件。因此,作业将创建一个仅包含新报告的资源数组,而不是使用目录中的所有现有 CSV 启动资源数组。
目录中的所有报告 – 数据库中的报告 = 需要加载的新报告。
如何优化资源数组,使它们只包含相关文件,即新文件?
谢谢
假设您有一个 table 用于文件元数据,另一个用于文件内容(FK 返回文件元数据 table),您可以简单地使用当前日期作为文件 ID元数据 table。然后数据库将在文件元数据 table 中插入重复行的任何尝试失败,你抓住它,并继续处理其他文件。
我有一个任务需要将新的 CSV 文件加载到数据库中。如果文件已经加载到数据库中,则应忽略该文件。目前,我正在加载所有 CSV 文件。
// daily/*.csv
@Value("${dailyExportDirPath}")
private Resource[] inputResources;
@Bean
public MultiResourceItemReader<DailyExport> multiResourceItemReader(FieldSetMapper<DailyExport> testClassRowMapper) {
MultiResourceItemReader<DailyExport> multiResourceItemReader = new MultiResourceItemReader<>();
multiResourceItemReader.setName("dailyExportMultiReader");
multiResourceItemReader.setDelegate(reader(testClassRowMapper));
multiResourceItemReader.setStrict(true);
multiResourceItemReader.setResources(inputResources);
return multiResourceItemReader;
}
我想创建一个 table 来包含所有已加载的文件。因此,作业将创建一个仅包含新报告的资源数组,而不是使用目录中的所有现有 CSV 启动资源数组。
目录中的所有报告 – 数据库中的报告 = 需要加载的新报告。
如何优化资源数组,使它们只包含相关文件,即新文件?
谢谢
假设您有一个 table 用于文件元数据,另一个用于文件内容(FK 返回文件元数据 table),您可以简单地使用当前日期作为文件 ID元数据 table。然后数据库将在文件元数据 table 中插入重复行的任何尝试失败,你抓住它,并继续处理其他文件。