Ver Mensaje Individual
  #1  
Antiguo 24-04-2023
ElDuc ElDuc is offline
Miembro
 
Registrado: jul 2004
Posts: 197
Reputación: 20
ElDuc Va por buen camino
Inserción masiva en Firebird

Hola a tod@s.

Necesito hacer una inserción de muchos datos y tengo el problema de que al paso que va puede tardar más de un año.

Yo pensaba que podía utilizar:

Código Delphi [-]
Query.Close;
Query.SQL.Text := 'SELECT * FROM MyTable WHERE Id=0;';
Query.Open;
For I := 0 To nRecords - 1 Do
    Begin
    Query.Insert;
    Query.FieldValues['Name'] := Value;
    ... ...
    Query.Post;
    End;

Pero, a partir de la primera inserción, me da error diciendo que intento acceder a una consulta cerrada y me obliga a hacer:
Código Delphi [-]
For I := 0 To nRecords - 1 Do
    Begin
    Query.Close;
    Query.SQL.Text := 'SELECT * FROM MyTable WHERE Id=0;';
    Query.Open;
    Query.Insert;
    Query.FieldValues['Name'] := Value;
    ... ...
    Query.Post;
    End;

Con lo cual me obliga a hacer una búsqueda y una inserción, pero yo no necesito hacer la búsqueda porque pueden haber registros repetidos.

¿Alguien sabe cómo puedo mejorar la velocidad?

Gracias.
Responder Con Cita