SQL SERVER – COPIER UNE TABLE

  • Auteur/autrice de la publication :
  • Post category:SQL
  • Commentaires de la publication :0 commentaire

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à.

Laisser un commentaire