Skopiuj dane do innej tabeli

154

Jak skopiować / dołączyć dane z jednej tabeli do innej tabeli z tym samym schematem w SQL Server?

Edytować:

powiedzmy, że jest zapytanie

select * 
into table1 
from table2 
where 1=1 

który tworzy table1z tym samym schematem i danymi jak w table2.

Czy jest jakieś krótkie zapytanie, takie jak to, aby skopiować całe dane tylko do już istniejącej tabeli?

Rajaram Shelar
źródło
Aby uzyskać pełne informacje, uważaj, aby polecenia NIE kopiowały indeksów i wyzwalaczy tabeli! Zobacz następujący post dotyczący kopiowania indeksów i skryptu wyzwalającego: stackoverflow.com/questions/7582852/…
HausO
Jak to rozwiązać? INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

Odpowiedzi:

310

Jeśli obie tabele są naprawdę tym samym schematem:

INSERT INTO newTable
SELECT * FROM oldTable

W przeciwnym razie będziesz musiał określić nazwy kolumn (lista kolumn newTablejest opcjonalna, jeśli określasz wartość dla wszystkich kolumn i wybierasz kolumny w tej samej kolejności, co newTableschemat):

INSERT INTO newTable (col1, col2, col3)
SELECT column1, column2, column3
FROM oldTable
lc.
źródło
1
co jeśli chcę wejść blank datado jakiejś kolumny ??
hud
3
@coder to tylko klauzula wyboru, więc możesz umieścić w niej wszystko, co chcesz, w tym jawne NULLs, stałe łańcuchowe, wyrażenia, a nawet podzapytania.
lc.
dlaczego to nie działaINSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');
1
@AbdullahNurum Ponieważ twoje zapytanie skalarne wybiera więcej niż jedną kolumnę. Zobacz stackoverflow.com/questions/4141370/… i stackoverflow.com/questions/6254913/…
lc.
1
Jeśli obie tabele przedstawiają podobny schemat, ale istnieje kolumna z „Specyfikacją tożsamości” na TAK, instrukcja SQL musi wyliczyć wszystkie kolumny, z wyjątkiem kolumny ze Specyfikacją tożsamości.
Gabriel Marius Popescu
18

Oto właściwy sposób:

INSERT INTO destinationTable
SELECT * FROM sourceTable
Zzz
źródło
16

Prosty sposób, jeśli nowa tabela nie istnieje i chcesz zrobić kopię starej tabeli ze wszystkim, a następnie działa w SQL Server.

SELECT * INTO NewTable FROM OldTable
Satish Patel
źródło
11
INSERT INTO table1 (col1, col2, col3)
SELECT column1, column2, column3
FROM table2                                        
user3566871
źródło
9

Spróbuj tego:

INSERT INTO MyTable1 (Col1, Col2, Col4)
   SELECT Col1, Col2, Col3 FROM MyTable2
Abe Miessler
źródło
6

Spróbuj tego:

Insert Into table2
Select * from table1
Kapil Khandelwal
źródło
4
INSERT INTO DestinationTable(SupplierName, Country)
SELECT SupplierName, Country FROM SourceTable;

Nazwy kolumn nie są obowiązkowe, aby były takie same.

S.Adikaram
źródło
3

Wstaw wybraną kolumnę z warunkiem

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

Skopiuj wszystkie dane z jednej tabeli do drugiej o tej samej nazwie kolumny.

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;
Nimmi Verma
źródło
0
CREATE TABLE `table2` LIKE `table1`;
INSERT INTO `table2` SELECT * FROM `table1`;

pierwsze zapytanie utworzy strukturę od table1do, table2a drugie zapytanie umieści dane od table1dotable2

Renish Gotecha
źródło