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

Développement SQL Server Discussion :

Transfert resultat vers autre BDD


Sujet :

Développement SQL Server

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut Transfert resultat vers autre BDD
    Bonsoir à tous,

    Je dispose d'une base de BDD "A" ou j'ai une requête SQL que j’exécute tout les soir et je voudrais enregistrer le résultat de la requête dans une autre BDD.

    Est-ce possible de réaliser cela depuis SQLServer Directement? ou faut-il passer par une étape/outil intermédiaire


    merci par avance de vos conseils

    guigui69

  2. #2
    Membre chevronné Avatar de AaâÂäÄàAaâÂäÄàAaâÂäÄ
    Homme Profil pro
    db@
    Inscrit en
    Septembre 2021
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : db@

    Informations forums :
    Inscription : Septembre 2021
    Messages : 553
    Par défaut
    C'est possible sans problème.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Bonjour,

    d'accord tu pourrais m'indiquer le nom de la fonction ou le terme SQL afin que je puisse chercher cela?

    merci

  4. #4
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Est-ce que les bases de données sont sur la même instance SQL Server ?

    Si oui un simple INSERT SELECT planifié dans un job pourrait suffire ...

    ++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Bonjour, MikeDavem,

    Non le second serveur sera surement une base MYSQL, mais je peut faire un serveur lié depuis SQL Manager non ?

    Comment faire pour planifier un JOB qui exécuterai cette requête ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Bonjour,
    je pense avoir trouvé éléments "JoB" pour faire la requete.

    Au niveau de la requête est-il possible de faire un "script" sous cette forme:

    1. Requête SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select codigo,nom,prenom from tablesource
    2. if codigo existe dans la table de destination faire un update des champs else faire un insert.

    il y a l'option EXISTE mais je n'arrive pas avoir pour réaliser la boucle pour passer sur chaque ligne de resultat N*1


    merci d'avance pour vos conseils

    guigui69

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Bonsoir,

    sur internet j'ai trouver CURSOR FOR /WHILE EXISTE ci-dessous.

    Est-ce correct de partir sous cette forme?

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    DECLARE @type as nvarchar(256)
    DECLARE @civilite as nvarchar(256)
    DECLARE @prenom as nvarchar(256)
    DECLARE @nom as nvarchar(256)
    DECLARE @cp as nvarchar(256)
    DECLARE @ville as nvarchar(256)
    DECLARE @adresse as nvarchar(256)
    DECLARE @adresse2 as nvarchar(256)
    DECLARE @code_client as nvarchar(256)
    DECLARE @typetiers as nvarchar(256)
    DECLARE @siret as nvarchar(256)
    DECLARE @ape as nvarchar(256)
    DECLARE @nom2 as nvarchar(256)
    DECLARE @sexe as nvarchar(256)
    DECLARE @situationfamiliale as nvarchar(256)
    DECLARE @age as nvarchar(256)
    DECLARE @datenaissance as nvarchar(256)
    DECLARE @nombreenfants as nvarchar(256)
    DECLARE @hobbit as nvarchar(256)
    DECLARE @soushobbit as nvarchar(256)
    DECLARE @cadeaux as nvarchar(256)
    DECLARE @departement as nvarchar(256)
    DECLARE @pays as nvarchar(256)
    DECLARE @adresseincorrecte as nvarchar(256)
    DECLARE @telPro as nvarchar(256)
    DECLARE @telPer as nvarchar(256)
    DECLARE @telPor as nvarchar(256)
    DECLARE @telporpro as nvarchar(256)
    DECLARE @mailpar as nvarchar(256)
    DECLARE @mailpro as nvarchar(256)
    DECLARE @siteweb as nvarchar(256)
    DECLARE @profession as nvarchar(256)
    DECLARE @secteuractivite as nvarchar(256)
    DECLARE @datecrea as nvarchar(256)
    DECLARE @creepar as nvarchar(256)
    DECLARE @datemodif as nvarchar(256)
    DECLARE @modifpar as nvarchar(256)
    DECLARE @incident as nvarchar(256)
    DECLARE @dateincident as nvarchar(256)
    DECLARE @clientsupprime as nvarchar(256)
    DECLARE @datesuppression as nvarchar(256)
    DECLARE @motifsuppressionclient as nvarchar(256)
    DECLARE @effacepar as nvarchar(256)
     
    DECLARE contacts_cursor CURSOR FOR
    Select ......................................;
     
    OPEN contacts_cursor;
    FETCH NEXT FROM contacts_cursor INTO @type, 	@civilite, 	@prenom, 	@nom, 	@cp, 	@ville, 	@adresse, 	@adresse2, 	@code_client, 	@typetiers, 	@siret, 	@ape, 	@nom2, 	@sexe, 	@situationfamiliale, 	@age, 	@datenaissance, 	@nombreenfants, 	@hobbit, 	@soushobbit, 	@cadeaux, 	@departement, 	@pays, 	@adresseincorrecte, 	@telPro, 	@telPer, 	@telPor, 	@telporpro, 	@mailpar, 	@mailpro, 	@siteweb, 	@profession, 	@secteuractivite, 	@datecrea, 	@creepar, 	@datemodif, 	@modifpar, 	@incident, 	@dateincident, 	@clientsupprime, 	@datesuppression, 	@motifsuppressionclient, 	@effacepar;
     
    WHILE @@FETCH_STATUS = 0
       BEGIN
     
          PRINT '>>>>>>>>>>'+@code_client+'<<<<<<<<<<';
     
     
    	  if exists(select * from amplitude_vue_datalake_client where code_client=@code_client)            
    BEGIN            
     update amplitude_vue_datalake_client set code_client=@code_client where code_client=@code_client;  
    End                    
    else            
    begin  
    insert into amplitude_vue_datalake_client (code_client) values(@code_client)  
    end 
     
    	     FETCH NEXT FROM contacts_cursor INTO @type, 	@civilite, 	@prenom, 	@nom, 	@cp, 	@ville, 	@adresse, 	@adresse2, 	@code_client, 	@typetiers, 	@siret, 	@ape, 	@nom2, 	@sexe, 	@situationfamiliale, 	@age, 	@datenaissance, 	@nombreenfants, 	@hobbit, 	@soushobbit, 	@cadeaux, 	@departement, 	@pays, 	@adresseincorrecte, 	@telPro, 	@telPer, 	@telPor, 	@telporpro, 	@mailpar, 	@mailpro, 	@siteweb, 	@profession, 	@secteuractivite, 	@datecrea, 	@creepar, 	@datemodif, 	@modifpar, 	@incident, 	@dateincident, 	@clientsupprime, 	@datesuppression, 	@motifsuppressionclient, 	@effacepar;
     
       END;
    PRINT 'Done WHILE LOOP on TechOnTheNet.com';
     
    CLOSE contacts_cursor;
    DEALLOCATE contacts_cursor;
    GO

  8. #8
    Membre chevronné Avatar de AaâÂäÄàAaâÂäÄàAaâÂäÄ
    Homme Profil pro
    db@
    Inscrit en
    Septembre 2021
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : db@

    Informations forums :
    Inscription : Septembre 2021
    Messages : 553
    Par défaut
    Citation Envoyé par guigui69 Voir le message
    sur internet j'ai trouver CURSOR FOR /WHILE EXISTE ci-dessous.
    Typiquement la méthode à éviter dans ce cas. De ce que je vois, ça s'écrit en quelques requêtes et niveau performance, ça va faire une très grosse différence.

  9. #9
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Ok je n'avais pas compris que la DB de destination était MySQL. Comme quoi la problématique change du tout au tout avec l'ensemble des informations ^^

    Et pourquoi pas ne pas utiliser PowerShell et MySQL Bulk Loader comme expliqué ici. ?

    ++

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Citation Envoyé par AaâÂäÄàAaâÂäÄàAaâÂäÄ Voir le message
    Typiquement la méthode à éviter dans ce cas. De ce que je vois, ça s'écrit en quelques requêtes et niveau performance, ça va faire une très grosse différence.
    Bonjour, tu pourrais m'expliquer la méthode que tu préconises?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Bonjour,

    Avec la fonction MERGE de Sqlserver ça serait réalisable ou pas?

    (BDD SOURCE /Table Client) extrait les clients qui on été créé et/ou modifier entre une date.

    (BDD destination /Table Client) si le client existe (code client unique) faire un update des autre champs sinon creer le client.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    je viens de voir que MERGE ne fonctionne pas avec des serveurs distant.

    je continu mes recherches

Discussions similaires

  1. transfert d'une table vers une autre BDD
    Par Thsl007 dans le forum SQLite
    Réponses: 2
    Dernier message: 12/01/2010, 18h35
  2. Copie bdd Access vers une autre bdd access
    Par lucie22 dans le forum Visual Studio
    Réponses: 5
    Dernier message: 19/10/2009, 15h04
  3. Transfert Windows vers autre disque
    Par silverspike dans le forum Windows
    Réponses: 2
    Dernier message: 02/11/2007, 10h56
  4. HF 5.5 vers autres BdD
    Par ptitpere dans le forum HyperFileSQL
    Réponses: 9
    Dernier message: 28/07/2006, 13h42
  5. Réponses: 18
    Dernier message: 29/05/2006, 10h42

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