IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Enregistrer dans une base mysql le résultat d'un select sur une BDD sql server


Sujet :

C++Builder

  1. #1
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut Enregistrer dans une base mysql le résultat d'un select sur une BDD sql server
    Bonjour,

    Mon programme lance une requête via odbc sur une base sql server.
    Il balaye le résultat (dataset) et, pour chaque enregistrement, il lance via l'API un insert sur ma base mysql.

    Je n'ai qu'un problème : c'est long.

    Existe t'il un moyen d'accéler le traitement (par exemple insérer d'un seul coup l'ensemble de mon dataset dans ma base mysql) ?

    Merci pour toute aide...

    Phil

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Générer un script SQL que tu exécuteras ensuite ?
    Pour pouvoir mieux te conseiller pourrais tu nous indiquer le nombre de tuples que tu copies ?
    Qu'appel tu long ?

  3. #3
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut Enregistrer dans une base mysql l résultat d'une
    Citation Envoyé par Neilos
    Générer un script SQL que tu exécuteras ensuite ?
    Pour pouvoir mieux te conseiller pourrais tu nous indiquer le nombre de tuples que tu copies ?
    Qu'appel tu long ?

    Bonjour l'Alsace,

    Pour copier 1500 tuples, le processus dure 3 minutes. La base sql server "source" est en local. La base mysql "cible" est distante.

    Philippe

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Hello,

    effectivement si la base est distante il faut minimiser les appels de fonctions. D'autant plus qu'apparement la connexion avec la base est relativement lente...

    Tu peux à mon humble avis envisager les solutions suivantes

    - faire un seul gros INSERT
    - écrire les INSERT à effectuer dans un script, l'envoyer sur le serveur (pourquoi pas en compressé si c'est la communication qui est lente) et ensuite demander au serveur de l'exécuter. Mais ça te fait sortir du cadre SGBD pur...

  5. #5
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut Enregistrer dans une base mysql le résultat d'un select sur une base sql server
    Salut,

    Merci pour ton idée.

    Pour ne lancer qu'une seule commande, faut il mettre tous les insert dans une même requête en les séparant par ";" ?

    Si oui, mon AnsiString "requête" supportera t'elle autant de caractères ?

    A plus

    Philippe

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Alors pour les requêtes SQL je te conseille d'aller faire un tour sur ce que je considère comme étant LA référence : http://sqlpro.developpez.com.

    Les AnsiString gèrent des chaînes de caractères allant jusqu'à 4 Go. Autant dire qu'avant de saturer un AnsiString tu aura saturé ton système.

    Je privilégierais le script alors.
    Je m'étonnes tout de même que ce soit si lent, comment te connectes tu à ta base distante ?

Discussions similaires

  1. [PHP 5.2] Donnée mon enregistré dans la base mysql
    Par runcafre91 dans le forum Langage
    Réponses: 3
    Dernier message: 10/02/2010, 22h38
  2. problème de connexion sur une base mysql
    Par boss_gama dans le forum Installation
    Réponses: 4
    Dernier message: 05/09/2006, 14h13
  3. Connexion à distance sur une base MySQL Server
    Par pblb62 dans le forum Outils
    Réponses: 1
    Dernier message: 12/05/2006, 09h41
  4. Connexion sur une base Mysql distante (non locale)
    Par externa dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/02/2006, 11h34
  5. Sql sur une base MySql
    Par Rickless dans le forum Bases de données
    Réponses: 17
    Dernier message: 06/04/2005, 13h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo