MySQL. BULK UPDATE (aka grosse mise à jour)

Problématique

Vous voulez mettre tous les champs d’une table à jour à partir d’une autre table.

Vous pouvez par exemple vouloir mettre à jour une table distante à partir d’une table locale.

Vous pouvez, comme je le faisais quand j’étais petit, le faire par programme et mettre à jour ligne à ligne. Le programme n’est pas long à faire mais l’exécution …

Solution

Le mieux est de mettre les données dans une table temporaire qu’on appellera source.

La méthode généralement utilisée (parce que c’est la bonne) est la suivante :

CREATE TABLE IF NOT EXISTS source (
champ1 int(11) NOT NULL,
champ2 int(11) DEFAULT NULL,
champ3 int(11) DEFAULT NULL
)
les types de champ ne sont qu’un exemple

de la charger ensuite par un

INSERT INTO source (champ1, champ2, champ3) FROM SELECT ( …)

et d’exporter ensuite la table. Mais jusque là vous saviez tout ça.

Comment faire le BULK UPDATE ? En posant source le nom de la table … source et dest le nom de la table … dest (vous aviez deviné ?) qui sera alimentée. La commande est la suivante.

UPDATE dest  INNER JOIN source

ON dest.IDdest=source.IDsource

SET dest.champdest1=source.source1, …,  dest.champdestn=source.champsourcen

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

POUR EN SAVOIR PLUS : les derniers livres parus sur MySQL sont sur

DerniersParus.com » MySQL

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *