2 scenarios:
1) wrap your data loads in transaction statements and don't commit until you've read the entire file. If it errors off, then rollback the load. That way, when the file is available again you can load the entire file.
2) write your database load with a lookup... if the record already exists, branch off to an update statement (or a trash destination)... if it doesn't exist, then send it to an insert.
Either of these solutions keep you from having to track what record you were on when a source file suddenly became unavailable.