You can try using my HamLog or QSL card system's import function. Currently, it supports automatic file splitting and uploading, but I haven't tested with 20m files yet. If you could also help me test its performance under load, that would be great! (Haha)
The export function also supports filtering by date.