![]() |
Buenas de nuevo.
He empezado con las pruebas, el insert a la tabla general ha funcionado de maravilla, en un tiempo record tanto desde el IBConsole como desde Delphi, un problema menos. Luego intento ejecutar el script siguiente en IBConsole y me da error at line 1 - conversion from string""
Creo que he seguido al pie de la letra las instrucciones de escritura del script en cuestión. No se donde puedo haberme equivocado. Gracias por vuestro tiempo Josep |
Desconozco los componentes IB*, pero si con el ibconsole funciona... No se sí habrá algún otro componente de esa familia que te permita hacerlo.
Si no es así puedes hacer una store procedure e invocarla desde el programa. Saludos |
Hola.
El error lo da en IBConsole, no en el componente. Cita:
Saludos |
Ok, no entendí bien. Por lo que te dice, estás intentando cargar un campo de un tipo en otro campo de otro tipo. Tendrás que identificar el campo y hacer un cast para convertirlo al tipo de dato necesario.
En definitiva, que dorsal coincida con el tipo de C1y así sucesivamente. Saludos |
Por cierto, puedes crear la base de datos con el 'character set' que quieras y te ahorras ponerlo en cada campo.
Además creo recordar (ahora mismo no estoy seguro) que también puedes poner el 'collate' en la creación de la bd.
También te puedes ahorrar poner los nombres entre comillas y entonces dará igual que los escribas en mayúsculas o minúsculas. Y si además usas dominios, entonces mucho más cómodo, pero eso lo dejo para otro momento :) Te lo comento porque me parece "un trabajo de chinos" repetir tantas veces lo mismo y estar pendiente de las comillas, mayúsculas, minúsculas, etc. |
He comparado las tablas y los campos C1 y C6 tienen diferente tipo que los datos en los que se cargan en la tabla destino. Tendrás que hacer un cast.
Saludos
|
Buenos dias a todos.
Viendo la respuesta de anoche, he efectuado el cambio en el campo COD_CAT, pasandolo a Integer en la tabla temporal, el otro campo DORSAL, sencillamente lo he quitado del Insert y al hacer la prueba en IBConsole ya no da el error de conversion, pero no tarda 15 segundos, se colapsa y lo aborto
Ahora si que me veo superado, yo que pensaba que iba por buen camino y que al final el San Benito saldría del taco de madera y por lo que veo me queda solo la astilla, (chiste antiguo malo, jejeje) NOTA: En IBConsole lo he dejado en marcha más de 8 minutos y nada, no acaba. En IBExpert más de lo mismo. Saludos Josep |
Una pregunta...
cuanto tarda la select del insert ? Sólo la select
y abusando un poco otra pregunta. Nos puedes poner los indices de las dos tablas ? Me da que no tendría que tardar casi nada, algo no está suficientemente ajustado. Un saludo |
Debería poner el código fuente de tu programa y datos para hacer pruebas, aunque ya sé que no puedes hacer eso.
|
La consulta select se hace bastante rapido, pero si lugo toco en el grid donde se muestran los datos en IBConsole, se cuelga.
El código fuente se podria poner, pero no creo que sea lo conveniente ya que aun está bastante verde el tema y el prpopósito del programa es muy especifico y no se si le servirá a mucha gente, talvez para chafardear solo. Lo que si puedo hacer es conectar con alguien con teamwiever o similar y verlo en directo El tema índices, pues las tablas temporales no tienen y la definitiva tampoco, no se exactamente donde crearlos Saludos Josep |
Cita:
Puedo suponer que no tendría que haber más de un ciento de corredores nuevos. Recuperarlos tendría que ser casi inmediato. Insertar hasta 300 registros... no sé, algo se nos escapa. A ver qué nos responde jafera. Un saludo |
Creo que lo que tarda es en devolver el select.
Os he dicho que era rápido epro solo los primeros registros, he hecho otra prueba y si navego por el grid, se me va parando a medida que voy bajando el curor. Si intento bajar la scrollbar de golpe es cuando se cuelga. No seran unos cientos registros, creo que seran unos miles. Me da la sensación de que es como si estuviera procesando los registros del select en bloques de unos 30 registros. Saludos |
Cita:
1. Revisa las tablas involucradas en la insert. Hablabas anteriormente de CTR0003, CTR0003E y CTR0003C, y no se´si por error hemos utilizado otras. 2.- ON (CTR0003C.C8 = CTR0003.DNI) Aquí supongo que te falta añadir el campo CODI_CAT, ya que según observabas en otra ocasión este campo interviene. 3.- Crea índices para CTR0003.DNI, CTR0003C.C8, CTR0003.CODI_CAT y CTR0003C.C6 y vuelve a ejecutar la select. Esto tiene que volar !!!! Si quieres probar rápido, omite el paso 2 y por sólo los índices para CTR0003.DNI y CTR0003C.C8. Queremos resultados YA !! :D Un saludo |
^\||/^\||/#:-)##:-)##:-)#||-||||-||||-||^\||/^\||/
Ole, ole y ole. Creo que se ha solucionado, indices, indices e indices. Yo confundia indices con primary_key. He puesto los indices en el campo referencia al DNI de las tres tablas et voilà los segundillos que decias. Ufff que alivio más grande ya ni tiro la toalla ni abandono el barco como las ratas....... Muchisimas gracias Josep |
Eres un crack...;)
Un saludo |
Como norma general, al menos deberían generarse índices para :
0.- Las primary keys , cuyos ínidices se generan automáticamente. 1.- Aquellos campos por los que se cruza información con otras tablas. Estos son todos los que participan en las JOIN entre tablas. Generalmente coinciden con foreign-keys. 2.- Indice sin repetición en el campo descripción para todas las tablas maestras tipo clave - descripción. 3.- Aquellos campos por los que se ordena habitualmente: nombre, población, ... Se debe tener en cuenta que añadir demasiados índices ( digo demasiados, no los necesarios ) puede ralentizar las inserciones. Un saludo |
Queriais resultados?
Pues aquí van los resultados cronometrados igual que una carrera, jejeje... 1-Inserción de 63.000 registros procedentes de fichero txt nacional, borrado de los registros que cumplan una condición, consulta para actualizar el campo nacionalidad y el campo fecha de nacimiento, (datos procdentes del codigo UCI) 15 segundos. 2-Inserción de 30.000 registros procedentes de fichero txt autonomico, borrado de los registros que cumplan una condición, consulta para actualizar el campo nacionalidad y el campo fecha nacimiento, (datos procedentes del codigo UCI) 5.5 segundos. 3-Insertar los 30.000 registros que quedan en la tabla temporal nacional a la tabla definitiva 9 segundos. 4-Insertar de los 4.000 registros que quedan en la tabla autonomica y que no esten en la definitiva 3 segundos. Ni me lo puedo creer, lo he realizado 7 u 8 veces porque me parecia imposible. Que contento estoy!!!!!!!! Como ya he dicho en algún que otro hilo anterior, pues eso, que MUCHAS GRACIAS!!!!!! y lo digo así de alto que no chillando. Saludos calurosos desde la Costa Brava Josep |
^\||/
. |
Te ha costado pero por fin lo has conseguido. ^\||/
Por aquí también mucho calor y mucha humedad, vamos, todo el día sudando. Sigue informando. Ahora planteare hacer la carga directamente desde los ficheros txt !! Un saludo |
Ah, y a ver sí gana algún paisano del Euskaltel alguna etapa del Tour
|
| La franja horaria es GMT +2. Ahora son las 11:57:08. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi