Creo que ganarás más tiempo si usas parámetros en lugar de componer la sentencia, más o menos, algo parecido a este ejemplo:
Código Delphi
[-]dataset.close;
dataset.sql.text:='insert into tabla values :campo1, :campo2, campo3';
dataset.prepare;
while not eof(loquesea) do
begin
dataset.paramsbyname('campo1').value := loquesea;
dataset.paramsbyname('campo2').value := otroloquesea;
dataset.paramsbyname('campo3').value := algoloquesea;
dataset.execquery;
end;
dataset.transaction.commit;