![]() |
Ejecutar varios insert en MYSQL
Hola.
Estoy haciendo un programita en Delphi que ataca una BBDD mysql por internet. Lo que hace esta aplicación, es chequear un BBDD Oracle (local), e inserta los clientes nuevos que se han metido en dicha BBDD (todos aquellos que tienen su campo nuevo='T'). Además, después tambien actualiza otras tablas, pero el funcionamiento es el mismo. La aplicación funciona, pero el problema es el tiempo. Primero ejecuto una query para saber que clientes nuevos hay (aquí no hay problema), y después voy uno por uno añadiendolos en la BBDD mysql (aquí es donde tengo el problema). No se si mi forma de plantear el programa es la idónea. He intentado juntar todos los insert en un mismo Query, para optimizar la insercción, pero me da error (supongo que no se podrá hacer). Agradecería un poco de orientación, si es que a alguien se le ocurre una manera mejor para optimizar mi aplicación. Un saludo. |
En estos momentos no recuerdo la sintaxis pero seguro que se pueden insertar múltiples registros en MySql como puedes consultar aquí. También te puede interesar el comando load data infile que te permite insertar múltiples registros tomados de un archivo.
// Saludos |
Gracias por las respuestas.
Al final me he bajado de torry.net los componenetes Zeos (no los conocía, pero después de mirar muchos mensajes en este foro, decidí probarlos), y uno de ellos (ZSQLProcessor) es justamente lo que estaba buscando. Ahora mi aplicación va mucho más rápida, y es mucho más eficiente. Gracias de nuevo, y un saludo. |
¿Podrías poner un ejemplo de uso? Sería muy interesante para que los demás sepan usarlo ya que como viste Zeos es lo más usado para acceder a MySql.
// Gracias |
para insertar multiples registros con un solo insert la sintaxis es asi "insert into tabla (columna1, columna2, columna3) values ('dato1','dato2','dato3') ('dato4','dato5','dato6') ('dato7','dato8','dato9')....... ahi en vez de hacer un insert haces tres (o mas) y se te redice el tiempo de espera a un tercio
|
Gracias Nadie, sabía que esta era la sintaxis aunque no la recordaba por completo. Lo que no me queda claro es cómo interviene el ZSqlProcessor ya que la consulta tal como la pones se puede escribir directo en un ZQuery.
// Saludos |
ni idea... no uso esos componentes, ya se que deberia pero me da fiaca instalarlos :P
|
Siento responder tan tarde, pero no he leído las respuestas hasta hoy.
Yo lo hacía con varios inserts, en el ZSQLProcessor, en su propiedad script, escribía en tiempo de ejecución todos los insert, y depués lo ejecutaba. No sabía que se podía hacer como comenta Nadie, pero será cuestión de probarlo para ver si aumenta todavía más el rendimiento. De todas formas, también hay varias sentencias update, con lo que supongo que necesitaré el componente ZSQLProcessor (este componente me permite poner varias sentencias SQL agrupadas, y ejecutarlas después a la vez). Si el ZQuery es igual que los componentes que me bajé antes (no recuerdo su nombre ahora mismo), no te permitiría ejecutar varias sentencias a la vez (tampoco te deja un IBQuery, creo). Gracias de nuevo por las respuestas, y un saludo. |
Cita:
// Saludos |
La franja horaria es GMT +2. Ahora son las 15:50:29. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi