PDA

Ver la Versión Completa : Correcion De Datos Basado En Una Tabla Anterior


ALVARO RUBIO
06-03-2012, 22:19:51
Gracias por la colaboracion.

Tengo una base de datos en Interbase 7.5, dentro de la base entre otras tengo una tabla que se llama facturas, dentro de las facturas tengo las facturas tengo el tipo (tipo) que toman el valor F1, si son de contado y F4 si son de credito, el vendedor(Vend), la fecha (Fecha)y el numero (Bath) entre otros. Tengo una tabla que se llama clientes, que entre otros campos tiene NIT (Nit, Nombre del cliente (nombre), Vendedor (Vend).

Cometi un error y reemplaze el vendedor en las facturas tipo F1, cuando solo debia ser en las de tipo F4.

Tengo un backup de la base de datos, de una hora antes de hacer el cambio. Me podrian indicar si se puede tomar la tabla FACTURAS del backup, colocarla en la base de datos actual como tabla facturas1 y luego con un SQL, decirle que le coloque el vendedor de la tabla facturas1 en la tabla FACTURAS, para todos las F1 cuyo numero en Facturas sea igual al numero en Facturas1.

Uso la herramienta SQL explores y he usado alguna vez IBPUMP, se podria con esta herramientas o cual seria laoptima.

Gracias

ecfisa
06-03-2012, 22:43:43
Hola Alvaro.

Pareciera más simple restaurar el backup y rehacer la modificación, contemplando en la sentencia SQL que el tipo de factura sea igual a F4.

Saludos.

ALVARO RUBIO
06-03-2012, 22:53:12
Gracias

Despues del Backup se han realizado documentos en muchas otras tablas y se tendria que involucrar a mas personal para volver a colocar los documentos nuevos, ademas de que se tendria que detener la operacion para restaurar y hacer la actualizacion.

Alvaro Rubio

ecfisa
06-03-2012, 23:15:27
Entiendo.

Firebird permite restaurar a una nueva base de datos, pero desconozco si Interbase tiene esa posibilidad. Si fuera así, creo que una alternativa sería sobreescribir la tabla errónea tomando los datos desde la recuperada.

Saludos.

Casimiro Notevi
06-03-2012, 23:16:09
ademas de que se tendria que detener la operacion para restaurar y hacer la actualizacion.

Evidentemente, no queda otra opción si quieres hacerlo bien.
Puedes usar programas como ibpump para pasar los datos de una bd a otra, aunque siempre tendrán que parar de trabajar, obligatoriamente.

duilioisola
06-03-2012, 23:33:15
Puedes generar un script update con los datos de la base backup:
select 'update facturas set vendedor='||vendedor||' where bath='||bath||';' from facturas
Este select debería devolverte muchas lineas que puedes exportar a un fichero de texto y ejecutarlo en la base en la que has cometido el error.
Ten en cuenta que quizás debas desactivar algunos triggers:

alter trigger facturas_bu0 inactive;

update facturas set vendedor=1 where bath=1;
update facturas set vendedor=3 where bath=2;
update facturas set vendedor=2 where bath=3;
update facturas set vendedor=5 where bath=4;
update facturas set vendedor=1 where bath=5;
...

alter trigger facturas_bu0 active;