> ...turn off all constraints to ease the migration, end up with duplicate keys in the target table
because of mistakes, turn on constraints, errors.
[Emphasis added -- CRC.]
But that's a good thing, not a bad one -- it shows you you've made a mistake! Might even be you wouldn't have caught that mistake at all otherwise. How could it not be better to catch a mistake right as you made it and are still in the maintenance window to fix it, than to have it lingering undetected, getting ever more corrupt data, until it rears its head possibly years later, when some vital report shows your DB is full of garbage?