Delphi - Inserción masiva en BD

 
Vista:

Inserción masiva en BD

Publicado por Rafael Rueda Garcia (1 intervención) el 01/06/2006 19:43:55
Hola a todos,
Tengo un servidor de bases de datos Mysql y me conecto a el mediante ODBC y adoconnection, puedo realizar todas las funciones normales, insertar, eliminar, actualizar etc, pero necesito realizar una insercción masiva de mas de 100.000 registros y al realizarla el programa en delphi se bloquea, seguramente el codigo no sea el adecuado.

i:=1
while i<10000 do
begin
adotable1.append;
adotable1.fieldbyname('codigo').asinteger:=i;
adotable1.fiedlbyname('nombre').asstring:=grid.cells[0,i];
adotable1.post;
i:=i+1;
end;

Alguien tiene alguna solucion?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Inserción masiva en BD

Publicado por Edgar Rodriguez (172 intervenciones) el 02/06/2006 15:45:34
Bueno, por esa razón manejo mejor Interbase o Firebird.

Lo que puedes agregar a tu código dentro del while algo que permita devolver el control al proceso principal, es decir,

Application.ProcessMessages;

lo otro que hay que tener presente es que el grid tenga esa cantidad de filas... si el grid es el mismo de la tabla, estás sólo exprimiendo delphi equivocadamente.

Yo he podido llenar 2 millones de registros con un bucle incluso estando la tabla en otra parte de la red, se demora, pero lo hace, porque claro, son 2 millones, y la tabla era de FoxPro...

si es una base de datos relacional, recuerda que están supeditadas de un tamaño de página y es por esa razón que se bloquea, lo que debes hacer es verificar el tamaño de la página y enviar los registros necesarios y terminar la transacción por paquetes... no sé por qué siento que estás probando equivocadamente...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar