Скопіюйте дані в іншу таблицю


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деякий стовпець ??
hud

3
@coder - це лише пункт вибору, тому ви можете помістити в нього все, що завгодно, включаючи явні 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

16

Простий спосіб, якщо нової таблиці не існує, і ви хочете зробити копію старої таблиці з усім, що працює далі на SQL Server.

SELECT * INTO NewTable FROM OldTable




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

Не обов’язково імена стовпців бути однаковими.


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`;

перший запит створить структуру від table1до, table2а другий запит покладе дані з table1доtable2

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.