If it's permissible for the BATCH_ID values to be generated automatically, increasing at each load, than this worked for me. The 10-minute interval in the sample must be adjusted for a specific load - to be precise, the download must complete within the specified interval, and the next download should not start in less than the specified time.
The disadvantage is that it noticeably slows down on large volumes - the price at which the MAX aggregate on each row is calculated.
LOAD DATA
...
INTO TABLE XYZ
(
...
BATCH_ID expression "(select nvl(max(batch_id) + 1, 1) from extra_instruments_party_to where create_date < (sysdate - interval '10' minute))",
CREATE_DATE SYSDATE
)
source
share