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
|
||||
|
||||
Bueno, investigando un poco encontré esto, igualmente no funciona en Firebird 1.5.
Quisiera que me den una mano. How to insert multiple rows in a single statement? There are various approaches. For example, if you wish to insert these: 10 ten 11 eleven 12 twelwe you can use UNIONs: Please note that datatypes must match (esp. if you use Firebird 1.x). Lo encontré aqui. Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#2
|
||||
|
||||
Al intentar operar con el Insert propuesto, Firebird devuelve el siguiente error:
Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 3, char 1. UNION. line 3, char 1: Es donde empieza el primer "UNION" Esto SI funciona
Esto NO funciona Repito, uso Firebird 1.5
__________________
Uno es responsable de lo que hace y de lo que omite hacer. Última edición por santiago14 fecha: 24-05-2010 a las 00:05:26. Razón: Mejora en la sintaxis |
#3
|
||||
|
||||
Aunque funcione, es un poco engorroso, no?
|
#4
|
||||
|
||||
Si, es engorroso pero no encuentro una mejor manera de pasar todos los "detalles" a una tabla de una sola vez.
Actualmente hago un "for" sobre la grilla y voy pasando los valores al Insert y luego lo mando (viaja por la red, LAN en este caso) se inserta y doy otro giro del "for"... así hasta terminar. Al final, cierro la transacción. Si todo fue bien, un maravilloso cartelito de éxitos, sino, un cartel rojo con problemas. En una red LAN esto va bien, intento hacer lo mismo con Internet en el medio y la cosa cambia... Estoy intentando conectar una sucursal con la casa central a través de una VPN usando Internet en el medio. De ahí la cuestión. Bueno, gracias y sigo esperando...
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#5
|
||||
|
||||
Bueno, debo decir que tengo novedades...
Para empezar, desinstalé Firebird 1.5 y puse Firebird 2.1, hice la prueba y funcionó sin problemas. Pude insertar sin drama la expresión:
Muchas gracias. Cualquier cosa, estoy a su disposición.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#6
|
||||
|
||||
Cita:
"It works on 1.5 as well, make sure you put 3 spaces after "ten" Algo así como: Si trabaja en Firebird 1.5, asegúrese de poner 3 espacios después de "ten" En el ejemplo de la página no hay tres espacios, tampocon especifican si es antes o después de la comilla. Bueno, para el que tenga el mismo problema que lo pruebe con los espacios después de "ten" y me cuenta. Yo ya no tengo Firebird 1.5, con todas estas idas y vueltas lo saqué y puse Firebird 2.1. Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#7
|
||||
|
||||
La razón por la que hay que añadir esos tres espacios es para que las cadenas sean todas de la misma longitud. En caso contrario Firebird 1.5 no sabe que tipo debe ser el resultado de la unión.
Una forma más fácil de entender (aunque más larga de escribir) es hacerlo así : INSERT INTO table1 (col1, col2) SELECT 10, cast('ten' as varchar(20)) FROM RDB$DATABASE UNION ALL SELECT 11, cast('eleven' as varchar(20)) FROM RDB$DATABASE UNION ALL SELECT 12, cast('twelve' as varchar(20)) FROM RDB$DATABASE;
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#8
|
||||
|
||||
Exactamente guillotmarc, exactamente.
Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#9
|
||||
|
||||
Pues Santiago, creo que al olvidado la Ley de Costo-Beneficio. Una consulta bien hecha, con parámetros y preparada no va a significar mucha diferencia con respecto a una una inserción masiva. Sin embargo, acabo de imaginar la siguiente técnica: Pasar en formato CSV los valores a insertar a un procedimiento almacenado. Éste último se encargará se hacer las respectivas inserciones. Esta técnica no es muy practica y puede que valga la pena aplicarla si es que necesitas de estás inseciones masivas en un numero limitado de casos.
Saludos. |
#10
|
||||
|
||||
Habría que hacer algunas pruebas, pero creo que una inserción masiva es mas eficiente que un for con un insert unitario que vaya metiendo datos en la BD. Vuelvo a insistir, en una LAN la diferencia es mínima, pero si se quiere hacer algo mayor, digamos con Internet en el medio, es diferente.
__________________
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 |
|