Bonjour à tous.

Je bosse actuellement pas mal sur un système de clustering d'une BDD MySQL. Cela implique que je dois effectuer un changement au niveau du moteur de recherche de chaque table des BDD concernés.

J'ai trouver une requête MySQL qui me génére automatiquement les différentes requêtes que je dois exécuter pour pouvoir modifier le moteur de recherches (je n'ai qu'a copier la requête suivante et cela me génére toutes les requêtes à simplement copier/coller pour les exécuter) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=NDBCLUSTER;')
FROM information_schema.TABLES
WHERE 1=1
    AND engine = 'InnoDB'
    OR engine = 'MyISAN'
    AND table_schema NOT IN ('information_schema', 'mysql', 'performance_schema');
Néanmoins, cela demande d'exécuter une requête et d'en copier/coller le résultat manuellement en multi-requête, ce qui est embêtant ..
J'aimerai savoir si il n'est pas possible de faire cela automatiquement avec un script PowerShell ?

Je viens vers vous car je suis extrémement mauvais pour l'instant en PowerShell ..
Voilà un script en Bash (Linux) qui lui, fais normalement cela :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

nombdd=$1

mysql -u user -pmotdepasse -e "use $nombdd; show tables" -N -B > file

command="use $nombdd;"
for line in $(cat file); do
 command=$command"ALTER TABLE $line ENGINE=NBCLUSTER;"
done

echo $command
Pour vous donnez peut-être une meilleur idée.

Merci de votre aide,

Original.