Copie rapide d'une table vers une autre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Copie rapide d'une table vers une autre

Message 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
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Copie rapide d'une table vers une autre

Message par djes »

Euh, idée toute bête mais... copie de fichier?
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Copie rapide d'une table vers une autre

Message 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 !!
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Copie rapide d'une table vers une autre

Message par anissa »

@Graph100

Ta proposition semble logique. J'essayerai demain.

Merci beaucoup Graph100
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Copie rapide d'une table vers une autre

Message par djes »

Ah oui, tu as raison, je suis bête :mrgreen:
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Re: Copie rapide d'une table vers une autre

Message 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
Répondre