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
|
||||
|
||||
Insert múltiple (o masivo)
Buenas, la duda es la siguiente:
¿Se puede hacer un insert masivo en Firebird 1.5? La idea sería poder hacer algo así: (como en MySQL, por ejemplo)
Nunca he podido armar algo parecido, así me libero de hacer un for y enviar un insert por vez. Esto lograría que fuéramos una sola vez hacia el servidor firebird e insertar todos los valores de una sola vez. Bien, espero haber sido claro. Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#2
|
||||
|
||||
Que yo sepa no se puede, ¿en qué casos puedes necesitar hacerlo así?
|
#3
|
||||
|
||||
Cita:
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... Última edición por defcon1_es fecha: 19-05-2010 a las 12:57:06. |
#4
|
||||
|
||||
Sí, en eso tienes razón, aunque una sentencia de insert como la que ha puesto santiago14 no la había visto nunca
|
#5
|
||||
|
||||
Bueno, el caso puntual es de una factura (su detalle), la carga se hace renglón por renglón y se va acumulando en una grilla, en pantalla. Luego de esto, un botón de confirmación hace los controles correspondientes y recorremos la grilla con un FOR, por cada vuelta del FOR tengo que hacer un Insert, esto implica todo un tramiterío de la transacción hasta que vuelve a tomar el control mi software para así dar lugar al siguiente Insert.
Bien, creo que sería mas práctico "armar" una SQL con los datos que voy sacando de la grilla y enviarla una sola vez en el Insert. Esto no es descabellado, lo he visto en MySQL (la sintaxis no la recuerdo exactamente pero es algo parecido a lo que puse) y así evitamos tantas idas y vueltas para cargar los detalles. Bueno, espero haber aclarado la cosa. Si no hay forma en Firebird, ya está, habrá que ver la manera de minimizar los accesos a la BD en los casos de los Insert's. Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#6
|
||||
|
||||
Si también tienes que hacer el bucle para recorrer los registros y crear el insert... pues igual lo haces con firebird, tan sólo que ya lo insertas directamente sin tener que armar el sql de todos en conjunto
En fin, de todas formas, no se puede con firebird. |
#7
|
||||
|
||||
Cita:
Por ejemplo: Supongamos que tenemos la tabla> Artículo (ID,Nombre); lo normal para insertar datos es hacerlo asi: Si nos damos cuenta es un poco tedioso, por tal motivo algunos servidores de Bases de datos (MySQL por ejemplo) soportan las inserciones masivas, de tal manera que cuando se quiera insertar miles de registro de un golpe, sencillamente se puede utilizar una sintaxis SQL parecida a la siguiente: . Si nos damos cuenta ésto nos permite ahorrar sintaxis y sobre todo evitamos la saturación de estar insertardo uno a uno los registro, es éste caso se insertar todos de una sola vez. desde luego es recomendable utilizar transacciones para hacer las inserciones masivas, ya que cuando se está hablando de muchos registros, puede ocurrir que cuando nuestro servidor esté guardando la insercion ocurra un fallo y tengamos problemas, de ahí que es conveniente usar transacciones, O en todo caso si se tiene que insertar miles de registro, pues dividir la insercion en bloques por ejemplo de 1000 registros cada una para mayor seguridad. En lo personal he implementado desde delphi una inserción masiva, para lo cual he encontrado dos formas de hacerlo; en mi caso yo mando todos los registros a insertar dentro de una lista(un objeto TObjectList) a una funcion en la que hago es ir creando mi consulta SQL con los elementos de esa lista. A continuacion describo las dos formas con las que he logrado implememtar con mi funcion en particular: Primera forma de hacerlo: Creando muchos parámetros en la consulta SQL: Segunda forma de hacerlo: Usando la funcion Format de la unidad SysUtils, en este caso no se crea ningun parámetro en la consulta SQL, sino mas bien se arma la consulta SQL manualmente: Espero que le sirva como ejemplo al amigo santiago14.. Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Última edición por rgstuamigo fecha: 20-05-2010 a las 21:53:10. |
#8
|
|||
|
|||
Hola rgstuamigo, estaba checando tus procedimientos y me di cuenta de que utilizas el ZQuery, tiene este algo en especifico por el cual lo utilices, o funcionaria igual con el IBQuery?
|
#9
|
||||
|
||||
Mil gracias
Mi mas eterno agradecimiento, rgstuamigo, creo que tu PRIMERA SOLUCIÓN, es la que necesito.
Puesto que de esa manera trabajo un poco mas en el módulo del Insert y luego le mando una sola vez el paquete para que Firebird haga la inserción. Todo por supuesto bajo una transacción que controla la cosa. Igualmente, esto está hecho para Zeos, yo uso MDO así que voy a hacer las adaptaciones pertinentes y aviso que tal me fue. Agradezco desde ya a todos por su ayuda.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#10
|
||||
|
||||
Bueno, en principio para Firebird la forma propuesta no funciona. Estoy probando algunas opciones alternativas. Mañana les digo puesto que ya es medio tarde.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Insert masivo en firebird | santiago14 | Firebird e Interbase | 2 | 24-05-2010 02:50:29 |
Envio masivo de mensajes via web | supermanpy | Varios | 5 | 08-05-2010 19:00:26 |
Update Masivo... | BlueSteel | SQL | 9 | 30-10-2007 17:11:59 |
upload masivo | kayetano | PHP | 12 | 06-12-2006 16:45:39 |
Traspaso masivo de datos .DBF | eibarra | Conexión con bases de datos | 1 | 06-04-2005 16:06:59 |
|