Ingres permite exportar datos de una instalación Ingres a otra (sin importar el SO fuente o de destino) con los comandos:
La diferencia entre estos dos comando es su amplitud:
- unloaddb comprende a todos los objetos de la base (comprendiendo las fuentes de las herramientas front end type ABF, OpenROAD o Report Writer, los catálogos Replicator, Star, etc.)
- copydb únicamente comprende a los objetos del que lo invoca (o del que se hace pasar por el que lo invoca)
Principio del funcionamiento de estos comandos
copydb
Ejemplo
copydb mabase matable
Este comando generará 2 archivos:
copy.in y
copy.out, así la tabla mitabla exista en la base mibase y está te pertenezca.
Estos ficheros contienen una serie de órdenes SQL:
copy.out :
- descarga de datos: COPY TABLE ... INTO ...
copy.in :
- creación de la tabla: CREATE TABLE ...
- estructura de la tabla (si fuera necesario): MODIFY ...
- subida de datos: COPY TABLE ... FROM ...
- creación del o de los índices (si fuera necesario): CREATE INDEX ...
Uso de estos ficheros
Para descargar datos:
sql mibase < copy.out
Para volver a cargar los datos:
sql mibase < copy.in
unloaddb
Ejemplo
unloaddb mibase
Este comando generará 4 ficheros:
copy.in,
copy.out,
reload.ing y
unload.ing (o
reload.bat y
unload.bat bajo Windows)
Al igual que en el comando
copydb, los archivos
copy.in y
copy.out contienen las ordenes SQL necesarias para la descarga de datos y la creación de objetos (todos los objetos: tablas, índices, reglas, procedimientos, etc.) así como par la recarga de datos. La diferencias es que
unloaddb genera también los programas para llamar a estos archivos conteniendo el código SQL.
Algunos consejos
1- Para realizar una copia portable de un SO a otro (no importa la versión, el tipo, el código ISO, etc.), utiliza la opción
-c (disponible para cada uno de estos dos comandos) que te permitirá exportar o importar datos en formato ASCII. Esto permite también imprimir directamente el archivo (no lo recomiendo), pero en todo caso es más legible con un editor de texto. Observa el formato de los comandos COPY TABLE con y sin esta opción, todo ocurre a este nivel.
2- Ten cuidado con las siguientes variables (lista no exhaustiva – observa en el entorno de Ingres con
ingprenv o en tu entorno local):
- II_DATE_FORMAT: formato de la fecha
- II_DECIMAL: Separador de decimales (Ingres es un producto americano, por defecto es el punto)
- II_MONEY_PREC: precisión de los datos de tipo money
- II_MONEY_FORMAT: format de los datos de tipo money (para indicar una divisa)
- II_NULL_STRING: texto utilizado para representar el valor nulo
Estas variables deben ser idénticas entre la máquina fuente y la de destino. Estas son utilizadas para formatear los datos al momento de exportarlos o leerlos al momento de importarlos. Por lo tanto necesitan ser compatibles…
3- Declara las mismas localizaciones: el mismo número, mismo nombre y mismo tipo. Los directorios pueden ser diferentes.
4-Extiende la base de destino a las mismas localizaciones que la base fuente: verifica las localizaciones de una y otra con el comando
infodb, utiliza
accessdb o
extenddb para extender la base.
5- Captura el resultado (stdout) en un archivo, y busca todas las líneas que comiencen con
E_. Esto indica un error en Ingres que debe ser analizado.
6- Si un reload (o copy.in) fracasa, ten en cuanta que si lo vuelves a ejecutar una parte de los objetos a crear quizás ya hayan sido creados.
PD: El
artículo original fue escrito por jpzuate, contribuidor de
CommentCaMarche