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

SQL Firebird Discussion :

Transfert de données entre 2 bases de données


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut Transfert de données entre 2 bases de données
    Bonjour à tous,

    Je voudrais transférer des données d'une table à une autre, sachant que les 2 tables se trouve dans 2 base de données différentes.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    j'ai essayer avec le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    CREATE PROCEDURE SISTK (
        NUM1 Varchar(5),
        CHE Varchar(300) )
    RETURNS (
        STK Integer )
    AS
    declare variable num varchar(5);
    declare variable pro1 varchar(20);
    declare variable qta1 numeric(14,5);
    declare variable qtv1 numeric(14,5);
     
    BEGIN  
     
                  with c as
                  ( select pro,qte as qta,0 as qtv from ACH 
                    union all
                  select pro,0 as qta,qte as qtv from VEN )
                  select pro,sum(qta) as qta, sum(qtv) as qtv from C group by 1;
     
        for select pro,qta,qtv from c into :pro1,:qta1,:qtv1 do  
        begin
                execute statement('update pro set stk='||:qta1-:qtv1||' where pro='||:pro1) on external :che AS USER 'sysdba' PASSWORD 'masterkey';
     
            suspend;    
         end
    mais il me signal "token unkown c"

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    pour répondre à "token unkown c", c'est normal, votre CTE doit se trouver dans la boucle for et non en dehors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    BEGIN           
     
       for   with c as
                  ( select pro,qte as qta,0 as qtv from ACH 
                    union all
                  select pro,0 as qta,qte as qtv from VEN )
     
                 select pro,sum(qta), sum(qtv) from C group by 1 INTO :pro1,:qta1,:qtv1
       do
    par contre je m'interroge sur l'utilisation du Statement et les paramètres comme indiqué.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      do 
         execute statement('update pro set stk=? where pro=?') (:qta1-:qtv1,:pro1) ON   external :che AS USER 'sysdba' PASSWORD 'masterkey';
    Au fait pourquoi qta1 et qtv alors que l'opération peut être faite dans la boucle ? select pro,sum(qta)-sum(qtv) from C group by 1 INTO :pro1,:tot
    A noter, j'utilise la syntaxe trouvée au chapitre parametrized statements indiquée ici

    Je doute aussi que le paramètre :che soit interprété correctement mais ça, je ne sais pas à cet instant palier ce genre de chose.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    merci je vai voir si ça marche.
    Je doute aussi que le paramètre :che soit interprété correctement mais ça, je ne sais pas à cet instant palier ce genre de chose.
    :che représente la base de données externe.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    ça je l'ai compris, mais j'ai un doute, je n'ai jamais essayé ce type de passage de paramètre
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Votre code marche , mais son execution et trés lente, elle dure presque une minute

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    je n'ai jamais essayé ce type de passage de paramètre
    je viens de faire un test, effectivement le passage du nom de la BDD (pour moi un alias) en paramètre ça fonctionne

    Citation Envoyé par chekkal Voir le message
    Votre code marche , mais son execution et trés lente, elle dure presque une minute
    Houla, ce n'est pas mon code, c'est le votre (du moins pour ce qui est la partie for select) ne vous en prenez qu'à vous.
    Je vous ai indiqué les points qui ne fonctionnaient pas dans votre procédure de départ, pas d'avantage
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    C'est vrai mon code. Cependant le code marche bien si on l'execute avec ibsql ou flamrobin, par contre dans un program delphi il me signale "token unkown ?"

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par chekkal Voir le message
    par contre dans un program delphi il me signale "token unkown ?"
    Cela devient donc un problème Delphi du coup. Il faudrait peut-être indiquer comment vous faites l'exécution de cette procedure
    De plus, c'est vers le forum Delphi qu'il faut se tourner (en indiquant le code) si vous voulez une réponse.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Bonjour,

    j'ai mis le code comme il est, j'ai enlevé seulement "set term"

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    j'ai mis le code comme il est, j'ai enlevé seulement "set term"
    Alors là, c'est encore plus flou ! Je croyais cela impossible mais non, vous avez réussi à faire "mieux"
    Quel rapport entre SET TERM et l'exécution d'une procédure en Delphi ?
    par contre dans un program delphi il me signale "token unkown ?"
    C'est bien la preuve que sans information sur le code aucune réponse valable ne peut être donnée. Je pensais qu'il s'agissait d'une exécution de procédure et là, pour que SET TERM soit impliqué, il s'agit, selon ma boule de cristal, d'un script de création d'une procédure
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Bonjour,

    Oui, je voudrais créer une procédure stockée à partir de mon programme delphi. C'est vrai que je peut le faire on utilisant flamrobin par exple, mais j'ai une centaine de base de données et mettre un programme c'est plus rapide.

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par chekkal Voir le message
    Oui, je voudrais créer une procédure stockée à partir de mon programme delphi.
    Il fallait le préciser, tout comme il fallait préciser le composant utilisé dans Delphi.
    Votre problème (toujours le même) c'est que lorsque vous posez une question dans les forums est que vous n'exposez jamais complètement le problème et l'environnement.
    On est passé d'une question pure SQL Firebird à une mise à jour de structure de base de données. Moi je trouve ça "anormal"
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #14
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Désolé pour la confusion, ce n'été pas mon attention.

Discussions similaires

  1. [AC-2016] Transfert contenu tables entre 2 bases sur 2 ordinateurs.
    Par JamesPel dans le forum VBA Access
    Réponses: 14
    Dernier message: 12/02/2020, 18h41
  2. Transfert de tables entre deux bases MySQL
    Par baaron dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 31/01/2006, 23h24
  3. AdoQuery:Transfert d'enregistrements entre deux bases access
    Par jnc dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/01/2006, 13h39
  4. Réponses: 1
    Dernier message: 27/01/2006, 14h06
  5. Transfert de table entre base de données sous delphi
    Par gregcommune dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/07/2004, 07h56

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