Verileri başka bir tabloya kopyalama


154

SQL Server'da bir tablodaki verileri aynı şemaya sahip başka bir tabloya nasıl kopyalayabilir / ekleyebilirim?

Düzenle:

diyelim ki bir sorgu var

select * 
into table1 
from table2 
where 1=1 

table1ile aynı şema ve verilerle oluşturulur table2.

Tüm verileri yalnızca zaten var olan bir tabloya kopyalamak için bunun gibi kısa bir sorgu var mı?


Tam bilgi için, bu komutların tablo indekslerini ve tetikleyicilerini kopyalamamaya dikkat edin! Kopya dizinleri ve tetikleyicileri komut dosyası için aşağıdaki
gönderiye bakın

Bunu nasıl çözebilirim? INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

Yanıtlar:


310

Her iki tablo da gerçekten aynı şema ise:

INSERT INTO newTable
SELECT * FROM oldTable

Aksi takdirde, sütun adlarını belirtmeniz gerekir ( newTabletüm sütunlar için bir değer belirtir ve sütunları newTableşema ile aynı sırada seçerseniz, için sütun listesi isteğe bağlıdır ):

INSERT INTO newTable (col1, col2, col3)
SELECT column1, column2, column3
FROM oldTable

1
bir blank datasütun için girmek istersem ne olur ??
hud

3
@coder bu sadece bir seçme cümlesidir, bu nedenle açık NULLs, dize sabitleri, ifadeler ve hatta alt sorgular dahil olmak üzere istediğiniz her şeyi koyabilirsiniz .
Ic.

neden bu çalışmıyorINSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

1
@AbdullahNurum Çünkü skaler sorgunuz birden fazla sütun seçiyor. Bkz. Stackoverflow.com/questions/4141370/… ve stackoverflow.com/questions/6254913/…
lc.

1
Her iki tablo da benzer şema sunuyorsa, ancak EVET'te 'Kimlik Belirtimi' olan bir sütun varsa, SQL deyiminin Kimlik Belirtimi dışındaki tüm sütunları numaralandırması gerekir.
Gabriel Marius Popescu

18

Bunu yapmanın uygun yolu:

INSERT INTO destinationTable
SELECT * FROM sourceTable

16

Yeni tablo yoksa ve her şeyi ile eski tablonun bir kopyasını yapmak istiyorsanız basit yolu aşağıdaki SQL Server'da çalışır.

SELECT * INTO NewTable FROM OldTable

11
INSERT INTO table1 (col1, col2, col3)
SELECT column1, column2, column3
FROM table2                                        

9

Bunu dene:

INSERT INTO MyTable1 (Col1, Col2, Col4)
   SELECT Col1, Col2, Col3 FROM MyTable2


4
INSERT INTO DestinationTable(SupplierName, Country)
SELECT SupplierName, Country FROM SourceTable;

Sütun adlarının aynı olması zorunlu değildir.


3

Koşullu Seçili sütunu ekle

INSERT INTO where_to_insert (col_1,col_2) SELECT col1, col2 FROM from_table WHERE condition;

Tüm verileri bir tablodan diğerine aynı sütun adıyla kopyalayın.

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;

0
CREATE TABLE `table2` LIKE `table1`;
INSERT INTO `table2` SELECT * FROM `table1`;

ilk sorgu yapısı oluşturur table1için table2veri koymak ve ikinci sorgu table1içintable2

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.