Bonjour amis développeurs,
Je viens à vous après de nombreuses recherches sur le net.
Je voudrais copier le contenu de plusieurs tables depuis une base de données locale (BDD de production alimentée par des automates),
dans des tables d'archivages sur une base de données distante.
Ce que j'aimerais faire plus précisément ressemblerait à :
INSERT INTO "tableDistante" SELECT * FROM tableLocale
Pour me connecter aux deux bases de données j'utilise deux ADODB.connection et deux ADODB.recordset :
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 'Connexion à la de données locale (PC de supervision) Set connLocal = CreateObject("ADODB.Connection") Set rstLocal = CreateObject("ADODB.Recordset") 'DSN -> PC local connLocal.Open "Provider=SQLOLEDB.1;Data Source=PC-032\SQLEXPRESS;Initial Catalog=CVM_DB","sa","----"
Ensuite je peux exécuter connDistant ou connLocal .execute(maRequete).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 'Connexion à la base de données distante (Serveur BDD) Set connDistant = CreateObject("ADODB.Connection") Set rstDistant = CreateObject("ADODB.Recordset") 'DSN -> Server distant connDistant.Open "Provider=SQLOLEDB.1;Data Source=PC-009\CVM_DAD;Initial Catalog=CVM_DB","CVM-User","----"
Donc j'avais pensé à faire quelque chose comme ça :
Et je me demandais si je pouvais me servir directement de rstLocal.{quelquechose}?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 req = "SELECT * FROM tableLocale" rstLocal = connLocal.Execute(req) req = "INSERT INTO tableDistante" & rstLocal <---- rstDistant = connDistant.Execute(req)
Ce rstLocal contient les données que j'ai à transférer, il doit donc avoir un moyen simple en partant de ça non?
J'ai trouvé comment faire de façon sale, en copiant tous les enregistrement dans un tableau puis en les transférant, mais bon...
Quelqu'un aurait il quelques conseils à me donner?
EDIT: A savoir que la structure des tables source et de destination est la même.
Cordialement,
sk
Partager