format de sortie d'un SELECT dans sysdatabases
Posted in 2008
Topics: Server Administration
Translated from English by DrWatson — View original
Bonjour,
Je souhaiterais automatiser la tâche « montre-moi si mes bases de données sont en mode de journalisation avec tampon (buffered logging) ».
La commande
echo "select name, is_buff_log from sysdatabases \\\\
where name not in ('sysmaster','sysutils','stores_demo', \\\\
'sysuser') order by name;" | dbaccess sysmaster
renvoie :
========================
Database selected.
name db1
is_buff_log 1
name db2
is_buff_log 0
name db3
is_buff_log 1
3 row(s) retrieved.
Database closed.
========================
Existe-t-il une option de select, etc., permettant d'obtenir le résultat sous cette forme sans passer par un appel à awk :
db1 1
db2 0
db3 1
Merci
Werner
wjb a écrit :
> Bonjour,
>
> J'aimerais automatiser la tâche « montre-moi si mes bases de données sont
> en mode de journalisation avec tampon » (buffered logging).
>
> La commande
> echo "select name, is_buff_log from sysdatabases \\\\
> where name not in ('sysmaster','sysutils','stores_demo', \\\\
> 'sysuser') order by name;" | dbaccess sysmaster
> renvoie :
>
> ========================
> Database selected.
>
> name db1
> is_buff_log 1
>
> name db2
> is_buff_log 0
>
> name db3
> is_buff_log 1
>
> 3 row(s) retrieved.
>
> Database closed.
> ========================
>
> Existe-t-il une option de select ou autre permettant d'obtenir le résultat
> sous cette forme sans passer par un appel à awk :
Pourquoi ne pas utiliser la clause case dans l'instruction select ?
>
> db1 1
> db2 0
> db3 1
>
> Merci
> Werner
>
Madison Pruet a écrit :
> wjb a écrit :
>> Bonjour,
>>
>> Je souhaiterais automatiser la tâche « montre-moi si mes bases de données
>> sont en mode de journalisation bufferisée ».
>>
>> La commande
>> echo "select name, is_buff_log from sysdatabases \\\\
>> where name not in ('sysmaster','sysutils','stores_demo', \\\\
>> 'sysuser') order by name;" | dbaccess sysmaster
>> renvoie :
>>
>> ========================
>> Database selected.
>>
>> name db1
>> is_buff_log 1
>>
>> name db2
>> is_buff_log 0
>>
>> name db3
>> is_buff_log 1
>>
>> 3 row(s) retrieved.
>>
>> Database closed.
>> ========================
>>
>> Existe-t-il une option de select, ou autre, permettant d'obtenir le
>> résultat sous cette forme sans passer par un appel à awk :
>
> Pourquoi ne pas utiliser la clause case dans l'instruction select ?
Suis-je bête. Il faut sélectionner une sous-chaîne du nom de la base de données.
Sinon, c'est un varchar de 128.
>
>>
>> db1 1
>> db2 0
>> db3 1
>>
>> Merci
>> Werner
>>
user> Bonjour,
>
> J'aimerais automatiser la tâche « montre-moi si mes bases de données sont en
> mode de journalisation bufferisée ».
>
> La commande
> echo "select name, is_buff_log from sysdatabases \\\\
> where name not in ('sysmaster','sysutils','stores_demo', \\\\
> 'sysuser') order by name;" | dbaccess sysmaster
> renvoie :
>
> ========================
> Database selected.
>
> name db1
> is_buff_log 1
>
> name db2
> is_buff_log 0
>
> name db3
> is_buff_log 1
>
> 3 row(s) retrieved.
>
> Database closed.
> ========================
>
> Existe-t-il une option de select, etc., permettant d'obtenir le résultat sous cette forme sans
> passer par un appel à awk :
>
> db1 1
> db2 0
> db3 1
>
> Merci
> Werner
>
Vous pouvez utiliser l'opérateur de concaténation, comme ceci :
echo "select trim(name) || ' ' || is_buff_log from sysdatabases \\\\
where name not in ('sysmaster','sysutils','stores_demo', \\\\
'sysuser') order by name;" | dbaccess sysmaster
Je vais aussi ajouter le unload…
echo "unload to '/tmp/somefile' delimiter ' '
select name, is_buff_log from sysdatabases \\\\
where name not in ('sysmaster','sysutils','stores_demo', \\\\
'sysuser') order by name;" | dbaccess sysmaster
ne s'affiche pas sur stdout — il faudra donc faire un « cat » du /tmp/somefile..
(ou le traiter autrement — bien sûr, si votre système d'exploitation le permet, vous pourriez
faire un unload vers '/dev/tty' à la place :-)
Le mardi 08 janvier 2008 18:30:51, wjb a écrit :
> Bonjour,
>
> Je souhaiterais automatiser la tâche « montre-moi si mes bases de données sont en
> mode de journalisation bufferisée ».
>
> La commande
> echo "select name, is_buff_log from sysdatabases \\\\
> where name not in ('sysmaster','sysutils','stores_demo', \\\\
> 'sysuser') order by name;" | dbaccess sysmaster
> renvoie :
wjb a écrit :
> Bonjour,
>
> Je souhaiterais automatiser la tâche « montre-moi si mes bases de données sont en
> mode de journalisation bufferisée ».
>
> La commande
> echo "select name, is_buff_log from sysdatabases \\\\
> where name not in ('sysmaster','sysutils','stores_demo', \\\\
> 'sysuser') order by name;" | dbaccess sysmaster
> renvoie :
>
> ========================
> Database selected.
>
> name db1
> is_buff_log 1
>
> name db2
> is_buff_log 0
>
> name db3
> is_buff_log 1
>
> 3 row(s) retrieved.
>
> Database closed.
> ========================
>
> Existe-t-il une option du select, etc., permettant d'obtenir le résultat sous cette forme sans
> passer par un appel à awk :
>
> db1 1
> db2 0
> db3 1
>
> Merci
> Werner
>
Utilisez le sqlcmd de M. Leffler : vous pouvez le télécharger depuis le IIUG
Vous semblez tous avoir oublié qu'il existe une clause WITHOUT HEADINGS
dans l'instruction select. Je ne peux pas tester la syntaxe exacte pour le moment, mais cela,
combiné au raccourcissement de la longueur du nom à l'aide de sous-chaînes, permettra
de réaliser cela avec le produit standard. Je le fais tout le temps.
Cordialement
Malcolm
-----Message d'origine-----
De : informix-list-bounces@iiug.org [mailto:informix-list-bounces@iiug.org]
De la part de Paul Watson
Envoyé : 08 janvier 2008 23:16
À : informix-list@iiug.org
Objet : Re: output-format of select in sysdatabases
wjb a écrit :
> Bonjour,
>
> Je souhaiterais automatiser la tâche « indique-moi si mes bases de données sont en
> mode de journalisation bufferisée ».
>
> La commande
> echo "select name, is_buff_log from sysdatabases \\\\
> where name not in ('sysmaster','sysutils','stores_demo', \\\\
> 'sysuser') order by name;" | dbaccess sysmaster
> renvoie :
>
> ========================
> Database selected.
>
> name db1
> is_buff_log 1
>
> name db2
> is_buff_log 0
>
> name db3
> is_buff_log 1
>
> 3 row(s) retrieved.
>
> Database closed.
> ========================
>
> Existe-t-il une option de select, etc., permettant d'obtenir le résultat sous cette forme sans
> appel à awk :
>
> db1 1
> db2 0
> db3 1
>
> Merci
> Werner
>
Utilisez le sqlcmd de M. Leffler — vous pouvez le télécharger depuis le IIUG
_______________________________________________
Informix-list mailing list
Informix-list@iiug.org
http://www.iiug.org/mailman/listinfo/informix-list