Скопируйте данные в другую таблицу

154

Как скопировать / добавить данные из одной таблицы в другую таблицу с той же схемой в SQL Server?

Редактировать:

скажем, есть запрос

select * 
into table1 
from table2 
where 1=1 

который создает table1с той же схемой и данными, что и в table2.

Есть ли такой короткий запрос, чтобы копировать только данные целиком в уже существующую таблицу?

Раджарам Шелар
источник
Только для полной информации, будьте осторожны, эти команды НЕ копируют индексы и триггеры таблицы! См. Следующий пост для копирования индексов и сценариев триггеров: stackoverflow.com/questions/7582852/…
HausO
Как это решить? INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

Ответы:

310

Если обе таблицы действительно имеют одинаковую схему:

INSERT INTO newTable
SELECT * FROM oldTable

В противном случае вам придется указать имена столбцов (список столбцов для newTableнеобязателен, если вы указываете значение для всех столбцов и выбираете столбцы в том же порядке, что newTableи схема):

INSERT INTO newTable (col1, col2, col3)
SELECT column1, column2, column3
FROM oldTable
ЖХ.
источник
1
Что делать, если я хочу ввести blank dataдля некоторого столбца?
Худ
3
@coder это просто предложение select, поэтому вы можете поместить в него все, что захотите, включая явные NULLs, строковые константы, выражения или даже подзапросы.
жк.
почему это не работаетINSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');
1
@AbdullahNurum Поскольку ваш скалярный запрос выбирает более одного столбца. См. Stackoverflow.com/questions/4141370/… и stackoverflow.com/questions/6254913/…
lc.
1
Если в обеих таблицах представлена ​​сходная схема, но в YES есть столбец с «Спецификацией идентификации», оператору SQL необходимо перечислить все столбцы, кроме столбца с Спецификацией идентификации.
Габриэль Мариус Попеску
18

Это правильный способ сделать это:

INSERT INTO destinationTable
SELECT * FROM sourceTable
Zzz
источник
16

Простой способ, если новая таблица не существует, и вы хотите сделать копию старой таблицы со всем, тогда следующие действия в SQL Server.

SELECT * INTO NewTable FROM OldTable
Сатиш Патель
источник
11
INSERT INTO table1 (col1, col2, col3)
SELECT column1, column2, column3
FROM table2                                        
user3566871
источник
9

Попробуй это:

INSERT INTO MyTable1 (Col1, Col2, Col4)
   SELECT Col1, Col2, Col3 FROM MyTable2
Абе Мисслер
источник
6

Попробуй это:

Insert Into table2
Select * from table1
Капил Хандельвал
источник
4
INSERT INTO DestinationTable(SupplierName, Country)
SELECT SupplierName, Country FROM SourceTable;

Имена столбцов не обязательно должны быть одинаковыми.

S.Adikaram
источник
3

Вставить выбранный столбец с условием

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;
Нимми Верма
источник
0
CREATE TABLE `table2` LIKE `table1`;
INSERT INTO `table2` SELECT * FROM `table1`;

первый запрос создаст структуру из table1to, table2а второй запрос поместит данные из table1to вtable2

Рениш Готеча
источник