[Mysql] Mettre à jour une base de donnée

Bonjour à tous.

Je vous explique un peu l’histoire.
J’ai deux bases de données phpbb. Je voudrais mettre à jour la 2eme base à partir des données de la 1ere qui sont plus récentes.
J’ai donc fait une sauvegarde de la premiere base et j’ai donc un fichier SQl qui se présente comme ça:

--
-- Dumping data for table `phpbb_auth_access`
--


/*!40000 ALTER TABLE `phpbb_auth_access` DISABLE KEYS */;
LOCK TABLES `phpbb_auth_access` WRITE;
INSERT INTO `phpbb_auth_access` VALUES (7,8,0,0,0,0,0,0,0,0,0,0,0,1), etc...
/*!40000 ALTER TABLE `phpbb_auth_access` ENABLE KEYS */;

avec la même chose pour toutes les tables

Je voudrais donc modifier ce fichier SQL pour qu’il ne rajoute pas toutes les valeurs dans la 2eme base mais seulement qu’il les mette à jour en fonction des différences car sinon il me semble qu’il va bloquer en me disant qu’il y’a des valeurs identiques.

PS: Je ne peux pas tout simplement supprimer entierement la 2eme pour reprendre la 1ere car la 2eme base est plus récente et contient des champs en plus dans certaines tables que je ne dois pas perdre

PS 2 j’espere avoir été assez clair parce que je suis pas du tout expert en base de donnée

Ca m’étonnerait que tu t’en sorte sans bidouiller.

Ce que tu peux éventuellement faire, c’est importer tes tables dans une autre base de données, te débrouiller pour ajouter les champs des tables de ta base 2 (ainsi : tes tables concordonnent), et faire un INSERT INTO SELECT …

Ca c’est si tu veux importer tout sans regarder

Dans ton cas, faut carrément regarder le contenu de la table, voir si c’est nouveau, et modifier ou ajouter.

Tu as plus vite fait d’en faire un script php (en plus ça t’évitera de le refaire les autres fois)

je peux pas remplacer INSERT INTO par un truc du genre UPDATE INTO? ou je ne sais quoi?
En fait je voudrais eviter de me tapper manuellement toutes les tables voir quels sont les champs en plus

Tu as ça :

http://dev.mysql.com/doc/refman/4.1/en/update.html

(pour UPDATE)

ok ils donnent donc donc pour cette commande la syntaxe suivante

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

concertement je l’adapte comment avec mon exemple? Comme ça?

--
-- Dumping data for table `phpbb_auth_access`
--


/*!40000 UPDATE TABLE `phpbb_auth_access` DISABLE KEYS */;
LOCK TABLES `phpbb_auth_access` WRITE;
SET `phpbb_auth_access` VALUES (7,8,0,0,0,0,0,0,0,0,0,0,0,1), etc...
/*!40000 UPDATE TABLE `phpbb_auth_access` ENABLE KEYS */;

j’suis désolé mais j’y connais que dalle :whistle:

ou peut-être plutôt

--
UPDATE `phpbb_auth_access` SET VALUES (7,8,0,0,0,0,0,0,0,0,0,0,0,1), etc...

Non, du tout.

Tu vas te faire chier comme je disais.

C’est plus ça :

SQL
[color=blue;font-weight:bold]UPDATE[/color] machin SET x = valueX, y = valueY, ..., z = valueZ

WHERE id = someId

ah ok en effet ça a l’air bien galere.
Bon laissons tomber je vais recopier la base sur l’autre et rajouter manuellement les champs supplémentaires
ça sera plus simple :paf:

Merci de ton aide en tout cas :jap: