Comment faire pour formater la sortie de shell script unix plat de fichier qui est généré à partir d' .fichier sql dans le shell script unix

0

La question

J'ai un shell unix script qui extrait les données de la base de données avec une .fichier sql . Dans ce SQL j'ai besoin de formater le fichier de sortie avec un ENSEMBLE de commandes. J'ai besoin de la sortie de telle manière que l'affichage de sortie est avec l'en-tête de colonne sans aucun ou de l'espacement des lignes dans l'en-tête.

Résultat attendu:

Header1,header 2
Mark,California
Steve,India

La sortie que je vois:(ligne supplémentaire avant d'en-tête et les lignes en pointillés après-tête)

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

En supposant que votre sortie contient 5 lignes:


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

vous pouvez supprimer les lignes indésirables après ils sont générés à l'aide de sed (ou de trouver le moyen de le faire en sql qui est peut-être plus difficile)

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

sortie:

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

Il est peut être plus facile de le faire après que la sortie est générée, mais j'ai besoin d'un moyen de le faire à la. Fichier SQL que comme l' .csv fichier plat sortie générée est nécessaire pour être dans le bon format.
Milagrin
0

De ce que j'ai compris à propos de votre question, vous voulez juste un script SQL de résultat dans vos noms de colonne, suivie juste après par un tableau de résultats, de sorte que vous pouvez simplement sélectionner la colonne des noms et des UNION pour les résultats de la table comme ceci:

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

Rappel UNION"ed sélections doivent avoir le même nombre de colonnes.

Dans le cas où votre schéma de la table est plus complexe que quelque chose de simple comme ça, vous devez correctement détail afin que la requête ne fonctionnent pas comme prévu.

2021-12-02 21:22:38

Dans d'autres langues

Cette page est dans d'autres langues

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