1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

Copie entre deux bases MySQL avec windev

Discussion dans 'Windev' créé par brownie007, Fev 12, 2018.

  1. brownie007

    brownie007 New Member

    Inscrit:
    Fev 10, 2018
    Messages:
    14
    J'aime reçus:
    16
    [​IMG]

    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.

    [​IMG]
     
    Tags:
  2. aminej76

    aminej76 Active Member
    MEMBRE WX

    Inscrit:
    Jan 23, 2018
    Messages:
    283
    J'aime reçus:
    102
    Super. C'est très intéressant.:)
     
    LAPIPE2018 apprécie ceci.
  3. Yusep

    Yusep Active Member
    DUMP TEAM

    Inscrit:
    Jan 3, 2018
    Messages:
    235
    J'aime reçus:
    165
    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
     
  4. LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    657
    J'aime reçus:
    232
    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.
     
    intelliweb apprécie ceci.
  5. RayMM

    RayMM Member

    Inscrit:
    Mar 3, 2018
    Messages:
    48
    J'aime reçus:
    7
    Merci pour ces informations ...
     
  6. michel

    michel Well-Known Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    174
    J'aime reçus:
    601
  7. AbouZizou

    AbouZizou Active Member
    MEMBRE WX WXG 21

    Inscrit:
    Fev 28, 2018
    Messages:
    182
    J'aime reçus:
    107
    Merci pour le partage d'info
     
  8. warjoen

    warjoen Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    157
    J'aime reçus:
    122
    Thanks for your information
     

Partager cette page

Chargement...