Soru SQL Server - Bir veritabanı tablosunun bir kopyasını oluşturun ve aynı veritabanına yerleştirin?


Veritabanı DB'de bir tablo ABC var. Aynı DB'de ABC_1, ABC_2, ABC_3 adlarıyla ABC'nin kopyalarını oluşturmak istiyorum. Bunu Management Studio'yu (tercihen) veya SQL sorgularını kullanarak nasıl yapabilirim?

Bu SQL Server 2008 R2 içindir.


44
2018-03-15 08:55


Menşei


Doğrudan ilgili olmayan başka bir yayın, ancak yukarıdaki kullanım durumu ile ilgili olabilir - stackoverflow.com/questions/6810425/... Bu, kopyaların yeniden oluşturulmasına gerek kalmadan tablonun kopyalarını düzenlemek istediğinizde (örneğin, boş değerlere izin verme, veri türünü değiştirme vb.) yararlı olabilir. - sequel.learner


Cevaplar:


kullanım SELECT ... INTO:

SELECT *
INTO ABC_1
FROM ABC;

Bu yeni bir tablo oluşturacak ABC_1 aynı sütun yapısına sahip ABC ve aynı verileri içerir. Bununla birlikte, 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 için WHERE felç bir ifadeyle fıkra:

SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;

105
2018-03-15 08:57



Problemim için mükemmel cevap. - sequel.learner
Tamamen çalışmaz .... Orijinalde hesaplanan sütunlar hedefte aynı kopyalanmaz. Ayrıca, PK ve Varsayılan kısıtlamaları kopyalanmaz. - Simon Green
@SimonGreen - Bu sorun için kodunuzla yeni bir soru gönderebilirsiniz. - Mahmoud Gamal
Tabii ki tamamen çalışmıyor. Kısıtlamaların kopyalanmaması, birincil anahtarlar veya varsayılan değerler olmaması konusunda uyardı. Teklif ettiği komut, aynı sütun yapısına sahip yeni bir tablo oluşturur (tıpkı söylediği gibi) ve tüm verileri sizin için yeni tabloya ekler. - user5855178


SSMS UI aracılığıyla şema (DDL oluştur) kopyalayın

SSMS'de veritabanınızı genişletin Nesne Gezgini, git Tablolarİlgilendiğiniz masaya sağ tıklayın ve seçin Komut Dosyası Tablosu, Oluştur, Yeni Sorgu Düzenleyicisi Penceresi. Bul ve değiştir (CTRL + 'H) tablo adını değiştirmek (örneğin koymak ABC içinde Ne buldun alan ve ABC_1 içinde İle değiştirin sonra tıklayın tamam).

Şema T-SQL ile kopyala

Bunu, SQL tarafından nasıl yapılacağını gösteren diğer cevaplar da iyi çalışır, ancak bu yöntemdeki fark, herhangi bir dizin, kısıtlama ve tetikleyici de alırsınız.

Verileri Kopyala

Veri eklemek istiyorsanız, bu tabloyu oluşturduktan sonra, ABC'den tüm verileri kopyalamak için aşağıdaki komut dosyasını çalıştırın (bir kimlik alanınız varsa aynı kimlik değerlerini koruyarak):

set identity_insert ABC_1 off
insert into ABC_1 select * from ABC
set identity_insert ABC_1 on

10
2018-03-15 09:16





1. seçenek

select *
  into ABC_1
  from ABC;

2. seçenek: SSIS'yi kullanın, yani nesne gezginde veritabanına sağ tıklayın> tüm görevler> verileri dışa aktar

  • kaynak ve hedef: senin DB
  • Kaynak tablosu: ABC
  • hedef tablo: ABC_1 (tablo oluşturulacak)

3
2018-03-15 08:59





Tabloyu ve verilerini, kısıtlamalarını ve tetikleyicilerini kopyalamak için SSIS yazmanız gerekir. Kalrom Systems tarafından indirilmek üzere ücretsiz bir sürümü olan Kalrome Systems adlı bir yazılımımız var. (Kopya tablolarının isteğe bağlı olduğunu düşünüyorum)


3
2018-06-01 04:57





Tabloyu tüm kısıtlamaları ve anahtarlarıyla çoğaltmak istiyorsanız aşağıdaki adımları izleyin:

  1. SQL Management Studio'da veritabanını açın.
  2. Kopyalamak istediğiniz tabloya sağ tıklayın.
  3. Komut Dosyası Tablosunu -> Oluştur -> Yeni Sorgu Düzenleyici Penceresi olarak seçin. Bu, tabloyu yeni bir sorgu penceresinde yeniden oluşturmak için bir komut dosyası oluşturacaktır.
  4. Komut dosyasındaki tablo adını ve ilgili anahtarları ve kısıtlamaları değiştirin.
  5. Komut dosyasını yürütün.

Ardından, verileri kopyalamak için aşağıdaki senaryoyu ç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

2
2017-09-11 02:14





sql server manegement stüdyosunu veya netcat'i kullanın ve sql'i işlemek daha kolay olacaktır


1
2018-03-15 08:59





Bu başka bir seçenek:

select top 0 * into <new_table> from <original_table>

1
2018-05-11 02:23



Bu istek, tabloyu veri olmadan kopyalar. Kullanıcıdan tabloları kopyalaması istenmiştir. - Alekzander