Clarion - Insert masivos

 
Vista:

Insert masivos

Publicado por Marco (155 intervenciones) el 20/07/2018 03:47:00
Hola a todos, estoy trabajando con Clarion 10 y firebird 3.0 con la tecnica de la tabla boba.
Mi problema es que tengo un archivo .csv que contiene 15.000 registros, que lo paso a un queue y lo hace en segundos, pero cuando el queue paso a la base de datos me tarda 50 minutos aprox.
El codigo que utilizo es parecido al siguiente:

1
2
3
4
loop r# = 1 to records (q_datos)
       get(q_datos,r#)
      respuesta{prop:sql}='insert into table campo1, campo2 values q_datos.campo1, q_datos.campo2'
end
donde respuesta es la tabla boba
Tarda un monton.
Desde ya muchas gracias
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
sin imagen de perfil
Val: 58
Bronce
Ha mantenido su posición en Clarion (en relación al último mes)
Gráfica de Clarion

Insert masivos

Publicado por Victor David (39 intervenciones) el 20/07/2018 21:16:54
Porque no lo insertas directamente con comandos clarion ?
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

Insert masivos

Publicado por Marco (155 intervenciones) el 21/07/2018 23:53:36
Hola Victor, porque con comandos Clarion es mas lento todavia
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
sin imagen de perfil
Val: 403
Oro
Ha mantenido su posición en Clarion (en relación al último mes)
Gráfica de Clarion

Insert masivos

Publicado por Marcelo Madelón (319 intervenciones) el 25/07/2018 14:35:36
Probaste con Rollback


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
LOGOUT(20,Rodeos01,Clasific)                 !Begin Transaction
    DO ErrHandler
!  cuando grabas
 
                IF  Access:ARodeos1.Update()
                    DO ErrHandler
                    MESSAGE('No Actualiza Cantidad de Animales del Rodeo  [ALIAS +] '&Rod:Rodeo,'Mensaje del Sistema',ICON:Exclamation)
                END
            END
 
!  Al final debes cerrar
 
 
 
   COMMIT                                                                      !Terminate successful transaction
    ASSERT(~ERRORCODE())
 
! Y en ROUTINES debes agregar el control de error
 
ErrHandler ROUTINE                               !Error routine
    IF NOT ERRORCODE() THEN EXIT.                !Bail out if no error
    Err" = ERROR()                               !Save the error message
    ROLLBACK                                     !Rollback the aborted transaction
    ASSERT(~ERRORCODE())
    BEEP                                         !Alert the user
    MESSAGE('Transaction Error - ' & Err")
    RETURN                                        !    and get out


Si te fijas en el Help lo tenes bien explicado.
Pero en el help falta un exit en lugar de

1
2
3
RETURN                                        !    and get out
 
EXIT                                              !    and get out
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