Generar sentencias SQL con Oracle sqlplus desde un script bash
Que mejor que volver al blog con una entrada livianita, luego de tanto tiempo sin escribir no hay nada mejor que comenzar por algo poco exigente, así no salgo huyendo de aquí para volver a aparecer luego de seis meses.
El artículo de hoy trata acerca de como hacer un script bash que se conecte a nuestra base de datos Oracle, ejecute unas sentencias SQL cuya salida sean sentencias SQL en si mismas, y que dichas salidas se escriban directamente en un archivo de texto plano.
El artículo de hoy trata acerca de como hacer un script bash que se conecte a nuestra base de datos Oracle, ejecute unas sentencias SQL cuya salida sean sentencias SQL en si mismas, y que dichas salidas se escriban directamente en un archivo de texto plano.
- Básicamente lo que tenemos que hacer es crear un archivo de texto plano, asignarle permisos de ejecución y luego editarlo:
usuario@testsrv:~> touch generar_sentencias_sql.sh
usuario@testsrv:~> chmod 755 generar_sentencias_sql.sh
usuario@testsrv:~> vi generar_sentencias_sql.sh - Una vez abierto agregarle un contenido similar al que sigue:
#!/bin/bash
En el ejemplo anterior el script genera las sentencias de inserción de los propios registros leídos de la tabla USUARIOS. Las rutas especificadas para las variables USERS_FILE y ORACLE_HOME son solamente de referencia, así como la propia sentencia SQL.
# Script para generacion de sentencias SQL de creacion automatica de
# usuarios del motor de base de datos a partir del contenido de una tabla.
USERS_FILE=/tmp/usuarios.sql
# Se exportan variables de entorno para Oracle 11G.
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
# Se llama a la herramienta sqlplus y se ejecuta la sentencia SQL especificada.
$ORACLE_HOME/bin/sqlplus -S "mi_usuario/mi_contrasenia@orcl" << EOF > $USERS_FILE
set linesize 500
set pages 0
set heading off
set feed off
SELECT ('INSERT INTO USUARIOS (LOGIN_USUARIO, NOMBRE_USUARIO) VALUES ('||U.LOGIN_USUARIO||', '''||U.NOMBRE_USUARIO||''');') AS INSERCION_USUARIOS
FROM USUARIOS U
WHERE U.LOGIN_USUARIO <> 'X';
EOF - Ahora ya solo nos resta ejecutar el script desde el intérprete de comandos o desde el programador de tareas automáticas crontab y debería funcionar:
usuario@testsrv:~> ./generar_sentencias_sql.sh
Por último verificamos que el archivo usuarios.sql contenga las sentencias SQL esperadas.usuario@testsrv:~> vi /tmp/usuarios.sql
Este comentario ha sido eliminado por un administrador del blog.
ResponderEliminar