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

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01