MySQL-Remplace chaine dans toute la bdd
Résolu/Fermé
maxime_B
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
-
Modifié par maxime_B le 16/04/2010 à 17:23
ek0892 - 26 sept. 2013 à 17:12
ek0892 - 26 sept. 2013 à 17:12
A voir également:
- Replace mysql
- Mysql download - Télécharger - Bases de données
- Le paquet « mysql-server » n'a pas de version susceptible d'être installée ✓ - Forum Debian
- Replace and strike any key when ready - Forum Windows 7
- Error 2002 (hy000): can't connect to local mysql server through socket '/var/run/mysqld/mysqld.sock' (2) ✓ - Forum Linux / Unix
- Mysql gratuit ou payant - Forum MySQL
5 réponses
dam75
Messages postés
1043
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
Modifié par dam75 le 16/04/2010 à 15:06
Modifié par dam75 le 16/04/2010 à 15:06
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+++
dam75
Messages postés
1043
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
19 avril 2010 à 18:54
19 avril 2010 à 18:54
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";
maxime_B
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
55
Modifié par maxime_B le 19/04/2010 à 10:33
Modifié par maxime_B le 19/04/2010 à 10:33
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?
dam75
Messages postés
1043
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
19 avril 2010 à 10:56
19 avril 2010 à 10:56
Oui, tu peux récupérer par ce biais toutes les tables si tu veux ... par contre, c'est à toi de mettre dans la requête les colonnes de ton choix.
Si tu as besoin de la liste des colonnes, tu as aussi la table COLUMNS :
Si tu as besoin de la liste des colonnes, tu as aussi la table COLUMNS :
SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA="test";
maxime_B
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
55
19 avril 2010 à 17:08
19 avril 2010 à 17:08
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
maxime_B
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
55
20 avril 2010 à 15:32
20 avril 2010 à 15:32
Ok merci beaucoup pour ton aide.