Bir veritabanı DB'sinde bir ABC tablosu var. Aynı DB'de ABC_1, ABC_2, ABC_3 adlarıyla ABC kopyaları oluşturmak istiyorum. Bunu Management Studio (tercihen) veya SQL sorgularını kullanarak nasıl yapabilirim?
Bu, SQL Server 2008 R2 içindir.
Bir veritabanı DB'sinde bir ABC tablosu var. Aynı DB'de ABC_1, ABC_2, ABC_3 adlarıyla ABC kopyaları oluşturmak istiyorum. Bunu Management Studio (tercihen) veya SQL sorgularını kullanarak nasıl yapabilirim?
Bu, SQL Server 2008 R2 içindir.
Yanıtlar:
Kullanım SELECT ... INTO
:
SELECT *
INTO ABC_1
FROM ABC;
Bu ABC_1
, aynı sütun yapısına sahip ABC
ve aynı verileri içeren yeni bir tablo oluşturacaktır . Ancak kısıtlamalar (örneğin anahtarlar, varsayılan değerler) kopyalanmaz.
Bu sorguyu her seferinde farklı bir tablo adıyla birden çok kez çalıştırabilirsiniz.
Verileri kopyalamanız gerekmiyorsa, yalnızca aynı sütun yapısına sahip yeni bir boş tablo oluşturmak WHERE
için sahte ifadeli bir cümle ekleyin :
SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
SELECT TOP(0) *
zaman yanlış WHERE
ifade yönteminden daha temiz buluyorum
SSMS'de veritabanınızı Object Explorer'da genişletin, Tablolar'a gidin , ilgilendiğiniz tabloya sağ tıklayın ve Script Table As , Create To , New Query Editor Window'u seçin . Bir bulurum ve (replace CTRL + H (koymak yani tablo adını değiştirmek için) ABC
içinde hangi Bul alan ve ABC_1
içinde Konan ardından OK ).
Bunun SQL ile nasıl yapılacağını gösteren diğer cevaplar da işe yarıyor, ancak bu yöntemdeki fark, aynı zamanda herhangi bir indeks, kısıtlama ve tetikleyici de alacaksınız.
Verileri dahil etmek istiyorsanız, bu tabloyu oluşturduktan sonra tüm verileri ABC'den kopyalamak için aşağıdaki kodu çalıştırın (bir kimlik alanınız varsa aynı kimlik değerlerini koruyun):
set identity_insert ABC_1 on
insert into ABC_1 (column1, column2) select column1, column2 from ABC
set identity_insert ABC_1 off
IDENTITY_INSERT
için ON izni "elle" kimlik sütunu ayarlayın, size örnekte sipariş karışık için. Ayrıca, sütunlarınızı AÇIKLAYINIZ
Tabloyu tüm kısıtlamaları ve anahtarlarıyla çoğaltmak istiyorsanız, aşağıdaki adımları izleyin:
Ardından verileri kopyalamak için aşağıdaki komut dosyasını çalıştırın:
SET IDENTITY_INSERT DuplicateTable ON
INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... )
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable
SET IDENTITY_INSERT DuplicateTable OFF
Bu başka bir seçenektir:
select top 0 * into <new_table> from <original_table>