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

Administration SQL Server Discussion :

Import/Export des tables d'une BDD SQL Server


Sujet :

Administration SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Import/Export des tables d'une BDD SQL Server
    Bonjour,

    j'ai une base de données SQL Server sur un serveur A, et je ne veux importer que le contenu de quelques tables de cette base, pour injecter apres ce contenu dans des tables vides d'une autre BDD sur un autre serveur B ,

    mon but c'est de remplir des tables vides dans le serveur B, sans toucher les autres composants du schema de la base de données.

    est-t-il possible? si oui je vous remercie de me dire comment faire?

    Merci pour votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    1) par SQL directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO MonServeurA.MaBaseA.MonSchema.MaTable
    SELECT ...
    FROM MonServeurB.MaBaseB.MonSchema.MaTable;
    A condition d'avoir défini un serveur lié.

    2) par import export
    Via bcp (utilitaire en ligne de commande), Voir BOL.

    3) par lot SSIS (graphique)
    Via BIDS (Business Intelligence Developpement Studio)

    Le plus rapide, efficace et simple étant dans l'ordre 1, 2, 3

    A +

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Merci pour la réponse, j'ai fait un test sur une seule table et ça marche.

    Mais je crois que ça va me me poser des problèmes avec plusieurs tables parceque j'ai une base assez complexe, avec des contraintes d'intégrité (clés primaires, clés étrangeres ...ect), et il faut chercher par quelle table je dois commencer (on cascade).

    maintenant je cherche un moyen pour impoter le paquet des tables entier d'une base vers une autre, et ceci toujours dans le but de ne pas toucher les autre composant de la base (securité ... )

    Merci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    C'est bien plus simple que vous ne le pensez :
    0) générez un script qui a) supprime b) remet les contraintes FK de votre base
    1) base cible : avant d'importer supprimez les FK
    2) base cible : videz les tables
    3) base cible : importez les données
    4) base cible : remettez les contraintes.

    C'est généralement comme cela que l'on fait dans un DW !

    A +

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Merci SQLpro pour tes reponses

    c'est une excelente astuce, mais:

    1. comment faire pour générer un script qui supprime et remet les contraintes FK de ma base.

    2. est ce qu'il y a une table où sont stockées toutes les contraintes FK/PK? et où?

    3.maintenant je souhaite copier toutes les tables de la base avec les contraites et non pas quelques tables comme je l'avais dit dans mon premier post. (s'il existe un moyen pour copier toutes les tables d'un seul coup au lieu de copier une par une ça sera !)

    Merci

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Points : 15
    Points
    15
    Par défaut
    La réponse arrive tres en retard mais j'espere qu'elle pourra aider au moins quelqu'un

    Pour desactiver les clefs étrangères sur sql server 2008 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE @Query varchar(MAX) = '';
     
    SELECT 
    	@Query = @Query + 'ALTER TABLE '+ PT.name+' NOCHECK CONSTRAINT '+ FK.name +';'   
    FROM	sys.foreign_keys AS FK 
    	INNER JOIN sys.foreign_key_columns AS FKC ON FK.object_id = FKC.constraint_object_id 
    	INNER JOIN sys.columns AS PC ON FKC.parent_object_id = PC.object_id AND FKC.parent_column_id = PC.column_id 	
    	INNER JOIN sys.tables AS PT ON PC.object_id = PT.object_id 
     
    EXEC(@Query);
    Pour les réactiver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE @Query varchar(MAX) = '';
     
    SELECT 
    	@Query = @Query + 'ALTER TABLE '+ PT.name+' WITH CHECK CHECK CONSTRAINT '+ FK.name +';'   
    FROM	sys.foreign_keys AS FK 
    	INNER JOIN sys.foreign_key_columns AS FKC ON FK.object_id = FKC.constraint_object_id 
    	INNER JOIN sys.columns AS PC ON FKC.parent_object_id = PC.object_id AND FKC.parent_column_id = PC.column_id 
    	INNER JOIN sys.tables AS PT ON PC.object_id = PT.object_id 
     
    EXEC(@Query);

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Scripter la création et la suppression des FOREIGN KEYs :

    voir l'article que j'ai écrit à ce sujet : http://blog.developpez.com/sqlpro/p8...suppression-d/

    A +

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/06/2013, 19h47
  2. [Débutant] Comment ajouter des donnees a une BDD SQL SERVER Via une Page ASP.NET
    Par lyes_djaml dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/09/2011, 18h02
  3. Réponses: 2
    Dernier message: 28/05/2011, 15h01
  4. Export des données d'une base SQL Server 2000 SP3
    Par zanyth dans le forum Administration
    Réponses: 5
    Dernier message: 25/03/2009, 18h18
  5. Réponses: 10
    Dernier message: 02/04/2007, 18h22

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