Ver Mensaje Individual
  #1  
Antiguo 21-09-2010
TaaDow TaaDow is offline
Registrado
 
Registrado: sep 2010
Posts: 8
Reputación: 0
TaaDow Va por buen camino
Arrow Vaciar contenido dataset a otro

Buen dia,
cuento con dos motores(db1-oracle y db2-sqlserver05), con unas tablas equivalentes, debo vaciar el contenido de una tabla db1 a db2, para ello, utilizo esta funcion a la cual le paso los dos datasets, origen y destino, que cuentan con las misma estructura:
Código Delphi [-]
procedure TForm1.CopiarRegistro(sql_Origen :TSimpleDataSet; sql_Destino :TSimpleDataSet);
var
  larr_Valores : Variant;
  lint_Cursor : Integer;
  x            : Integer;
begin
  
  sql_Destino.Open;
  sql_Origen.Open;

 while(not sql_Origen.Eof) do
  begin
    larr_Valores := VarArrayCreate([0,sql_Origen.Fieldcount-1],VarVariant);
    for lint_Cursor := 0 to (sql_Origen.Fieldcount-1) do
      larr_Valores[lint_Cursor] := sql_Origen.fields[lint_Cursor].Value ;
      sql_Destino.Append ;

    for lint_Cursor := 0 to (sql_Destino.Fieldcount-1) do
      sql_Destino.fields[lint_Cursor].Value := larr_Valores[lint_cursor] ;
      sql_Destino.Post;
    sql_Origen.Next;
      sql_Destino.ApplyUpdates(-1);
   
   end;
 end;
El procedimiento funciona, pero al ejecutarse, hago la prueba cargando en el dataset una tabla de 6 columnas y 50 mil filas, y ejecuta la tarea en mas de 7 horas, lo que me parece exagerado, dado que si subo un csv manualmente, con esa misma informacion, no toma mas de 30 minutos, es mi primera experiencia programando el delphi, desearia conocer sus opiniones con respecto a la eficiencia del codigo, es esta es la solucion mas optima?

Agradezco sus sugerencias al respecto.
Responder Con Cita