Sao chép dữ liệu vào bảng khác


153

Làm cách nào để sao chép / nối dữ liệu từ một bảng vào một bảng khác có cùng lược đồ trong SQL Server?

Biên tập:

giả sử có một truy vấn

select * 
into table1 
from table2 
where 1=1 

tạo ra table1với cùng một lược đồ cũng như dữ liệu như trong table2.

Có bất kỳ truy vấn ngắn như thế này để chỉ sao chép toàn bộ dữ liệu vào một bảng đã có sẵn không?


Chỉ cần thông tin đầy đủ, hãy cẩn thận các lệnh này KHÔNG sao chép chỉ mục và kích hoạt của bảng! Xem bài đăng sau để biết các chỉ mục sao chép và tập lệnh kích hoạt: stackoverflow.com/questions/7582852/iêu
HausO

Làm thế nào để giải quyết điều này? INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

Câu trả lời:


309

Nếu cả hai bảng thực sự là cùng một lược đồ:

INSERT INTO newTable
SELECT * FROM oldTable

Mặt khác, bạn sẽ phải chỉ định tên cột (danh sách cột newTablelà tùy chọn nếu bạn chỉ định giá trị cho tất cả các cột và chọn các cột theo cùng thứ tự như newTablelược đồ của '):

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

1
Điều gì nếu tôi muốn nhập blank datacho một số cột ??
hud

3
@coder nó chỉ là một mệnh đề chọn, vì vậy bạn có thể đặt bất cứ thứ gì bạn muốn, bao gồm NULLs rõ ràng , hằng chuỗi, biểu thức hoặc thậm chí truy vấn con.
lc.

tại sao điều này không hoạt độngINSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

1
@AbdullahNurum Vì truy vấn vô hướng của bạn đang chọn nhiều hơn một cột. Xem stackoverflow.com/questions/4141370/ Mạnhstackoverflow.com/questions/6254913/ Lời
lc.

1
Nếu cả hai bảng trình bày lược đồ tương tự, nhưng có một cột có 'Đặc tả nhận dạng' trên CÓ, câu lệnh SQL cần liệt kê tất cả các cột, ngoại trừ một cột có Thông số nhận dạng.
Gabriel Marius Popescu

18

Đây là cách thích hợp để làm điều đó:

INSERT INTO destinationTable
SELECT * FROM sourceTable

16

Cách đơn giản nếu bảng mới không tồn tại và bạn muốn tạo một bản sao của bảng cũ với mọi thứ sau đó sẽ hoạt động trong SQL Server.

SELECT * INTO NewTable FROM OldTable


9

Thử cái này:

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


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

Nó không phải là tên cột bắt buộc phải giống nhau.


3

Chèn cột được chọn với điều kiện

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

Sao chép tất cả dữ liệu từ bảng này sang bảng khác có cùng tên cột.

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;

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

truy vấn đầu tiên sẽ tạo cấu trúc từ table1đến table2và truy vấn thứ hai sẽ đưa dữ liệu từ table1đếntable2

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.