Cet exemple montre comment copier le contenu d’une table d’une base MySQL vers une autre table d’une autre base MySQL de deux serveurs distincts en utilisant windev. Les instructions clés Variable de type Connexion Dans l’ordre d’utilisation, il faudra d’abord déclarer des variables de type « Connexion » pour se connecter aux deux bases se trouvant sur deux serveurs distincts. Le type Connexion permet de décrire par programmation une connexion à une base de données externe. On renseignera les propriétés : Serveur (nom ou adresse ip) BaseDeDonnées Utilisateur (sans préciser le host) MotDePasse Provider (pour indiquer le type de connexion, ici hAccèsNatifMySQL pour MySQL) Instruction HOuvreConnexion Ouvre une connexion à une base de données spécifique. La connexion reste ouverte jusqu’à l’appel de la fonction HFermeConnexion. <Résultat> = HOuvreConnexion(<Nom de la connexion>) La fonction renvoie « Vrai » si la connexion a été ouverte avec succès, « Faux » dans le cas contraire. La fonction HErreurInfo permet d’identifier l’éventuelle erreur. Instruction HDéclareExterne Importe temporairement dans l’analyse en cours, la description d’un fichier de données existant et ouvre le fichier de données. Pour ne plus utiliser cette description de fichier de données, utilisez la fonction HAnnuleDéclaration. <Résultat> = HDéclareExterne(<Nom du fichier> , <Nom alias> , <Nom de la connexion>) Le nom de table est donné entre guillemets. L’alias est le nom donné à cette table dans l’analyse. La connexion est celle par laquelle on accède à la table à déclarer. La fonction renvoie « Vrai » si la déclaration a été faite avec succès, « Faux » dans le cas contraire. La fonction HErreurInfo permet d’identifier l’éventuelle erreur. Instruction HCopieEnreg Copie l’enregistrement de la source vers la destination. Le fichier de données d’origine et le fichier de données destination n’ont pas obligatoirement la même structure. Seules les données mémorisées du fichier de données destination sont modifiées. Le fichier de données destination ne sera modifié qu’à la sauvegarde de l’enregistrement en cours, ici en utilisant HAjoute. <Résultat> = HCopieEnreg(<Nom du fichier Destination>, <Nom du fichier Source>) Les noms des fichiers source et destination seront dans notre cas les alias des tables source et destination définis par HDéclareExterne. La fonction renvoie « Vrai » si la copie a été faite avec succès, « Faux » dans le cas contraire. La fonction HErreur permet d’identifier l’éventuelle erreur. Le code exemple Le code ci-dessous est fourni à titre d’exemple. Pour une réelle utilisation, il faudrait vérifier la bonne exécution de chaque instruction et traiter les erreurs éventuelles.
Bonsoir Je faisais la même chose avant. Mais depuis que j'ai lu sur un autre forum l'instruction MySQL : LOAD DATA LOCAL INFILE Je transfère mes données d'un serveur à un autre à très grande vitesse. Il suffit d'abord de générer un fichier texte avec les données d'origine. Puis : gsReqTablaSQL = [ LOAD DATA LOCAL INFILE ' ] gsReqTablaSQL += sFichier gsReqTablaSQL += [ .CSV' INTO TABLE ] gsReqTablaSQL += sFichier gsReqTablaSQL += [ FIELDS TERMINATED BY ";" LINES TERMINATED BY "\n"; ] SI PAS HExécuteRequêteSQL(gsdTablaSQL, PGComunes.gcnxConexion2, hRequêteSansCorrection, gsReqTablaSQL) ALORS Erreur(ErreurInfo()) FIN
Dans la méthode windev, il y a parfois les soucis pour les grosses bases. En effet, vous devez gérer les intégrités, dans ce cas, nous devez faire la liste vous même. Parfois il y a les connexions OLEDB(accès natif) qui peuvent jouer sur les delais de transfert. Mais ça marche toujours.