MySQL-Remplace chaine dans toute la bdd
Résolu
maxime_B
Messages postés
788
Date d'inscription
Statut
Membre
Dernière intervention
-
ek0892 -
ek0892 -
Bonjour,
Comment remplacer une chaine par une autre dans toutes les tables d'une base de données?
Replace exige qu'on lui donne le nom d'une table et d'une colonne, donc ce n'est pas utilisable comme ça.
Exemple :
Remplacer 'chaine1' par 'mot1' dans la base de données 'test' sur les 50 tables qui la composent en une seule ligne.
Merci d'avance
Comment remplacer une chaine par une autre dans toutes les tables d'une base de données?
Replace exige qu'on lui donne le nom d'une table et d'une colonne, donc ce n'est pas utilisable comme ça.
Exemple :
Remplacer 'chaine1' par 'mot1' dans la base de données 'test' sur les 50 tables qui la composent en une seule ligne.
Merci d'avance
A voir également:
- Replace mysql
- Mysql community server - Télécharger - Bases de données
- Please back up your data and replace your hard disk drive - Forum Matériel & Système
- Mysql gratuit ou payant - Forum MySQL
- Could not connect to mysql! please check your database settings! - Forum Redhat
- Replace and strike any key when ready traduction - Forum Windows 7
5 réponses
Bonjour,
Si tu utilises MySQL 5.1, tu peux te servir de la base information_schema, qui contient entre autres la liste de toutes les tables de ta base ...
Ensuite, tu peux par exemple l'utiliser pour générer ta requête.
Ex :
-> cette requête te donnera un résultat qu'il te suffira de coller dans le client :
UPDATE test.table1 SET champ1=REPLACE(champ1, "chaine1", "mot1");
UPDATE test.table2 SET champ1=REPLACE(champ1, "chaine1", "mot1");
...
Bon courage
A+++
Si tu utilises MySQL 5.1, tu peux te servir de la base information_schema, qui contient entre autres la liste de toutes les tables de ta base ...
Ensuite, tu peux par exemple l'utiliser pour générer ta requête.
Ex :
SELECT CONCAT('UPDATE test.', TABLE_NAME, ' SET champ1=REPLACE(champ1, "chaine1", "mot1");') FROM information_schema.TABLES WHERE TABLE_SCHEMA="test";
-> cette requête te donnera un résultat qu'il te suffira de coller dans le client :
UPDATE test.table1 SET champ1=REPLACE(champ1, "chaine1", "mot1");
UPDATE test.table2 SET champ1=REPLACE(champ1, "chaine1", "mot1");
...
Bon courage
A+++
non, ce que tu as écrit ne marchera pas ...
Ce serait plutôt :
Ce serait plutôt :
SELECT CONCAT('UPDATE test.', TABLE_NAME, ' SET ',COLUMN_NAME,'=REPLACE(',COLUMN_NAME,', "chaine1", "mot1");') FROM information_schema.COLUMNS WHERE TABLE_SCHEMA="test";
Ok merci, ça fonctionne bien malgré que je possède la version 5.0.51.
Est-ce que c'est possible de faire la même chose avec toutes les colonnes de toutes les tables en même temps?
Est-ce que c'est possible de faire la même chose avec toutes les colonnes de toutes les tables en même temps?
Ok merci à toi.
Ce serais donc possible de faire une requête qui va modifier dans la base de données tout ce qui est "chaine1" par "mot1" de cette manière :
Ce serais donc possible de faire une requête qui va modifier dans la base de données tout ce qui est "chaine1" par "mot1" de cette manière :
SELECT CONCAT('UPDATE test.', TABLE_NAME, ' SET (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA="test")=REPLACE((SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA="test"), "chaine1", "mot1");') FROM information_schema.TABLES WHERE TABLE_SCHEMA="test";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question