Comment copier certains enregistrements d'une bd vers une autre ?
Je sélectionne par exemple tous les enregistrements dont le champ "val" est
égal à 0
Pour ensuite les copier dans une autres bd ayant la même structure comment
dois-je m'y prendre
Une boucle sur le nombre d'enregistrements et dans cette boucle faire un
insert ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc
"Jacques" a écrit dans le message de news:%
Bonjour,
Comment copier certains enregistrements d'une bd vers une autre ? Je sélectionne par exemple tous les enregistrements dont le champ "val"
est
égal à 0 Pour ensuite les copier dans une autres bd ayant la même structure comment dois-je m'y prendre Une boucle sur le nombre d'enregistrements et dans cette boucle faire un insert ?
Hello, il y a plein de façons de faire. Une solution, avec DAO pour l'exemple est de parcourir les éléments de la première table et de remplir la seconde avec des .Addnew, comme ceci:
' base1 est la base source, avec une table (table1) contenant ' les champs nom, prenom et val. ' base2 est la base à remplir '
Dim db1 As Database Dim rs1 As Recordset
Dim db2 As Database Dim rs2 As Recordset
Set db1 = OpenDatabase("c:base1.mdb") Set rs1 = db1.OpenRecordset("select * from table1 where val=0") Set db2 = OpenDatabase("c:base2.mdb") Set rs2 = db2.OpenRecordset("table1")
rs1.MoveFirst While Not rs1.EOF rs2.AddNew rs2.Fields("nom") = rs1.Fields("nom") rs2.Fields("prenom") = rs1.Fields("prenom") rs2.Fields("val") = rs2.Fields("val") rs2.Update rs1.MoveNext Wend rs1.Close db1.Close rs2.Close db2.Close Set rs1 = Nothing Set db1 = Nothing Set rs2 = Nothing Set db2 = Nothing
MsgBox "fini"
Une autre solution est de faire des INSERT comme tu le disais.
La solution que je donne ici est plutot rapide (1 seconde pour 2000 records).
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Jacques" <jac_be@hotmail.com> a écrit dans le message de
news:%23ZxhJPWhFHA.2072@TK2MSFTNGP14.phx.gbl...
Bonjour,
Comment copier certains enregistrements d'une bd vers une autre ?
Je sélectionne par exemple tous les enregistrements dont le champ "val"
est
égal à 0
Pour ensuite les copier dans une autres bd ayant la même structure comment
dois-je m'y prendre
Une boucle sur le nombre d'enregistrements et dans cette boucle faire un
insert ?
Hello,
il y a plein de façons de faire.
Une solution, avec DAO pour l'exemple est de parcourir
les éléments de la première table et de remplir la seconde
avec des .Addnew, comme ceci:
' base1 est la base source, avec une table (table1) contenant
' les champs nom, prenom et val.
' base2 est la base à remplir
'
Dim db1 As Database
Dim rs1 As Recordset
Dim db2 As Database
Dim rs2 As Recordset
Set db1 = OpenDatabase("c:base1.mdb")
Set rs1 = db1.OpenRecordset("select * from table1 where val=0")
Set db2 = OpenDatabase("c:base2.mdb")
Set rs2 = db2.OpenRecordset("table1")
rs1.MoveFirst
While Not rs1.EOF
rs2.AddNew
rs2.Fields("nom") = rs1.Fields("nom")
rs2.Fields("prenom") = rs1.Fields("prenom")
rs2.Fields("val") = rs2.Fields("val")
rs2.Update
rs1.MoveNext
Wend
rs1.Close
db1.Close
rs2.Close
db2.Close
Set rs1 = Nothing
Set db1 = Nothing
Set rs2 = Nothing
Set db2 = Nothing
MsgBox "fini"
Une autre solution est de faire des INSERT comme tu le disais.
La solution que je donne ici est plutot rapide (1 seconde pour 2000
records).
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Comment copier certains enregistrements d'une bd vers une autre ? Je sélectionne par exemple tous les enregistrements dont le champ "val"
est
égal à 0 Pour ensuite les copier dans une autres bd ayant la même structure comment dois-je m'y prendre Une boucle sur le nombre d'enregistrements et dans cette boucle faire un insert ?
Hello, il y a plein de façons de faire. Une solution, avec DAO pour l'exemple est de parcourir les éléments de la première table et de remplir la seconde avec des .Addnew, comme ceci:
' base1 est la base source, avec une table (table1) contenant ' les champs nom, prenom et val. ' base2 est la base à remplir '
Dim db1 As Database Dim rs1 As Recordset
Dim db2 As Database Dim rs2 As Recordset
Set db1 = OpenDatabase("c:base1.mdb") Set rs1 = db1.OpenRecordset("select * from table1 where val=0") Set db2 = OpenDatabase("c:base2.mdb") Set rs2 = db2.OpenRecordset("table1")
rs1.MoveFirst While Not rs1.EOF rs2.AddNew rs2.Fields("nom") = rs1.Fields("nom") rs2.Fields("prenom") = rs1.Fields("prenom") rs2.Fields("val") = rs2.Fields("val") rs2.Update rs1.MoveNext Wend rs1.Close db1.Close rs2.Close db2.Close Set rs1 = Nothing Set db1 = Nothing Set rs2 = Nothing Set db2 = Nothing
MsgBox "fini"
Une autre solution est de faire des INSERT comme tu le disais.
La solution que je donne ici est plutot rapide (1 seconde pour 2000 records).
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
Jean-Marc
"Jacques" a écrit dans le message de news:%
Bonjour,
Comment copier certains enregistrements d'une bd vers une autre ? Je sélectionne par exemple tous les enregistrements dont le champ "val"
est
égal à 0 Pour ensuite les copier dans une autres bd ayant la même structure comment dois-je m'y prendre Une boucle sur le nombre d'enregistrements et dans cette boucle faire un insert ?
Histoire d'être complet, voici le code à base d'INSERT. Le choix entre INSERT et .AddNew est une question de goût.
Perso, j'aime bien le SQL. On pourrait imaginer de générer les insert dans un fichier, de ne pas les exécuter puis de soumettre ce fichier de commandes SQL à la base de données à un moment calme, par exemple la nuit, pour faire un gros traitement batch, avec des commit tous les 1000 records. C'est une pratique courante pour archiver des data d'un environnemnt à un autre, entre une base de production et une autre, par exemple.
' ' Dim db1 As Database Dim rs1 As Recordset Dim db2 As Database
Set db1 = OpenDatabase("c:base1.mdb") Set rs1 = db1.OpenRecordset("SELECT * FROM Table1 WHERE val=0") Set db2 = OpenDatabase("c:base2.mdb") rs1.MoveFirst While Not rs1.EOF db2.Execute "INSERT INTO Table1 (nom , prenom , val) VALUES ('" & rs1.Fields("nom") & "','" & rs1.Fields("nom") & "',0 )" rs1.MoveNext Wend rs1.Close db1.Close db2.Close Set rs1 = Nothing Set db1 = Nothing Set db2 = Nothing MsgBox "fini"
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Jacques" <jac_be@hotmail.com> a écrit dans le message de
news:%23ZxhJPWhFHA.2072@TK2MSFTNGP14.phx.gbl...
Bonjour,
Comment copier certains enregistrements d'une bd vers une autre ?
Je sélectionne par exemple tous les enregistrements dont le champ "val"
est
égal à 0
Pour ensuite les copier dans une autres bd ayant la même structure comment
dois-je m'y prendre
Une boucle sur le nombre d'enregistrements et dans cette boucle faire un
insert ?
Histoire d'être complet, voici le code à base d'INSERT.
Le choix entre INSERT et .AddNew est une question de goût.
Perso, j'aime bien le SQL. On pourrait imaginer de générer les
insert dans un fichier, de ne pas les exécuter puis de soumettre ce
fichier de commandes SQL à la base de données à un moment calme, par
exemple la nuit, pour faire un gros traitement batch, avec des commit
tous les 1000 records.
C'est une pratique courante pour archiver des data d'un environnemnt à
un autre, entre une base de production et une autre, par exemple.
'
'
Dim db1 As Database
Dim rs1 As Recordset
Dim db2 As Database
Set db1 = OpenDatabase("c:base1.mdb")
Set rs1 = db1.OpenRecordset("SELECT * FROM Table1 WHERE val=0")
Set db2 = OpenDatabase("c:base2.mdb")
rs1.MoveFirst
While Not rs1.EOF
db2.Execute "INSERT INTO Table1 (nom , prenom , val) VALUES ('" &
rs1.Fields("nom") & "','" & rs1.Fields("nom") & "',0 )"
rs1.MoveNext
Wend
rs1.Close
db1.Close
db2.Close
Set rs1 = Nothing
Set db1 = Nothing
Set db2 = Nothing
MsgBox "fini"
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Comment copier certains enregistrements d'une bd vers une autre ? Je sélectionne par exemple tous les enregistrements dont le champ "val"
est
égal à 0 Pour ensuite les copier dans une autres bd ayant la même structure comment dois-je m'y prendre Une boucle sur le nombre d'enregistrements et dans cette boucle faire un insert ?
Histoire d'être complet, voici le code à base d'INSERT. Le choix entre INSERT et .AddNew est une question de goût.
Perso, j'aime bien le SQL. On pourrait imaginer de générer les insert dans un fichier, de ne pas les exécuter puis de soumettre ce fichier de commandes SQL à la base de données à un moment calme, par exemple la nuit, pour faire un gros traitement batch, avec des commit tous les 1000 records. C'est une pratique courante pour archiver des data d'un environnemnt à un autre, entre une base de production et une autre, par exemple.
' ' Dim db1 As Database Dim rs1 As Recordset Dim db2 As Database
Set db1 = OpenDatabase("c:base1.mdb") Set rs1 = db1.OpenRecordset("SELECT * FROM Table1 WHERE val=0") Set db2 = OpenDatabase("c:base2.mdb") rs1.MoveFirst While Not rs1.EOF db2.Execute "INSERT INTO Table1 (nom , prenom , val) VALUES ('" & rs1.Fields("nom") & "','" & rs1.Fields("nom") & "',0 )" rs1.MoveNext Wend rs1.Close db1.Close db2.Close Set rs1 = Nothing Set db1 = Nothing Set db2 = Nothing MsgBox "fini"
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;