2009-12-02 6 views
94
CREATE TABLE foo SELECT * FROM bar 

copie le tableau foo et les doublons comme une nouvelle table appelée bartable de copie sans la copie de données

Comment puis-je copier le schéma de foo à une nouvelle table appelée barre sans copie sur les données sous forme de bien?

+1

comment faire la même chose dans sqlserver 2005? – Thunder

+0

que signifie de la barre? –

Répondre

87

Essayez:

CREATE TABLE foo SELECT * FROM bar LIMIT 0 

Ou:

CREATE TABLE foo SELECT * FROM bar WHERE 1=0 
+2

Je pense que le deuxième exemple est le moyen universel :-) – Khb

+0

comment faire la même chose dans sqlserver 2005? – Thunder

+3

@Thunder: Essayez 'select * dans foo à partir de la barre où 1 = 0' – Andomar

17
SHOW CREATE TABLE bar; 

vous obtiendrez une requête de création de cette table, modifier le nom de la table, ou tout ce que vous voulez, puis l'exécuter .

Ceci vous permettra de copier les index et aussi de modifier manuellement la création de la table.

Vous pouvez également exécuter la requête dans un programme.

+0

Comment pouvez-vous convertir 'show create table bar' en une instruction dynamiquement exécutable? – Pacerier

+0

Le résultat donné par 'show create table bar' est déjà exécutable, si le script a l'autorisation de créer des tables, vous pouvez l'analyser et ensuite exécuter des instructions alter table. –

+0

Monsieur, vous êtes le maître de l'univers. Merci – bonitzenator

272

Essayez

CREATE TABLE foo LIKE bar; 

de sorte que les clés et les index sont copiés comme bien.

Documentation

+26

Ceci est une meilleure réponse car cela copie également les index! – Chaitan

+1

C'EST LA MEILLEURE FAÇON! MERCI MEC. – Aldee

+1

C'est beaucoup mieux, mais ne copie toujours pas les clés étrangères. –

Questions connexes