Copia i dati in un'altra tabella


154

Come copiare / aggiungere dati da una tabella a un'altra tabella con lo stesso schema in SQL Server?

Modificare:

diciamo che c'è una query

select * 
into table1 
from table2 
where 1=1 

che crea table1con lo stesso schema e i dati di in table2.

Esiste una query breve come questa per copiare solo dati interi solo in una tabella già esistente?


Solo per informazioni complete, fai attenzione a questo comando NON copiare gli indici e i trigger della tabella! Vedi seguente post per gli indici di copia e trigger di script: stackoverflow.com/questions/7582852/...
HausO

Come risolverlo? INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

Risposte:


310

Se entrambe le tabelle sono veramente lo stesso schema:

INSERT INTO newTable
SELECT * FROM oldTable

Altrimenti, dovrai specificare i nomi delle colonne (l'elenco delle colonne per newTableè facoltativo se stai specificando un valore per tutte le colonne e selezionando le colonne nello stesso ordine newTabledello schema):

INSERT INTO newTable (col1, col2, col3)
SELECT column1, column2, column3
FROM oldTable

1
e se volessi entrare blank dataper qualche colonna ??
Hud

3
@coder è solo una clausola select, quindi puoi inserire qualsiasi cosa tu voglia, inclusi espliciti NULL, costanti di stringa, espressioni o anche sottoquery.
lc.

perché questo non funzionaINSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

1
@AbdullahNurum Perché la tua query scalare sta selezionando più di una colonna. Vedi stackoverflow.com/questions/4141370/… e stackoverflow.com/questions/6254913/…
lc.

1
Se entrambe le tabelle presentano uno schema simile, ma esiste una colonna con "Identity Specification" su YES, l'istruzione SQL deve enumerare tutte le colonne, tranne quella con Identity Specification.
Gabriel Marius Popescu,

18

Questo è il modo corretto di farlo:

INSERT INTO destinationTable
SELECT * FROM sourceTable

16

Modo semplice se la nuova tabella non esiste e si desidera creare una copia della vecchia tabella con tutto ciò che segue funziona in SQL Server.

SELECT * INTO NewTable FROM OldTable

11
INSERT INTO table1 (col1, col2, col3)
SELECT column1, column2, column3
FROM table2                                        

9

Prova questo:

INSERT INTO MyTable1 (Col1, Col2, Col4)
   SELECT Col1, Col2, Col3 FROM MyTable2


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

I nomi delle colonne non sono obbligatori per essere uguali.


3

Inserisci colonna selezionata con condizione

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

Copia tutti i dati da una tabella a un'altra con lo stesso nome di colonna.

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;

0
CREATE TABLE `table2` LIKE `table1`;
INSERT INTO `table2` SELECT * FROM `table1`;

la prima query creerà la struttura da table1a table2e la seconda query inserirà i dati da table1atable2

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.