Daten in eine andere Tabelle kopieren

153

Wie kopiere / füge ich Daten aus einer Tabelle in eine andere Tabelle mit demselben Schema in SQL Server hinzu?

Bearbeiten:

Nehmen wir an, es gibt eine Abfrage

select * 
into table1 
from table2 
where 1=1 

das erstellt table1mit dem gleichen Schema sowie Daten wie in table2.

Gibt es eine kurze Abfrage wie diese, um nur ganze Daten nur in eine bereits vorhandene Tabelle zu kopieren?

Rajaram Shelar
quelle
Um vollständige Informationen zu erhalten, achten Sie darauf, dass diese Befehle KEINE Indizes und Auslöser der Tabelle kopieren! Siehe folgenden Beitrag für das Kopieren von Indizes und Triggerskript: stackoverflow.com/questions/7582852/…
HausO
Wie kann man das lösen? INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

Antworten:

309

Wenn beide Tabellen wirklich dasselbe Schema sind:

INSERT INTO newTable
SELECT * FROM oldTable

Andernfalls müssen Sie die Spaltennamen angeben (die Spaltenliste für newTableist optional, wenn Sie einen Wert für alle Spalten angeben und Spalten in derselben Reihenfolge wie newTabledas Schema auswählen ):

INSERT INTO newTable (col1, col2, col3)
SELECT column1, column2, column3
FROM oldTable
lc.
quelle
1
Was ist, wenn ich blank datafür eine Spalte eingeben möchte ?
Hud
3
@coder ist nur eine select-Klausel, daher können Sie alles einfügen, was Sie möchten, einschließlich expliziter NULLs, Zeichenfolgenkonstanten, Ausdrücke oder sogar Unterabfragen.
lc.
warum dies nicht funktioniertINSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');
1
@AbdullahNurum Da Ihre skalare Abfrage mehr als eine Spalte auswählt. Siehe stackoverflow.com/questions/4141370/… und stackoverflow.com/questions/6254913/…
lc.
1
Wenn beide Tabellen ein ähnliches Schema aufweisen, auf YES jedoch eine Spalte mit 'Identity Specification' vorhanden ist, muss die SQL-Anweisung alle Spalten mit Ausnahme der Spalte mit Identity Specification auflisten.
Gabriel Marius Popescu
18

Dies ist der richtige Weg, um es zu tun:

INSERT INTO destinationTable
SELECT * FROM sourceTable
Zzz
quelle
16

Einfacher Weg, wenn keine neue Tabelle vorhanden ist und Sie eine Kopie der alten Tabelle mit allem erstellen möchten, funktioniert das Folgende in SQL Server.

SELECT * INTO NewTable FROM OldTable
Satish Patel
quelle
11
INSERT INTO table1 (col1, col2, col3)
SELECT column1, column2, column3
FROM table2                                        
user3566871
quelle
9

Versuche dies:

INSERT INTO MyTable1 (Col1, Col2, Col4)
   SELECT Col1, Col2, Col3 FROM MyTable2
Abe Miessler
quelle
6

Versuche dies:

Insert Into table2
Select * from table1
Kapil Khandelwal
quelle
4
INSERT INTO DestinationTable(SupplierName, Country)
SELECT SupplierName, Country FROM SourceTable;

Es ist nicht obligatorisch, dass Spaltennamen identisch sind.

S.Adikaram
quelle
3

Ausgewählte Spalte mit Bedingung einfügen

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

Kopieren Sie alle Daten mit demselben Spaltennamen von einer Tabelle in eine andere.

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;
Nimmi Verma
quelle
0
CREATE TABLE `table2` LIKE `table1`;
INSERT INTO `table2` SELECT * FROM `table1`;

Die erste Abfrage erstellt die Struktur von table1bis table2und die zweite Abfrage legt die Daten von table1bis abtable2

Renish Gotecha
quelle