8.3 mysql , l'outil en ligne de commande
8 MySQL Scripts clients et utilitaires
Manuel de Référence MySQL 4.1 : Version Française
->Commandes mysql . Comment exécuter des commandes SQL depuis un fichier texte . Conseils avec mysql
|
8.3.1 Commandes mysql
mysql
envoie des requêtes SQL que vous avez saisie au serveur, pour exécution.
Il y a aussi des commandes que le client
mysql
interprête. Si vous tapez '
help
'
en ligne de commande,
mysql
va afficher les commandes qu'il supporte :
mysql> help MySQL commands: ? (\h) Synonym for `help'. clear (\c) Clear command. connect (\r) Reconnect to the server. Optional arguments are db and host. delimiter (\d) Set query delimiter. edit (\e) Edit command with $EDITOR. ego (\G) Send command to mysql server, display result vertically. exit (\q) Exit mysql. Same as quit. go (\g) Send command to mysql server. help (\h) Display this help. nopager (\n) Disable pager, print to stdout. notee (\t) Don't write into outfile. pager (\P) Set PAGER [to_pager]. Print the query results via PAGER. print (\p) Print current command. prompt (\R) Change your mysql prompt. quit (\q) Quit mysql. rehash (\#) Rebuild completion hash. source (\.) Execute an SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. system (\!) Execute a system shell command. tee (\T) Set outfile [to_outfile]. Append everything into given outfile. use (\u) Use another database. Takes database name as argument.
|
Les commandes
edit
,
nopager
,
pager
et
system
ne fonctionnent que sous Unix.
La commande
status
donne des détails sur la connexion et le serveur
utilisés. Si vous fonctionnez en mode
--safe-updates
,
status
va aussi afficher les valeurs des variables de
mysql
qui affectent
vos requêtes.
Pour enregistrer les requêtes et leur résultat, utilisez la commande
tee
.
Toutes les données affichées à l'écran seront ajoutées à un fichier donné. Cela
peut être très pratique pour déboguer. Vous pouvez activer cette fonctionnalité
en ligne de commande, avec l'option
--tee
, ou interactivement avec la commande
tee
. Le fichier
tee
peut être désactivé interactivement avec la commande
notee
. Exécuter
tee
à nouveau ré-active le log.
Sans paramètre, le fichier précédent sera utilisé. Notez que
tee
envoie les requêtes dans le fichier après chaque commande, juste avant que
mysql
ne l'affiche.
La lecture et la recherche dans les résultats de requêtes en mode interactif
est possible en utilisant les programmes Unix
less
,
more
, ou
tout autre programme similaire, avec l'option
--pager
. Si vous ne spécifier
par de valeur d'option,
mysql
regarde la valeur de la variable d'environnement
PAGER
, et utilise ce pager. Vous pouvez aussi l'activer interactivement
avec la commande
pager
et la désactiver avec
nopager
. La commande
prend un argument optionnel : s'il est fournit, le programme de pager indiqué
sera utilisé. Sinon, le pager sera celui indiqué en ligne de commande, ou
stdout
si aucun pager n'était indiqué.
La pagination de sortie ne fonctionne que sous Unix, car elle utilise la
fonction
popen()
, qui n'existe pas sous Windows. Pour Windows, la commande
tee
peut être utilisée pour sauver le résultat, même si ce n,est pas
aussi pratique que
pager
pour naviguer dans le résultat.
Quelques conseils avec la commande
pager
:
-
Vous pouvez l'utiliser pour écrire les résultats dans un fichier :
mysql> pager cat > /tmp/log.txt
|
Vous pouvez lui passer les options que le page comprendra :
mysql> pager less -n -i -S
|
-
Dans le précédent exemple, notez l'option
-S
. Vous la trouverez pratique
pour naviguer dans des résultats très larges. Parfois, un résultat très large
est difficile à lire à l'écran. L'option
-S
de
less
rend le résultat
plus lisible, car vous pouvez aussi scroller horizontalement, avec les
flèches de droite et de gauche. Vous pouvez aussi utiliser interactivement
-S
dans
less
pour activer ou désactiver la navigation horizontale.
Pour plus d'informations, voyez le manuel de
less
:
-
Vous pouvez spécifier des commandes de pages très complexe :
mysql> pager cat | tee /dr1/tmp/res.txt \ | tee /dr2/tmp/res2.txt | less -n -i -S
|
Dans cet exemple, la commande va envoyer les résultats de la commande dans
deux fichiers différents, dans deux dossiers différents, placés sur deux
devis
/dr1
et
/dr2
, mais affichera toujours le résultat à l'écran
via
less
.
Vous pouvez aussi combiner les deux fonctions ci-dessus : activer le
tee
, spécifier le
pager
'
less
' et vous serez capable de
naviguer dans les résultats avec le
less
Unix, tout en enregistrant tous
les résultats dans un fichier. La différence entre le
tee
d'Unix
utilisé avec le
pager
et le
tee
intégré du client
mysql
,
est que le
tee
intégré fonctionne même si vous n'avez pas de
tee
Unix disponible. Le
tee
enregistre tout ce qui est affiché à l'écran,
alors que le
tee
Unix utilisé avec
pager
n'en note pas autant.
Enfin, le
tee
interactif est plus facile à activer et désactiver, lorsque
vous souhaitez enregistrer un résultat dans un fichier, mais que vous voulez
désactiver cette fonctionnalité à d'autres moments.
Depuis MySQL version 4.0.2, il est possible de modifier l'invite de commande
de
mysql
. La chaîne de définition de l'invite de commande accepte
les séquences suivantes :
Option
|
Description
|
\v
|
version de mysqld
|
\d
|
database en cours
|
\h
|
hôte MySQL
|
\p
|
port de connexion
|
\u
|
nom d'utilisateur
|
\U
|
Identifiant complet
username@host
|
\\
|
'\'
|
\n
|
nouvelle ligne
|
\t
|
tabulation
|
\
|
espace
|
\_
|
espace
|
\R
|
heure 24h (0-23)
|
\r
|
heure 12h (1-12)
|
\m
|
minutes
|
\y
|
année sur deux chiffres
|
\Y
|
année sur quatre chiffres
|
\D
|
format de date complet
|
\s
|
secondes
|
\w
|
jour de la semaine en trois lettres (Mon, Tue, ...)
|
\P
|
am/pm
|
\o
|
mois au format numérique
|
\O
|
mois en trois lettres (Jan, Feb, ...)
|
\c
|
compteur du nombre de commande
|
'\'
suivi de n'importe quelle lettre représente la lettre littéralement.
Si vous spécifiez une commande
prompt
sans argument,
mysql
utilisera
l'invite de commande par défaut de
mysql>
.
Vous pouvez modifier l'invite de commande comme ceci :
- Variable d'environnement
Vous pouvez utiliser la variable d'environnement
MYSQL_PS1
,
en lui donnant la chaîne d'invite. Par exemple :
shell> export MYSQL_PS1="(\u@\h) [\d]> "
|
- Utiliser le fichier d'optionsVous pouvez configurer l'invite de commandes
prompt
dans le fichier d'options MySQL, comme
/etc/my.cnf
ou
.my.cnf
,
dans le groupe
mysql
. Par exemple :
[mysql] prompt=(\\u@\\h) [\\d]>\\_
|
Dans cet exemple, notez que les anti-slash sont doublés.
Si vous configurez l'invite de commande
prompt
dans un fichier d'options,
il est recommandé de doubler les anti-slash, lorsque vous utilisez
des options. Il y a des recoupements entre les séquences protégées et
les options. Ces séquences sont listées dans Utiliser les fichiers d'options .
Ce recoupement peut vous causer des problèmes avec des anti-slashs uniques.
Par exemple,
\s
sera interprété comme un espace, plutôt que comme le
nombre de secondes. La valeur suivante montre comment définir une invite
avec l'heure au format
HH:MM:SS>
:
[mysql] prompt="\\r:\\m:\\s> "
|
- Utilisez une option de ligne de commande
Vous pouvez utiliser l'option
--prompt
dans la commande
mysql
.
Par exemple :
shell> mysql --prompt="(\u@\h) [\d]> " (user@host) [database]>
|
- Interactivement
Vous pouvez aussi utiliser la commande
prompt
(ou
\R
) depuis le client
pour modifier interactivement l'invite de commande. Par exemple :
mysql> prompt (\u@\h) [\d]>\_ PROMPT set to '(\u@\h) [\d]>\_' (user@host) [database]> (user@host) [database]> prompt Returning to default PROMPT of mysql> mysql>
|
|