importer des données d'une table vers une autre table
Je suis à l'aide de SQL Server 2008 Enterprise. J'ai besoin d'importer toutes les données à partir du Serveur/de l'Instance de Serveur "Foo", Base de données "Foo" et le tableau "Foo", à destination du Serveur/de l'Instance de Serveur "Goo", Base de données de "Goo" et le tableau "Goo". Table Foo et Table Goo sont de le même schéma. Si la même ligne existe pour la table de la Goo, je veux garder l'origine des données dans Goo et ingore l'importation de ligne Foo (table Foo et table Goo deux a une colonne de type uniqueidentifier appelé code client qui sert de clé primaire et de l'index cluster), tout comme l'ignorer double de la clé n'.
Je suis à la recherche de moyens simples et sûrs d'écrire T-SQL pour résoudre des données d'importation/exportation de problème. Tout d'échantillons de référence?
EDIT 1:
J'ai essayé ci-dessous la solution à l'aide de FUSION, mais il a rencontré l'erreur suivante dans SQL Server Management Studio. Toutes les idées de ce qui est mal?
Plus d'information:
LabTest1\SQLServer2008 => Serveur\nom de l'Instance;
OrderDB => DB nom;
dbo => nom du schéma;
Commandes => nom de la Table.
merge into [dbo].[Orders] as Target
using "LabTest1\SQLServer2008.OrderDB.dbo.Orders" as source
on target.Hash = source.Hash
when not matched then
INSERT ([Hash]
,[Order]
,[Name]
,[CreationTime]
,[Description])
VALUES
(
source.[Hash], source.[Order], source.[Name], source.[CreationTime], source.[Description]
)
when MATCHED then
;
Message d'erreur:
Msg 102, Niveau 15, État 1, Ligne 16
Syntaxe incorrecte près de ';'.
merci d'avance,
George
- Ensuite, il suffit de supprimer le QUAND a ÉGALÉ la ligne ensemble - vous ne faites rien si la source et cible les entrées correspondent, pas vrai? Vous pourrait émettre une instruction de mise à JOUR ici
Vous devez vous connecter pour publier un commentaire.
Dans SQL Server 2008, vous pouvez créer un script sur votre Goo.Goo table dans SQL Server Mgmt studio et dites-lui aussi de créer un script pour insérer toutes les données à l'aide de T-SQL
INSERT
consolidés. D'aller dans l'Explorateur d'Objets, cliquez-droit sur la base de données, choisissez "Tâches" > Générer des Scripts", choisir la table que vous souhaitez générer les données insérer des déclarations pour, et assurez-vous d'utiliser cette option ici:Ceux-ci pourraient ensuite être exécuté sur l'autre serveur pour insérer le contenu de la table. Dans ce cas, cependant, vous aurez à gérer l'insertion possible des lignes existantes de vous-même.
D'autre part, si les deux serveurs sont sur le même réseau, vous pouvez simplement utiliser l' "du Serveur Lié" fonction et le lien du serveur source vers le serveur cible et ensuite utiliser SQL Server 2008 MERGE pour importer toutes les données de la source srever de la table sur le serveur cible.
Dans l'Explorateur d'Objets, allez dans "des Objets de Serveur", puis "les Serveurs Liés", un clic droit et "Ajouter un nouveau serveur lié" pour établir une connexion entre les deux serveurs:
Une fois que les serveurs sont reliés, d'une simple instruction MERGE (nouveau dans SQL Server 2008) va vous permettre de fusionner les données provenant de ces deux tableaux:
Lire plus au sujet de la nouvelle instruction MERGE ici:
ou dans SQL Server 2008 Livres en Ligne.
Marc
Si vous utilisez l'édition Enterprise de SQL Server, alors pourquoi faire de votre projet difficile pour vous-même en utilisant des code T-SQL?
Vous pouvez atteindre vos objectifs d'une manière plus simple et robuste manière en utilisant SQL Server Integration Services (SSIS), une technologie spécifiquement conçu pour effectuer des tâches ETL et est bien sûr inclus dans votre édition de SQL Server.
Pré-construit de composants existent déjà pour traiter les données de la manière que vous désirez et vous avez l'avantage supplémentaire d'être en mesure d'intégrer facilement d'audit et des fonctionnalités de journalisation dans votre solution.
Ce que vous cherchez à atteindre pourrait être accompli par pure T-SQL codage, cependant, vous rendre la vie plus difficile pour vous-même dans le processus et la solution qui en résulte serait, à mon avis, la plus susceptible d'être lourd et moins élégant.
Pour moi quand j'ai eu un problème similaire, je viens de copier les données à partir de SQL Server Management Studio fenêtre de sortie et collé dans un fichier Excel, puis importé les données dans une autre base de données à l'aide de cet outil:
http://www.codeproject.com/KB/database/Excel2Sql.aspx