191

如何在 SQL Server 中将数据从一个表复制/附加到另一个具有相同架构的表中?

编辑:

假设有一个查询

select * 
into table1 
from table2 
where 1=1 

table1使用与 中相同的模式和数据创建table2

是否有任何像这样的简短查询仅将整个数据复制到已经存在的表中?

4

11 回答 11

377

如果两个表确实是相同的架构:

INSERT INTO newTable
SELECT * FROM oldTable

否则,您必须指定列名(newTable如果要为所有列指定值并以与 的模式相同的顺序选择列,则列列表是可选newTable的):

INSERT INTO newTable (col1, col2, col3)
SELECT column1, column2, column3
FROM oldTable
于 2012-11-05T17:56:46.413 回答
26

如果新表不存在并且您想使用所有内容制作旧表的副本,那么简单的方法可以在 SQL Server 中使用。

SELECT * INTO NewTable FROM OldTable
于 2017-10-13T14:15:43.743 回答
23

这是正确的方法:

INSERT INTO destinationTable
SELECT * FROM sourceTable
于 2012-11-05T17:58:27.337 回答
15
INSERT INTO table1 (col1, col2, col3)
SELECT column1, column2, column3
FROM table2                                        
于 2014-05-27T08:21:03.573 回答
10

试试这个:

INSERT INTO MyTable1 (Col1, Col2, Col4)
   SELECT Col1, Col2, Col3 FROM MyTable2
于 2012-11-05T17:56:14.743 回答
6

试试这个:

Insert Into table2
Select * from table1
于 2012-11-05T17:59:13.177 回答
4
INSERT INTO DestinationTable(SupplierName, Country)
SELECT SupplierName, Country FROM SourceTable;

列名相同不是强制性的。

于 2016-06-29T03:23:14.427 回答
4

插入带有条件的选定列

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

将所有数据从一个表复制到另一个具有相同列名的数据。

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;
于 2019-04-25T11:30:33.877 回答
4
CREATE TABLE `table2` LIKE `table1`;
INSERT INTO `table2` SELECT * FROM `table1`;

第一个查询将创建结构 from table1to table2,第二个查询将数据 from table1totable2

于 2020-05-07T05:02:04.077 回答
0

将一个表的所有列复制到另一个表:

INSERT INTO table2
SELECT * FROM table1
WHERE condition;

仅将一个表中的一些列复制到另一个表中:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

您可以通过执行以下命令来复制或“克隆”表的内容:

CREATE TABLE new_table AS SELECT * FROM original_table;
于 2021-07-24T07:52:20.627 回答
0

-- 对于 Sql Server 用户。

如果您没有新表,那么您可以创建与旧表具有相同结构的新表,并将数据从旧表复制到新表。例如:

select * into new_table
from old_table; 

您也可以复制列/表结构,以及一些数据。例如:

select * into new_table
from old_table 
where country = 'DE'; 
于 2021-10-19T10:07:38.597 回答