Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Copier une table avec ses données ou uniquement sa structure

Nouvelle version de l'article : http://www.sqlnco.ch/2011/09/realiser-une-copie-d-une-table-dans-sql-server-avec-ou-sans-donnees/

Petite astuce assez utile lorsque vous avez besoin de réaliser une copie d'une table avec ses données ou lorsque vous avez besoin de juste de la structure de cette dernière. Comme aux dernières nouvelles le copier / coller ne fonctionne pas avec les bases de données, il faut procéder autrement.

L'astuce est un mix entres le INSERT pour l'insertion des données de la table d'origine et CREATE TABLE pour créer la nouvelle table. La commande miracle s'appelle SELECT INTO, voici un petit exemple

SELECT *
INTO NouvelleTable
FROM TableACopier

L'effet produit est le suivant :

  • Une nouvelle table nommée « NouvelleTable » est créée, la définition de celle-ci correspond aux champs renvoyés par la requête. Attention tout de même, les contraintes et les index ne sont pas copiés ! La propriété IDENTITY (compteur) d'un champ, quant à elle, est conservée.
  • On réalise alors un INSERT des données renvoyées par le SELECT dans cette nouvelle table

Ce qui fait que « NouvelleTable » est la copie quasi-conforme de ma table « TableACopier ». Il est tout à fait possible de lister les champs à utiliser dans le SELECT est ainsi de produite nouvelle table possédant moins de champs que l'originale. Il est possible de filtrer les données renvoyées par le SELECT est donc insérées dans la nouvelle table, on peut aussi procéder à une jointure entre 2 tables, etc.

L'usage d'une table temporaire est autorisé dans le INTO on obtiendra alors

SELECT *
INTO #NouvelleTable
FROM TableACopier

Maintenant que faire si vous souhaitez uniquement la structure (le CREATE TABLE) et non pas les données ? C'est assez simple on filtre le SELECT de manière à ce qu'il ne renvoie rien. Ce qui donne :

SELECT *
INTO NouvelleTable
FROM TableACopier
WHERE 1 = 0

Cette fois vous avez bien « NouvelleTable » à nouveau, mais totalement vide !

Attention à la commande SELECT INTO, du fait que vous créez la nouvelle table on ne peut l'exécuter qu'une seule fois, la seconde générant une erreur vous signalant que l'objet existe déjà.

Bonne copie…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié vendredi 21 septembre 2007 23:51 par christian
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [PowerShell 3] Télécharger et installer la documentation en ligne par Blog de SPBrouillet (Pierrick BROUILLET) le il y a 17 heures et 23 minutes

- [#SharePoint 2010][#SQLServer 2012] AlwaysOn pour SharePoint (1/4) : Configuration (1ère partie)… par Le blog de Patrick [MVP SharePoint] le il y a 22 heures et 49 minutes

- Job Day @MIC Brussels - .Net Developers on Mobile applications par Le Blog (Vert) d'Arnaud JUND le 05-15-2012, 20:26

- [SharePoint 2010] – SharePoint 2010, Windows (Server) 8 et des erreurs IIS sont dans une VM… par Blog de SPBrouillet (Pierrick BROUILLET) le 05-14-2012, 12:10

- [Event] Windows Azure dev Camp le 20 juin! par Fathi Bellahcene le 05-13-2012, 09:29

- Comment redimensionner une image avec WinRT : plusieurs solutions par Richard Clark le 05-11-2012, 15:43

- Event : Swiss SharePoint Club Meeting #20 à Yverdon par Blog Technique de Romelard Fabrice le 05-11-2012, 15:24

- Réflechissons un peu ce matin à propos des ORM par Richard Clark le 05-11-2012, 08:48

- #SharePoint Solutions Roadshow le 5 juin à Issy ! par Le blog de Patrick [MVP SharePoint] le 05-09-2012, 15:10

- SharePoint : Mes alertes ne marchent pas … Que faire ? Comment réparer ou agir ? par The Mit's Blog le 05-08-2012, 14:59