PDA

Ver la Versión Completa : como incrementar valor en ibdatapump


SmartZooft
30-09-2017, 01:26:31
Hola a todos, estoy copiando datos de una bd a otra, la pregunta es, alquien sabe como puedo incrementar el valor de un campo? específicamente es un campo llave de tipo entero que quiero se vaya incrementando en el proceso de copiado. Me salvarían la vida!
trabajo con interbase6 y estoy haciendo el copiado con ibDatapump 3.4
ojalá me puedan ayudar, muchas gracias.

Casimiro Notevi
30-09-2017, 10:24:09
Puedes tener un trigger en la base de datos que lo haga, mediante un generador. Es lo habitual.
Hay montones de ejemplos por los foros, aunque te paso un enlace (https://firebird21.wordpress.com/tag/incrementar/) de otro sitio que lo explica bien.

SmartZooft
03-10-2017, 18:37:45
Puedes tener un trigger en la base de datos que lo haga, mediante un generador. Es lo habitual.
Hay montones de ejemplos por los foros

Gracias casimiro, lo que quiero es que suceda dentro del datapump al hacer el copiado, aún así necesito hacer ésto que comentas?

Casimiro Notevi
03-10-2017, 18:43:11
Hace años que no uso ese programa, no recuerdo si tiene esa posibilidad.

SmartZooft
03-10-2017, 18:49:42
Hace años que no uso ese programa, no recuerdo si tiene esa posibilidad.

Gracias Casimiro.

ojalá alguien me pueda ayudar, me ahorrarían mucha talacha en Delphi!

Saludos

Casimiro Notevi
03-10-2017, 18:56:35
Debes hacerlo como te he dicho, es muy fácil y es lo que necesitas.
Además, ibdatapump no tiene esa opción porque acabo de ver la pantalla en su web.

SmartZooft
03-10-2017, 19:02:53
Debes hacerlo como te he dicho, es muy fácil y es lo que necesitas.
Además, ibdatapump no tiene esa opción porque acabo de ver la pantalla en su web.

Gracias, lo que hago actualmente es usar el datapump y las tablas que cambiaron sus llaves primarias las copio con una rutina en delphi. Precisamente esas rutinas son las que me quería ahorrar porque el datampump es muy rapido.

para ser mas claros, tengo una tabla que se llama historia y era hija de la tabla clientes, entonces tenía las llaves id_cliente y id_historia, pero decidimos separarlas, entonces ahora puse a la tabla historia un campo llave llamado id_consecutivo, por lo que necesito incrementar dicho campo. Datampump lo hace muy rapido pero no encuentro cómo incrementar ese campo llave en el bombeo.

espero no haber sido muy confuso.

Casimiro, imagino que estás ocupado pero si tuvieras un ejemplo básico de lo que me sugieres te lo agradecería infinitamente.

Gracias.

Casimiro Notevi
03-10-2017, 19:24:32
.. un ejemplo básico de lo que me sugieres te lo agradecería infinitamente.
En mi primera respuesta te puse un enlace.
Pero puedes buscar en los foros por "generator" y encontrarás varios hilos que se ha tratado el tema.
Es muy simple, no tienes que hacer nada en delphi, solamente crear un generador en la base de datos y un trigger before insert para que lo ejecute (Todo en la BD destino).

CREATE GENERATOR GEN_TBAPUNTES_ID;
SET GENERATOR GEN_TBAPUNTES_ID TO 0;
/* tbApuntes */
CREATE OR ALTER trigger tbapuntes_bi0 for tbapuntes
active before insert position 0
AS
BEGIN
NEW.CODIGOAPUNTE = GEN_ID(GEN_TBAPUNTES_ID,1);
END

Otro (https://www.firebirdsql.org/manual/generatorguide-rowids.html) enlace.

SmartZooft
04-10-2017, 01:01:10
Muy bien, muchas gracias por tu ayuda!!

Saludos

SmartZooft
04-10-2017, 18:26:38
Hola a todos, ya lo logré y comparto la página donde encontré cómo hacerlo...

no tengo permitido etiquetar enlaces, así que se los pongo en texto...

clevercomponents.com/products/datapump/datapumpfaqs.asp#117

si tienen duda con gusto les puedo ayudar.

Casimiro Notevi
04-10-2017, 18:32:14
Hola a todos, ya lo logré y comparto la página donde encontré cómo hacerlo...
no tengo permitido etiquetar enlaces, así que se los pongo en texto...
clevercomponents.com/products/datapump/datapumpfaqs.asp#117
si tienen duda con gusto les puedo ayudar.
Me alegro.
Nada que ver con el enlace que te puse y ni con el código que te he adjuntado :rolleyes:

SmartZooft
04-10-2017, 19:57:30
Casimiro, me sirvió mucho lo de los generadores, al final si se usan y se crean a mano para luego usarlos en el DataPump.

te agradezco mucho la ayuda.