Ambas tablas están dentro de la misma base de datos? si es así porque no lanzas un StoreProcedure que realice un insert de los datos desde delphi por cada registro dentro de un try..except..end para que si te devuelve un error al menos siga adelante y puedas tener referencia del mismo.
Ej.:
Código:
while not tabla.eof do
begin
try
with sp_actualiza do
begin
parambyname('codigo').Value = x;
parambyname....
prepare;
execproc;
close;
end;
except
on e: exception do
begin
memo1.lines.add('Registro no actulizado con Código :'+x')
memo1.lines.add(' *** '+e.message);
end;
end;
tabla.next;
end;
Yo tuve el mismo problema con un traspaso de datos y se me ocurrio lanzar un SP que hiciera el insert por cada registro de datos (317000 registros) y va siempre a la misma velocidad.
Espero que te sirva de orientación.
Saludos