Hacer un export (expdp) de una tabla de oracle restringiendo valores (query)

Objetivo

Añadir a nuestro export la posibilidad de filtrar datos mediante una consulta.

¿Cómo hacerlo?

En ocasiones necesitamos realizar un export(expdp) de un rango de valores concretos de una tabla en oracle. Para ello, al igual que podemos realizar consultas con la cláusula where para restringir la búsqueda con unos valores determinados, podemos incluir dentro de la opción query en nuestro export (expdp) cola cláusula where para hacerlo.

Para evitar errores del tipo:

ORA-39001: valor de argumento no valido
ORA-39035: Ya se ha especificado el filtro de datos SUBQUERY.

que muchas veces se deben a que no escapamos bien los valores, es recomendable crearnos un parfile donde se eliminarán estos problemas de sintaxis.

Ejemplo:

Queremos hacer un backup de una tabla llamada «compras» que tiene un campo fecha (timestamp) y sólo queremos guardar las compras realizadas en el año 2018 (año en curso).

Creamos un fichero con permisos de ejecución para oracle y escribimos lo siguiente:

DIRECTORY = export
DUMPFILE  = compras.dmp
LOGFILE   = compras.log
TABLES   = compras
QUERY     = compras:"where to_char(fecha,'YY') > 17"

Nota: Como vemos, con el parámetro query, indicamos que sobre la tabla compras queremos obtener las filas cuyo año sea mayor al 2017. Este resultado será guardado en el fichero compras.dmp en el directorio al que hayamos mapeado export.

Guardamos este fichero por ejemplo como parfilecompras.par y una vez realizado esto, podemos lanzar nuestro export

expdp system/********* parfile=parfilecompras.par

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *