Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-04-2004
Igna Igna is offline
Miembro
 
Registrado: jun 2003
Posts: 27
Poder: 0
Igna Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 06-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 07-04-2004
Igna Igna is offline
Miembro
 
Registrado: jun 2003
Posts: 27
Poder: 0
Igna Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 07-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿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
Responder Con Cita
  #5  
Antiguo 08-04-2004
Nadie Nadie is offline
Miembro
 
Registrado: ago 2003
Ubicación: http://manchasenlapared.blogspot.com
Posts: 75
Poder: 21
Nadie Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 08-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #7  
Antiguo 08-04-2004
Nadie Nadie is offline
Miembro
 
Registrado: ago 2003
Ubicación: http://manchasenlapared.blogspot.com
Posts: 75
Poder: 21
Nadie Va por buen camino
ni idea... no uso esos componentes, ya se que deberia pero me da fiaca instalarlos :P
Responder Con Cita
  #8  
Antiguo 13-04-2004
Igna Igna is offline
Miembro
 
Registrado: jun 2003
Posts: 27
Poder: 0
Igna Va por buen camino
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.
Responder Con Cita
  #9  
Antiguo 13-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Igna
No sabía que se podía hacer como comenta Nadie
Pues mira que es raro. Es precisamente lo que te indique desde la primera respesta habiéndote incluso puesto un enlace directo a la parte del manual donde se describe la sintaxis.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:23:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi