Page 1 sur 1

Copie rapide d'une table vers une autre

Publié : mer. 25/mai/2011 18:45
par anissa
Bonjour à tous

J'ai deux tables Table1 et Table2 appartenant respectivement à deux bases de données dfférentes
MaBase1.sqlite et MaBase2.sqlite

Mon but est de copier intégralement et RAPIDEMENT les données de la table1 vers la table2, (les 2 tables ont la même structure). Copier enregistrement par enregistrement (séquentiellement) est une solution qui marche bien (je l'ai essayée) mais ça prend beaucoup de temps. La Table1 contient 1640 enregistrements. Existe t il une solution plus rapide qui ressemble un peu à Copier-coller?

Merci de votre aide

Voici mon code qui marche très bien mais trop lent...

Code : Tout sélectionner

Procedure Copier_Table()
Wsql="Select * From Table1"
CheckDataBaseQuery(Db1,Wsql)
While NextDataBaseRow(Db1)
        Nom$=GetDataBaseString((Db1,1)
        Adr$=GetDataBaseString((Db1,2)
        Tel$=GetDataBaseString((Db1,3)
        wSql="INSERT INTO Table2 (Col1,Col2,Col3) Values ("
        wSql+Chr(34) + Nom$  + Chr(34) + ","
        wSql+Chr(34) + Tel$  + Chr(34) + ","
        wSql+Chr(34) + Adr$  + Chr(34) + ")"
        CheckDataBaseUpdate(Db2,Wsql)
Wend
Debug " Transfert terminé ! "
EndProcedure   
J'ai essayé aussi la méthode directe mais il y a un conflit car il s'agit de deux bases différentes...

Code : Tout sélectionner

Procedure CopieDirecte()
  wSql="INSERT INTO Table2 Select * FROM Table1"
  CheckDataBaseUpdate(Db2,Wsql) ; ici je ne sais plus s'il faut mettre Db1 ou Db2 
  ; De toute façon, dans les 2 cas ça marche pas 
EndProcedure   
Merci

Re: Copie rapide d'une table vers une autre

Publié : mer. 25/mai/2011 19:05
par djes
Euh, idée toute bête mais... copie de fichier?

Re: Copie rapide d'une table vers une autre

Publié : mer. 25/mai/2011 19:24
par graph100
@djes : bah si tu n'as pas que les tables dans les fichiers mais que tu veux ne copier que les tables, ça marche pas :mrgreen:

@anissa

normalement c'est possible mais il faut préciser le nom des tables.
Je n'ai pas testé mon code, mais je pense que l'idée y est

Code : Tout sélectionner

Procedure CopieDirecte(Database.l, Table1.s, Table2.s)
	CheckDataBaseUpdate(Database, "INSERT INTO " + Table2 + " Select * FROM Table1")
EndProcedure

CopieDirecte(Db2,  "nomfichier1.nomTable1", "nomfichier2.nomTable2")
Je précise qu'il faut bien mettre le point entre le nom de la base de donnée et le nom de la table. C'est dans la syntaxe MySqlite, maintenant faut adapté ça avec PureBasic, et le opentable !!

Re: Copie rapide d'une table vers une autre

Publié : mer. 25/mai/2011 19:56
par anissa
@Graph100

Ta proposition semble logique. J'essayerai demain.

Merci beaucoup Graph100

Re: Copie rapide d'une table vers une autre

Publié : mer. 25/mai/2011 20:54
par djes
Ah oui, tu as raison, je suis bête :mrgreen:

Re: Copie rapide d'une table vers une autre

Publié : mer. 25/mai/2011 21:16
par bombseb
Je ne connais pas SQLite, mais sur certaines bases, tu à la possibilité de faire des requêtes sur plusieurs base : ex

Code : Tout sélectionner

Select *
from Base1..table1, Base2..table2
faudrais voir si c'est possible avec SQLite