es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo dar formato a la salida del archivo plano de script de shell de Unix que se genera a partir del archivo .sql en el script de shell de Unix.

Tengo un script de shell de Unix que extrae los datos de la base de datos con un archivo .sql. En este SQL necesito formatear la salida del archivo con comandos SET. Necesito la salida de tal manera que la visualización de salida sea con el encabezado de columna sin ningún espacio o línea en el encabezado.

Salida esperada:

Header1,header 2
Mark,California
Steve,India

La salida que veo: (línea adicional antes del encabezado y líneas punteadas después del encabezado)

Header1, header 2

Mark,California
Steve, India

Script de shell:

ABC.sh
a=sqlplus -silent $nombre de la base de datos @Ggg.sql
mv xyz.csv xyz_$1.csv
dos2unix xyz_*.csv 2> /dev/null
(cat body.txt; uuencode xyz_$1.csv xyz_$1.csv) | mailx -s "asunto"
correo electrónico

(Se llama al archivo SQL Gggg.sql y se envía un correo electrónico)

Ggg.sql
Set pagesize 5000
Set linesize 700
Set trimspool off
Set heading on
Set feedback off
Set term off
Set verify off
Spool jjj.csv;
Select * from tabla1 where columna = '5';
SPOOL OFF;
EXIT;

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para formatear la salida del archivo SQL sin espacios ni líneas en el encabezado, es necesario modificar los comandos SET en el archivo Ggg.sql de la siguiente manera:

    SET PAGESIZE 0
    SET LINESIZE 1000
    SET TRIMSPOOL ON
    SET HEADING ON
    SET FEEDBACK OFF
    SET TERM OFF
    SET VERIFY off

    Esto eliminará el espacio adicional y las líneas en el encabezado y formateará la salida para que tenga encabezados de columna sin ningún formato adicional. Además, el PAGESIZE se establece en 0 para eliminar cualquier salto de página, y el LINESIZE se aumenta a un número mayor para evitar saltos de línea. El archivo Ggg.sql modificado debe verse así:

    SET PAGESIZE 0
    SET LINESIZE 1000
    SET TRIMSPOOL ON
    SET HEADING ON
    SET FEEDBACK OFF
    SET TERM OFF
    SET VERIFY off
    SPOOL jjj.csv;
    SELECT * FROM table1 WHERE column = '5';
    SPOOL OFF;
    EXIT;
    

    Una vez que modifique los comandos SET en el archivo Ggg.sql, la salida de la consulta SQL se formateará como se espera, sin líneas ni espacios adicionales en el encabezado.

Comments are closed.