Ocultar la SQL en un fichero de spool de Oracle
Problema
Si se llama un fichero SQl con @fichero nuestro fichero de spool, no tiene la SQL
cat sample.sql whenever sqlerror exit 2; whenever oserror exit 1; set pagesize 0 set linesize 9999 set echo off set trimspool on set trim on set feedback off set termout off spool 'hola.csv' select * from dual; spool off quit $ORACLE_HOME/bin/sqlplus usuario/passwd@schema @sample.sql
Nuestro fichero de salida hola.csv solo tiene
cat hola.csv X
Pero si lo llamamos desde un script
$ORACLE_HOME/bin/sqlplus usuario/passwd@schema <<EOF whenever sqlerror exit 2; whenever oserror exit 1; set pagesize 0 set linesize 9999 set echo off set trimspool on set trim on set feedback off set termout off spool 'hola.csv' select * from dual; spool off quit EOF
El fichero contiene la SQL
cat hola.csv SQL> select * from dual; X SQL> spool off
Para solventar el problema hay que llamar el SQLPlus con la opción -S
$ORACLE_HOME/bin/sqlplus -S usuario/passwd@schema <<EOF whenever sqlerror exit 2; whenever oserror exit 1; set pagesize 0 set linesize 9999 set echo off set trimspool on set trim on set feedback off set termout off spool 'hola.csv' select * from dual; spool off quit EOF
El fichero contiene la SQL
cat hola.csv X
Referencias
--Daniel Simao 17:07 20 mar 2012 (UTC)