Salin data ke tabel lain


154

Bagaimana cara menyalin / menambahkan data dari satu tabel ke tabel lain dengan skema yang sama di SQL Server?

Edit:

katakanlah ada permintaan

select * 
into table1 
from table2 
where 1=1 

yang dibuat table1dengan skema yang sama serta data seperti pada table2.

Apakah ada pertanyaan pendek seperti ini untuk hanya menyalin seluruh data hanya ke tabel yang sudah ada?


Hanya untuk informasi lengkap, hati-hati perintah ini JANGAN menyalin indeks dan pemicu tabel! Lihat posting berikut untuk copy indeks dan skrip pemicu: stackoverflow.com/questions/7582852/…
HausO

Bagaimana cara mengatasinya? INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

Jawaban:


310

Jika kedua tabel benar-benar skema yang sama:

INSERT INTO newTable
SELECT * FROM oldTable

Jika tidak, Anda harus menentukan nama kolom (daftar kolom newTableadalah opsional jika Anda menentukan nilai untuk semua kolom dan memilih kolom dalam urutan yang sama seperti newTableskema):

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

1
bagaimana jika saya ingin memasukkan blank databeberapa kolom ??
hud

3
@coder itu hanya klausa pilih, jadi Anda dipersilakan untuk memasukkan apa pun di dalamnya yang Anda inginkan, termasuk NULLs eksplisit , konstanta string, ekspresi, atau bahkan subqueries.
lc.

mengapa ini tidak berhasilINSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

1
@AbdullahNurum Karena permintaan skalar Anda memilih lebih dari satu kolom. Lihat stackoverflow.com/questions/4141370/… dan stackoverflow.com/questions/6254913/…
lc.

1
Jika kedua tabel menyajikan skema yang sama, tetapi ada kolom dengan 'Spesifikasi Identitas' pada YA, pernyataan SQL perlu menyebutkan semua kolom, kecuali yang dengan Spesifikasi Identitas.
Gabriel Marius Popescu

18

Ini adalah cara yang tepat untuk melakukannya:

INSERT INTO destinationTable
SELECT * FROM sourceTable

16

Cara sederhana jika tabel baru tidak ada dan Anda ingin membuat salinan tabel lama dengan semuanya kemudian bekerja di SQL Server.

SELECT * INTO NewTable FROM OldTable


9

Coba ini:

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


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

Itu bukan nama kolom wajib untuk sama.


3

Masukkan kolom yang dipilih dengan kondisi

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

Salin semua data dari satu tabel ke tabel lainnya dengan nama kolom yang sama.

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;

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

kueri pertama akan membuat struktur dari table1ke table2dan kueri kedua akan menempatkan data dari table1ketable2

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.