Table des matières
Mysql
Personnaliser le prompt mysql
Pour éviter de se tromper de serveur MySQL quand on fait des manips, il peut etre intéressant de differencier les serveurs MySQL sur lesquels on est connecté.
Le plus simple est de modifier le prompt pour afficher par exemple : utilisateur, serveur, base de donnée.
Pour ce faire, ajouter dans la section [mysql] du fichier /etc/mysql/my.cnf la directive suivante :
prompt = "\u@\h \d > "
Si vous n'etes pas admin du serveur, vous pouvez placer cette option dans le fichier .my.cnf de votre répertoire personnel, comme par exemple avec la commande suivante :
cat << EOF >> ~/.my.cnf
[mysql]
prompt = "\u@\h \d > "
EOF
Dans le cas ou cela ne marcherait pas (hostname a localhost par exemple), il existe une autre possibilité : exporter la variable suivant en bash
export MYSQL_PS1="\u@`hostname` (\d) > "
Vous pouvez par exemple rajouter cette commande dasn votre ~/.bashrc ou ~/.bash_variables
Avoir rapidement le nombre d'entrées dans une GROSSE table (valable en innodb uniquement)
Cela donne uniquement une valeur approximative, le nombre d'enregistrements n'etant pas mis a jour pour des raisons de perf :
show table status like 'MaGrosseTable';
Exporter des données dans un fichier csv
Pour exporter des données dnas un fichier CSV, utiliser un “SELECT … INTO OUTFILE” comme par exemple dans l'exemple ci dessous :
SELECT order_id,product_name,qty FROM orders INTO OUTFILE '/tmp/orders.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'
Pour lui affecter si vous le pouvez, utiliser une syntaxe similaire a: “GRANT FILE ON maBase.* TO 'monUser'@'%';”
Savoir quelles tables sont fragmentées
Pour savoir quelles tables sont fragmentées, on peut utiliser la commande suivante :
SELECT engine, table_schema, table_name, data_free*100/data_length AS percent_frag FROM information_schema.tables where data_free IS NOT NULL and data_free <> 0 order by percent_frag ;
Il suffit ensuite de lancer un “OPTIMIZE table MaTable” sur ces tables pour réduire la fragmentation