J'ai une base de données appelée foo et une base de données appelée bar. J'ai une table dans foo appelée tblFoobar que je veux déplacer (données et tout) à la barre de base de données de la base de données foo. Quelle est l'instruction SQL pour faire cela?
Sur SQL Server? et sur le même serveur de base de données? Utilisez un nom en trois parties.
INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
Cela ne fait que déplacer les données. Si vous souhaitez déplacer la définition de la table (et d'autres attributs tels que les autorisations et les index), vous devrez faire autre chose.
La tâche "Importer des données" de SQL Server Management Studio (cliquez avec le bouton droit de la souris sur le nom de la base de données, puis sur les tâches) vous en fournira l'essentiel. Exécutez-le à partir de la base de données dans laquelle vous souhaitez copier les données.
Si les tables n'existent pas, elles seront créées pour vous, mais vous devrez probablement recréer tous les index, etc. Si les tables existent, les nouvelles données seront ajoutées par défaut, mais vous pouvez les ajuster (modifier les correspondances) afin de supprimer toutes les données existantes.
Je l'utilise tout le temps et cela fonctionne assez bien.
Cela devrait fonctionner:
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
Ce sera pas copier les constellation, les valeurs par défaut ou les index. La table créée aura pas un index clusterisé.
Sinon, vous pouvez:
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
Si votre table de destination existe et est vide.
Si c’est une seule table, alors tout ce que vous avez à faire est
Vous devez également prendre en compte d’autres mises à jour, telles que la migration d’autres objets dans le futur. Notez que vos tables source et cible n'ont pas le même nom. Cela signifie que vous devrez également apporter des modifications si vous utilisez des objets dépendants tels que des vues, des procédures stockées, etc.
Avec un ou plusieurs objets, vous pouvez aller manuellement sans aucun problème. Cependant, quand il y a plus que quelques mises à jour, les outils de comparaison par une tierce partie sont très utiles. Actuellement, j’utilise ApexSQL Diff pour les migrations de schéma, mais vous ne pouvez vous tromper avec aucun autre outil.
Scriptez le create table
dans le studio de gestion, exécutez ce script dans la barre pour créer la table. (Clic droit sur la table dans l'explorateur d'objets, table de script en tant que, créer dans ...)
INSERT bar.[schema].table SELECT * FROM foo.[schema].table
Vous pouvez également utiliser assistant de génération de scripts SQL Server pour vous aider à créer des scripts SQL pouvant effectuer les opérations suivantes:
Bon exemple de flux de travail pour SQL Server 2008 avec des captures d'écran affichées ici .
Vous pouvez aller avec cette voie: (un exemple général)
insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers
De même, si vous devez également générer les noms de colonne pour insérer une clause insert, utilisez:
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName')
Copiez le résultat et collez-le dans la fenêtre de requête pour représenter les noms de colonne de votre table. Même ceci exclura également la colonne d'identité:
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName') and is_identity = 0
Rappelez-vous que le script pour copier les lignes fonctionnera si les bases de données appartiennent au même emplacement.
Vous pouvez essayer ceci.
select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>
Le nom du serveur est facultatif si les deux bases de données sont sur le même serveur.
S'il existe une table et que nous souhaitons copier uniquement des données, nous pouvons essayer cette requête.
insérer dans Destination_Existing_Tbl sélectionner col1, col2 FROM Source_Tbl
Copier les données
INSERT INTO Alfestonline..url_details(url,[status],recycle)
SELECT url,status,recycle FROM AlfestonlineOld..url_details