2009-03-05 10 views
9

Je travaille avec SQL Server (je suis un SQL Server noob) et en essayant de modifier une table.Je veux CREATE TABLE LIKE de stocker en toute sécurité données alors que je laisse tomber les clés et les contraintes et tous les autres rigamorole que SQL Server semble exiger lors de la modification sur la table d'origine, mais je ne l'ai pas été en mesure de trouver une correspondance à cette commande ...Quel est l'équivalent de 'CREATE TABLE ... LIKE ...' dans SQL Server

+0

J'utilise Visual Studio SQL Server Explorer pour cette fin, il permet des mises à jour automatiques de la structure de base de données. – Ginden

Répondre

14

Vous pouvez faire

SELECT * INTO #MyTable_tmp FROM MyTable

Ensuite, modifiez votre MyTable et copiez vos données. approches que j'ai vu est de créer une nouvelle table appelez-le Mytable_Tmp (pas une table temporaire), qui sera votre nouvelle table.

Ensuite, copiez vos données pour effectuer les migrations dont vous avez besoin. Ensuite, vous allez supprimer la table d'origine et faire un changement de nom sur Mytable.

Ou vous pouvez obtenir l'un des nombreux outils excellents qui comparent les bases de données et génèrent des scripts de différence ou VSTS DB Edition (Livré avec développeur) et vous pouvez faire un script diff à partir d'un fichier projet vers une DB.

Modifier

Lorsque vous exécutez SELECT * INTO #MyTable DE MyTable, SQL Server crée une nouvelle table temporaire appelée #MyTable qui correspond à chaque colonne et le type de données de votre clause select. Dans ce cas, nous sélectionnons * pour qu'il corresponde à MyTable. Cela crée uniquement les colonnes, il ne copie pas les valeurs par défaut, les index de contraintes ou toute autre chose.

+0

Ma question n'est pas comment mettre des données dans une table temporaire déjà existante. Je suis plus préoccupé par la création d'une table temporaire qui correspond à la table existante. J'ai des dizaines de tables que je dois modifier et je ne veux pas avoir à créer les tables temporaires à la main. – Ichorus

+0

Ahh! Très bien! Je vous remercie! – Ichorus

+0

Et les clés? indice? clés étrangères? –

17

vous voulez recréer la même structure?

que diriez-vous

SELECT * 
into test 
FROM myRealTable 
where 0=1 

aucune donnée ne sera inséré dans la nouvelle table

+2

SELECT top 0 * dans le test FROM myRealTable, obtiendra également le même résultat –

Questions connexes