Como formatar a saída do unix shell script televisão de arquivo que é gerado a partir de .arquivo sql no unix shell script

0

Pergunta

Eu tenho um unix shell script que extrai os dados do banco de dados com um .arquivo sql . Neste SQL que eu preciso para formatar o arquivo de saída com o CONJUNTO de comandos. Eu preciso de saída, de tal forma que a exibição da saída é com o cabeçalho de coluna sem qualquer espaçamento entre linhas no cabeçalho.

Resultado esperado:

Header1,header 2
Mark,California
Steve,India

A saída que eu vejo:(linha extra antes de cabeçalho e linhas pontilhadas depois de cabeçalho)

Header1, header 2
-----------------
Mark,California
Steve, India

Shell script:

ABC.sh
a=`sqlplus -silent $Database name @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 "subject" 
 [email protected]
(SQL file Gggg.sql is called and email is sent)

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 table1 where column = '5'`;
`SPOOL OFF`;
EXIT`;
bash header shell sql
2021-11-23 14:54:54
2
0

Supondo que a saída contém 5 linhas:


Header1, header 2
-----------------
Mark,California
Steve, India

você pode remover as indesejáveis linhas depois que eles são gerados usando sed (ou encontrar o caminho para fazer em sql, que é talvez a mais difícil)

ABC.sh | sed '1d;3d'

saída:

Header1, header 2
Mark,California
Steve, India
2021-11-23 17:34:14

Talvez a sua mais fácil de fazê-lo após a saída é gerada, mas eu preciso de uma maneira de fazê-lo na. Arquivo SQL apenas como .csv televisão de arquivo de saída gerado é necessário para estar no formato correto.
Milagrin
0

Pelo que eu entendi sobre a sua pergunta, você quer apenas um script SQL para o resultado com os nomes de coluna, seguido logo após por uma tabela de resultados, então você poderia simplesmente selecionar os nomes de coluna e UNION para a mesa de resultados como este:

SELECT 'Header1', 'header 2'
UNION
SELECT Header1, Header2 FROM TableName

Lembrete de que UNION'ed seleções precisam ter a mesma quantidade de colunas.

No caso de seu esquema de tabela é mais complexo do que algo simples como isto, seria necessário corretamente o detalhe é assim que a consulta deve funcionar como o esperado.

2021-12-02 21:22:38

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................