Recuperar registros de un determinado cliente de la base de datos con Oracle sobre Windows 2000

Hola tinodba como te va, un gusto en saludarte, tengo un base de datos Oracle 8i sobre un Windows 2000 server, realizo backup todas las noches con el oracle import y el archivo que me genera pesa aprox. 4Gb y tiene extensión .DMP, nunca por suerte tuvimos que recurrir a nuestro backp hasta hoy... Pero no necesito levantar todo el backup, solamente los registros de un determinado cliente de cuatro tablas(de pagos, de prestamos, de cuotas y de asignación) que se encuentran en un mismo tablespace; necesito volver a poner en producción solo esos registros, no se... Algo así como, primero borrar todos los registros de ese cliente de esas tablas, y luego realizar el import pero con una clausula que diga que levante solo de una cuenta(identificador del cliente) determinada. Espero hayas comprendido mi pregunta, te estaré eternamente agradecido, muchas gracias de antemano. Saludos.
Diego.

1 respuesta

Respuesta
1
Si te entiendo bien, lo que quieres es recuperar una serie de registros de cada una de las 4 tablas que indicas. Supongo que esos registros tienen un campo "cod_cliente" o algo así que identifica cada registro con un cliente específico.
Se me ocurren 2 maneras, dependiendo que cual te venga mejor:
1) Importar todos los registros de esas 4 tablas par que inserte de nuevo las que se han borrado. Previamente debes desactivar las FK, poner ignore=y al ejecutar el "imp", y volver a activar las FK. Esto te permite insertar solo los registros que faltan, por eso te dará un montón de errores, porque intentará insertar los registros que ya existen en la tabla y darán fallo de violación de PORQUE... pero no pasa nada, solo que irá algo más lento.
2) Importar esas 4 tablas sobre un usuario temporal, y luego hacer inserciones entre esas tablas y las originales usando el "where" que tu quieras (por cliente, por fecha, etc).
Por ejemplo:
insert into USU_ORIGINAL.cuotas (select * from USU_TEMPORAL.cuotas where cod_cliente=10 and fecha >= sysdate-10)
Y luego borras el usuario y/o las tablas temporales para no dejar basura.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas