Le 06/02/2015 11:20, Frédéric a écrit : > Le 06/02/2015, Hugues a écrit :
>
>> Oui tu peut le faire en SQL.
>> Si tu utilise un user qui à les droits suffisant sur les 2 bases.
>>
>> Il te suffit d'utiliser la syntaxe base.table.colonne pour la 2eme base
>>
>> Ex :
>>
>> use base1;
>> update table1, base2.table2
>> set table1.colonne1 = base2.table2.colonne2
>> where table1.colonne1 = base2.table2.colonne2;
>
> Ah, cool.
>
> Et ce genre de requête serait donc faisable aussi depuis Python MySQLdb, par exemple ? Car là, j'ai un
> truc genre :
>
> request = ...
> conn = MySQLdb.Connect(host="localhost", db='dolibarrdb', user=...)
> conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) cursor.execute(request)
>
> Comment faire pour être connecté sur 2 bases, du coup ?
> Avec Python, je ne sais pas.
Mais peut-être que tu peux faire ça directement avec la commande mysqldump en faisant le dump d'une base/table d'un côté et le "restore" de la table/base de l'autre côté ?
Il est aussi possible de modifier directement le SQL du dump pour lui faire faire ce que tu veux (avant d'envoyer quoi que ce soit dans la base de données, ne pas oublier la règle des 3 S: Sauvegarde, Sauvegarde, Sauvegarde ;) ).
Par défaut (sur une Debian Wheezy avec mysql-client-5.5 version 5.5.41-0+wheezy1), la commande mysql ci-dessous va (détruire et re)créer la table1 dans la base de données database2 avec les même colonnes et valeurs de table1 dans la database1:
$ mysqldump -u user1 -p database1 table1 > dump_premiere_base.sql
vérifier le contenu de dump_premiere_base.sql, appliquer la règle des 3S, puis:
$ mysql -u user2 -p database2 < dump_premiere_base.sql
Si tu ne veux pas qu'il y ait d'interaction pour la demande du mot de passe, tu peux remplacer l'option "-p" par "--password lebonmotdepasse" pour chaque commande.
Attention: s'il y a des "dépendances" entre les tables dans la nouvelle base de données (foreign keys et autres index) ça risque de poser un problème !
N'hésites-pas à indiquer si t'as réussi à faire ce que tu voulais (et, si possible, comment) !