Copier les données dans une autre table


154

Comment copier / ajouter des données d'une table dans une autre table avec le même schéma dans SQL Server?

Éditer:

disons qu'il y a une requête

select * 
into table1 
from table2 
where 1=1 

qui crée table1avec le même schéma ainsi que les données que dans table2.

Existe-t-il une courte requête comme celle-ci pour ne copier que des données entières uniquement dans une table déjà existante?


Juste pour des informations complètes, faites attention ces commandes NE copient PAS les index et les déclencheurs de table! Voir l'article suivant pour le script de copie des index et des déclencheurs: stackoverflow.com/questions/7582852/…
HausO

Comment résoudre ça? INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

Réponses:


310

Si les deux tables sont vraiment le même schéma:

INSERT INTO newTable
SELECT * FROM oldTable

Sinon, vous devrez spécifier les noms des colonnes (la liste des colonnes pour newTableest facultative si vous spécifiez une valeur pour toutes les colonnes et sélectionnez les colonnes dans le même ordre que newTablele schéma de):

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

1
et si je veux entrer blank datapour une colonne ??
hud

3
@coder n'est qu'une clause de sélection, vous pouvez donc y mettre tout ce que vous voulez, y compris des NULLs explicites , des constantes de chaîne, des expressions ou même des sous-requêtes.
lc.

pourquoi cela ne fonctionne pasINSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

1
@AbdullahNurum Parce que votre requête scalaire sélectionne plus d'une colonne. Voir stackoverflow.com/questions/4141370/… et stackoverflow.com/questions/6254913/…
lc.

1
Si les deux tables présentent un schéma similaire, mais qu'il existe une colonne avec «Spécification d'identité» sur OUI, l'instruction SQL doit énumérer toutes les colonnes, sauf celle avec la spécification d'identité.
Gabriel Marius Popescu

18

Voici la bonne façon de procéder:

INSERT INTO destinationTable
SELECT * FROM sourceTable

16

Un moyen simple si la nouvelle table n'existe pas et que vous souhaitez faire une copie de l'ancienne table avec tout ce qui suit fonctionne dans SQL Server.

SELECT * INTO NewTable FROM OldTable

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

9

Essaye ça:

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


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

Il n'est pas obligatoire que les noms de colonne soient identiques.


3

Insérer la colonne sélectionnée avec condition

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

Copiez toutes les données d'une table à une autre avec le même nom de colonne.

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;

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

la première requête créera la structure de table1à table2et la seconde requête mettra les données de table1àtable2

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.