![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Gracias Antonio
He querido retomar un poco el hilo del 2011 en el que al final me querias comprar un velero, jejeje... Pues como decia antes tengo una tabla nacional origen de los datos con campos varchar excepto un integer campos C1, C2, C3, C4...C14, esta tabla la lleno con datos procedentes de un fichero txt que me envian semanalmente, este tema tambien lo comentamos hace unas semanas y funciona a la perfección, luego tengo una tabla origen autonomica que se llena con el mismo sistema. Despues debo pasar los datos primero de la tabla nacional a la tabla destino con campos varchar nombre, apellido1, apellido2, etc codigo categoria integer. Si la tabla destino que es tabla sobre la cual trabajo, tiene datos entrados, pues el stored procedure me los actualiza en un santiamen, pero si el corredor no esta en la tabla ya que es nuevo de esta semana, debo insertarlo. Ademas una vez hecho esto debo insertar los datos procedentes de las tablas autonomicas que no existan en la tabla principal. El motivo es que las licencias de corredores las emite la RFEC pero las autonomias, emiten unas licencias validas solo en la región correspondiente para carreras locales, un corredor con licencia autónoma vasca no puede participar en carreras andaluzas, por ejemplo y evidentemente estos datos autonómicos no figuran en las tablas RFEC, por esos se deben añadir. Aquí mi problema. No se si se entiende bien el problema, antes yo hacia la actualización con locate y sql y me podia ir a comer mientras el proceso estaba en marcha, una vez implantado el update con procedimeiento almacenado el tiempo de actualización es casi imperceptible de ahí que me gustaría hecer los insert con un sistema parecido. Este es el codigo del procedure para actualizar: Saludos Última edición por ecfisa fecha: 16-07-2013 a las 18:15:00. Razón: Quitar caritas del código |
|
#2
|
||||
|
||||
|
Perdona, pero esta calor no me deja pensar bien
![]() El caso es que no acabo de entender exactamente el proceso. ¿Tienes los datos de los ciclistas en una tabla y quieres insertarlo en otra distinta?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#3
|
||||
|
||||
|
Mas o menos.
Explico el proceso: 1- Obtengo el txt nacional y lo cargo en una tabla temporal de firebird 2- Obtengo los txt autonomicos y los cargo en unas tablas temporales (una por autonomia) ya que los datos pueden variar en su formato 3- Paso los datos de la tabla temporal nacional a la tabla general de trabajo 4- Paso los datos de las tablas autonomicas a la tabla principal de trabajo, es decir quiero añadir los corredores que no tienen licencia nacional pero si autonómica. Los pasos 3 y 4 es donde demoro mucho tiempo en actualizar, si la tabla tiene datos pues estos se actualizan sin problema con el stored procedure, pero si los datos no existen se deben añadir y no se como hacerlo. He dudado en si seria mejor borrar toda la tabla principal y hacer un insert masivo de los datos nacionales y luego solo insertar los autonomicos que no figuren en la misma, pero estoy en el mismo punto de inflexión, no se como ejecutar estos procesos sin un update con sql el cual me lleva mucho tiempo en realizarse. Gracias de nuevo Josep Última edición por jafera fecha: 16-07-2013 a las 19:32:02. |
|
#4
|
||||
|
||||
|
Seguramente lo más rápido es borrar la "nacional" y luego hacer inserts de las "autonómicas". Te ahorras buscar en cada uno y actualizar en los que ya existen.
Puedes hacer un select de todas las tablas "autonómicas" con inner join y luego un insert, por ejemplo, algo parecido a esto:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#5
|
||||
|
||||
|
Cita:
Esto seria ideal si se recibieran todas las autonomias, pero habitualmente cada una trabaja con la tabla nacional más la tabla de su autonomía como máximo la vecina. Sigo dandole vueltas ya que me guste o no debo basarme en la tabla nacional que es la maestra, la que recoge la gran mayoria de practicantes del ciclismo y luego complementarla con la de la autonomía (cada usuario basicamente la suya). Si cada semana borro la tabla general y la recargo con la llegada del nuevo txt, tengo la tabla nacional al dia pero luego debo añadir los datos autonomicos, no se que es lo más rápido si un borrado y un insert o un update. La tabla nacional actualmente gira por los 60.000 registros y el update tarda unos 3 o 4 minutos. No se a mi el calor puede que tampoco me deje pensar, esto unido a mi falta de experiencia en estos menesters sql pues me deja bastante bajo de moral y a punto de abandonar el barco, este proyecto ya ha estado mucho tiempo en dique seco por este problema y ahora lo he querido retomar despues del campeonato de España, pero creo que lo aparcaré de nuevo hasta el año próximo antes del nuevo campeonato pues me veo completamente ofuscado y vencido por el Sr. SQL. En mi negocio tengo tambien un sistema realizado en delphi corriendo en FB 1.5 y hay procesos parecidos que se realizan en un tiempo prudencial. Este es que me saca de quicio y creo que debe haber un sistema para efectuar estos inserts o updates más rápidos, hasta un programa de carreras que usamos hecho con VB y tablas access es más rápido y los datos a procesar son los mismos origenes (txt). No se lo dejaré por hoy y mañana será otro dia. Gracias y saludos Josep |
|
#6
|
||||
|
||||
|
Hombre, si quieres más precisión, entonces mejor danos información de las tablas implicadas.
Y recuerda que con firebird también tienes la sentencia: update or insert No abandones el barco, eso es lo último, ya sabes ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#7
|
||||
|
||||
|
Bunos dia a todos.
Gracias por los ánimos, no voy a abandonar el barco, soy el capitán y me hundo con él, jejeje... Siguiendo con el problema paso a detallar la creación de las tablas: Tabla temporal donde cargo el archivo txt nacional (a dia de hoy +o- 60.000 registros)
Tabla temporal donde cargo el archivo txt autonomico, (a dia de hoy +o- 20.000 registros de los que muchos estan en el txt nacional)
Tabla destino donde debo insertar o actualizar los datos procedentes primero de la nacional y luego los que no existan de la autonomica
A ver si así se puede ver de una forma más clara que proceso debo realizar para llenar esta tabla CTR0003 con los datos de CTR0003E y luego con los que no estén en CTR0003E de CTR0003C Saludos y gracias por vuestro tiempo Josep |
|
#8
|
||||
|
||||
|
Cita:
![]() Pero no pierdo la esperanza , de momento tengo ya titulación ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#9
|
||||
|
||||
|
Eso es importante, yo to tampoco tengo barco pero si título, ya se sabe en casa del herrero cuchara de palo.
![]() ![]() |
|
#10
|
||||
|
||||
|
Cita:
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Aportación del código de un stored procedure para conversión literal de números | birmain | Firebird e Interbase | 12 | 16-07-2015 19:12:29 |
| Insertar desde una tabla con loop en stored procedure | Fita | Firebird e Interbase | 2 | 04-06-2013 00:39:23 |
| Problema con Stored Procedure para actualizar tabla con datos de otra tabla. | Adrian Murua | MySQL | 4 | 04-02-2012 02:54:49 |
| Insertar en Un Stored Procedure | DasGrun | Firebird e Interbase | 7 | 13-12-2011 23:46:20 |
| Stored Procedure !!! | Ledian_Fdez | C++ Builder | 0 | 02-03-2010 14:01:29 |
|