J'ai une table ABC dans une base de données DB. Je souhaite créer des copies de ABC avec les noms ABC_1, ABC_2, ABC_3 dans le même DB. Comment puis-je faire cela à l'aide de requêtes Management Studio (de préférence) ou SQL?
Ceci est pour SQL Server 2008 R2.
Utilisation SELECT ... INTO
:
SELECT *
INTO ABC_1
FROM ABC;
Cela va créer une nouvelle table ABC_1
qui a la même structure de colonne que ABC
et contient les mêmes données. Les contraintes (par exemple, les clés, les valeurs par défaut), cependant, ne sont pas copiées.
Vous pouvez exécuter cette requête plusieurs fois avec un nom de table différent à chaque fois.
Si vous n'avez pas besoin de copier les données, pour créer une nouvelle table vide avec la même structure de colonne, ajoutez une clause WHERE
avec une expression falsy:
SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
Dans SSMS, développez votre base de données dans Explorateur d'objets, accédez à Tables, cliquez avec le bouton droit sur la table qui vous intéresse et sélectionnez Script Table As, Create To, nouvelle fenêtre de l'éditeur de requête. Faites une recherche et remplacez ( CTRL + H ) pour changer le nom de la table ( c'est à dire mettre ABC
dans le champ Find What et ABC_1
dans Remplacer par, puis cliquez OK ).
Les autres réponses montrant comment faire cela par SQL fonctionnent également bien, mais la différence avec cette méthode est que vous obtiendrez également des index, des contraintes et des déclencheurs.
Si vous souhaitez inclure des données, après avoir créé cette table, exécutez le script ci-dessous pour copier toutes les données de ABC (en conservant les mêmes valeurs d'ID si vous disposez d'un champ d'identité):
set identity_insert ABC_1 on
insert into ABC_1 (column1, column2) select column1, column2 from ABC
set identity_insert ABC_1 off
Si vous souhaitez dupliquer la table avec toutes ses contraintes, procédez comme suit:
Ensuite, pour copier les données, exécutez le script ci-dessous:
SET IDENTITY_INSERT DuplicateTable ON
INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... )
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable
SET IDENTITY_INSERT DuplicateTable OFF
1ère option
select *
into ABC_1
from ABC;
2ème option: utiliser SSIS, c’est-à-dire faire un clic droit sur la base de données dans l’objet Explorateur> toutes les tâches> exporter les données
C'est une autre option:
select top 0 * into <new_table> from <original_table>
utiliser SQL Server Server Management Studio ou Netcat et qui sera plus facile à manipuler SQL
Vous devez écrire SSIS pour copier la table et ses données, contraintes et déclencheurs. Nous avons dans notre organisation un logiciel appelé Kal Admin de kalrom Systems qui a une version gratuite à télécharger (je pense que la fonctionnalité des tables de copie est optionnelle)