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 :

Migration d'une database vers une autre


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 55
    Points : 42
    Points
    42
    Par défaut Migration d'une database vers une autre
    Bonjour,

    Je pose une question car je n'ai pas trouvé réponse sur la FAQ ou les tutoriels concernant mon problème (ou alors j'ai mal cherché), je m'explique :

    Il faut que je migre des données concernant un champ "free_text" (varchar(MAX)) d'une table TA d'une database DA vers une database DB.

    Les deux tables des deux bases ont la même structure et garde les mêmes id.

    Ma question est la suivante : Comment faire une requête qui prend les informations de la table TA vers la TB sachant que les id sont les mêmes dans les deux databases ?

    Quelqu'un saurait comment faire ? Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Avec quel SGBD ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Si les deux bases sont sur le même serveur, il ne devrait pas y avoir de difficulté à transférer les données d'une BDD à l'autre avec une requête du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO DB.TA
    SELECT *
    FROM DA.TA
    Ce système fonctionne sous MySQL.

    Si les deux BDD sont deux serveurs différents, alors il faudra probablement envisager une exportation / importation via un fichier texte.
    Sous MySQL encore, utiliser le couple SELECT INTO OUTFILE / LOAD DATA INFILE.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 55
    Points : 42
    Points
    42
    Par défaut
    Je suis sous SQL SERVER, je ne sais pas si ça pose problème ou alors si je peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO DB.TA
    SELECT *
    FROM DA.TA
    Merci

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Ça devrait aussi fonctionner sous SQL Server
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 55
    Points : 42
    Points
    42
    Par défaut
    Alors je fais un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO [ROCK_V2].[dbo].[protection_colleges]
    SELECT	[ROCK_V1].[dbo].[protection_premium_periods].[contract_id], 
    		[ROCK_V1].[dbo].[protection_premium_periods].[html_text]
    FROM [ROCK_V1].[dbo].[protection_premium_periods]
    WHERE [ROCK_V1].[dbo].[protection_premium_periods].[contract_id] = [ROCK_V2].[dbo].[protection_colleges].[contract_id]
    AND [ROCK_V1].[dbo].[protection_premium_periods].[html_text] is not null
    Mais ça me sort les erreurs suivantes :

    Msg*4104, Niveau*16, État*1, Ligne*1
    L'identificateur en plusieurs parties 'ROCK_V2.dbo.health_colleges.contract_id' ne peut pas être lié.
    Msg*8101, Niveau*16, État*1, Ligne*1
    Une valeur explicite de la colonne identité de la table 'ROCK_V2.dbo.health_colleges' ne peut être spécifiée que si la liste des colonnes est utilisée et si IDENTITY_INSERT est défini sur ON.
    Qu'est-ce qui ne va pas ?

  7. #7
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous ne pouvez pas spécifier une requête INSERT comme vous l'avez fait.
    Vous pouvez l'écrire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    INSERT INTO ROCK_V2.dbo.protection_colleges
    (
    	contract_id,
    	html_text
    )
    SELECT R1_PPP.contract_id, 
    		R1_PPP.html_text
    FROM ROCK_V1.dbo.protection_premium_periods AS R1_PPP
    INNER JOIN ROCK_V2.dbo.protection_colleges AS R2_PC
    	ON R1_PPP.contract_id = R2_PC.contract_id
    WHERE R1_PPP.html_text IS NOT NULL
    Je n'ai mis des alias que pour faciliter la lecture.
    Les colonnes de l'INSERT que j'ai mises ne sont certainement pas celles de votre table, surtout vu l'erreur :

    Msg*8101, Niveau*16, État*1, Ligne*1
    Une valeur explicite de la colonne identité de la table 'ROCK_V2.dbo.health_colleges' ne peut être spécifiée que si la liste des colonnes est utilisée et si IDENTITY_INSERT est défini sur ON.
    Une colonne de type entier avec la propriété de compteur (probablement la clé primaire d'ailleurs) ne peut pas être insérée, puisque c'est SQL Server qui calcule la valeur à votre place.
    Si vous voulez néanmoins réaliser cela, vous devez spécifier juste avant l'INSERT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET IDENTITY INSERT ROCK_V2.dbo.health_colleges ON
    @++

Discussions similaires

  1. [VB.Net] Comment copier une DataRow d'une table vers une autre ?
    Par YLF dans le forum Accès aux données
    Réponses: 7
    Dernier message: 05/09/2012, 23h23
  2. [C#] transferer une ligne d'une datagrid vers une autre datagrid
    Par nassimmm dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/08/2006, 09h38
  3. copier une ligne d'une table vers une autre
    Par Adren dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/08/2006, 11h54
  4. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39
  5. [VB.NET] Copie d'une table d'une DB vers une autre
    Par SergeF dans le forum Windows Forms
    Réponses: 9
    Dernier message: 20/11/2004, 09h54

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