Hola César.
No sé porque tengas esas clases de errores.
Pero prueba estó, dando por hecho que asi tengas el módulo de migración.
Código:
numREg <-- 1;
te conectas al dataset [DSOrigen](DB, archivo plano, xml) donde deseas importar.
mientras no sea DS.Origen.eof
numreg <--- numreg <--- 1
DSDestino.insert;
DsDEstino.FieldByname(X).AsValue := DsOrigen.FieldByname.Asvalue;
DsDestino.post;
SI numreg = 1000 (VALOR NO TAN CRITICO)
DSDestino.close;
TRASACCION.COMMIT;
DSDestino.open;
numreg <--- 0;
FIN SI
DSOrige.next
FIN MIENTRAS
DSDestino.close;
TRASACCION.COMMIT;
Si no, comentanos más el problmas que tienes, a lo mejor no estas haciendo commit, sino commitretaining y dejes muchas cosas abiertas.