Yes, there are a few different tools out there on the AppExchange and elsewhere that allow you to upload related records in a single pass. Services like Sesame Software's Relational Junction, Informatica, and Dataloader.io can do this, and have varying costs depending on how much you want to migrate. Please do appropriate research before selecting a service; the named products are simply examples, not an endorsement for any particular service.
Migration using Salesforce DX is possible with its force:data:tree:export and force:data:tree:import commands, but works better with small batches (hundreds to thousands of records). However, there's no real GUI for it, so you have to do a bit of typing to get things done.
The Apex Data Loader doesn't do this out of the box, but with some work in Excel you could do this manually. I've successfully migrated a few hundreds of thousands of records in just a day or so manually, you just need to be aware of how to map the old ID values to the new ones; I typically use External ID fields to keep my records straight until I'm done.