You might consider another option:
Change code so it is not one single transaction (move delete part, top 3 lines, to sub-procedure). This way number of records will not be an issue.
If you need to undo upload on error, then just call delete sub-procedure when you encounter error, or output...