I'd do it with VBA, e.g.
Code:
(1) Turn the Hourglass on. (Without this, your program will just appear to be idle.)
(2) Turn Warnings off.
(3) Create a snapshot recordset of the source table.
(4) create a loop which ends after all records in the snapshot have been exhausted.
(5) Create an inner loop which
(a) Deletes the next target table, if it exists, and creates it a new one as a dynaset from a list of names or a dynamically created name, e.g. File1, File2, File3,.... (An error will fire if you try to delete it and it does not exist. Trap that error and resume where the code left off.)
(b) Cycle through the nth 5,000 records of the snapshot, appending then recod by record (using AddNew & Update) to the current target.
(6) end of outer loop.
(7) Add an error exit which traps the error for deleting a non-existent file, as well as general errors.
(8) Turn the Hourglass on.
(9) Turn Warnings off.
You can do this with queries and joins, which I wouldn't advise because complex SQL strings would have to be built dynamically.
The suggested fat-dumb-happy method will work fine. "KISS" (keep it simple stupid) methods always work well with modern PCs).
The suggested method will take minutes, not hours to run.
Don't ask for the specific code. That's you job. I will answer specific narrow questions.