Export database to multiple files in same job Spring Batch

Export database to multiple files in same job Spring Batch

Problem Description:

I need to export some database of arround 180k objects to JSON files so I can retain data structure in certain way that suits me for later import to other database. However because of amount of data, I wanto to separate and group data based on some atribute value from database records itself. So all records that have attribute1=value1, I want to go to value1.json, value2.json and so on.
However I still haven’t figured out how to do this kind of job. I am using RepositoryItemReader and JsonFileWriter.

I started by filtering data on that attribute and running separate exports, just to verify that works, however I need to do this so I can automate whole process and let it work.

Can this be done?

Solution – 1

There are several ways to do that. Here are a couple of options:

Option 1: parallel steps

You start by creating a tasklet that calculates the distinct values of the attribute you want to group items by, and you put this information in the job execution context.

After that, you create a flow with a chunk-oriented step for each value. Each chunk-oriented step would process a distinct value and generate an output file. The item reader and writer would be step-scoped bean and dynamically configured with the information from the job execution context.

Option 2: partitioned step

Here, you would implement a Partitioner that creates a partition for each distinct value. Each worker step would then process a distinct value and generate an output file.

Both options should perform equally in your use-case. However, option 2 is easier to implement and configure in my opinion.

Rate this post
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept
Reject