Je veux qu'une requête insère des enregistrements d'une table à une autre table dans une base de données différente si la table de destination existe déjà, elle doit ajouter les enregistrements à la fin de la table.
Je veux qu'une requête insère des enregistrements d'une table à une autre table dans une base de données différente si la table de destination existe déjà, elle doit ajouter les enregistrements à la fin de la table.
Réponses:
Que dis-tu de ça:
USE TargetDatabase
GO
INSERT INTO dbo.TargetTable(field1, field2, field3)
SELECT field1, field2, field3
FROM SourceDatabase.dbo.SourceTable
WHERE (some condition)
Comment insérer des valeurs de table d'un serveur / base de données vers une autre base de données?
1 Création de serveurs liés {si besoin} (SQL Server 2008 R2 - 2012) http://technet.microsoft.com/en-us/library/ff772782.aspx#SSMSProcedure
2 configurer le serveur lié pour utiliser les informations d'identification a) http://technet.microsoft.com/es-es/library/ms189811(v=sql.105).aspx
EXEC sp_addlinkedsrvlogin 'NAMEOFLINKEDSERVER', 'false', null, 'REMOTEUSERNAME', 'REMOTEUSERPASSWORD'
- VÉRIFIER LES SERVEURS
SELECT * FROM sys.servers
- TEST DES SERVEURS LIÉS
EXEC sp_testlinkedserver N'NAMEOFLINKEDSERVER'
INSÉRER DANS UNE NOUVELLE TABLE LOCALE
SELECT * INTO NEWTABLE
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
OU
INSÉRER COMME NOUVELLES VALEURS DANS LA TABLE À DISTANCE
INSERT
INTO [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
SELECT *
FROM localTABLE
INSÉRER COMME NOUVELLES VALEURS DU TABLEAU LOCAL
INSERT
INTO localTABLE
SELECT *
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
--Code for same server
USE [mydb1]
GO
INSERT INTO dbo.mytable1 (
column1
,column2
,column3
,column4
)
SELECT column1
,column2
,column3
,column4
FROM [mydb2].dbo.mytable2 --WHERE any condition
/*
steps-
1- [mydb1] means our opend connection database
2- mytable1 the table in mydb1 database where we want insert record
3- mydb2 another database.
4- mytable2 is database table where u fetch record from it.
*/
--Code for different server
USE [mydb1]
SELECT *
INTO mytable1
FROM OPENDATASOURCE (
'SQLNCLI'
,'Data Source=XXX.XX.XX.XXX;Initial Catalog=mydb2;User ID=XXX;Password=XXXX'
).[mydb2].dbo.mytable2
/* steps -
1- [mydb1] means our opend connection database
2- mytable1 means create copy table in mydb1 database where we want
insert record
3- XXX.XX.XX.XXX - another server name.
4- mydb2 another server database.
5- write User id and Password of another server credential
6- mytable2 is another server table where u fetch record from it. */
Si les deux tables ont le même schéma, utilisez cette requête: insert into database_name.table_name select * from new_database_name.new_table_name where = 'condition'
Remplacez nom_base_de_données par le nom de votre première base de données et nom_table par le nom de la table à partir de laquelle vous souhaitez copier.Remplacez également new_database_name par le nom de votre autre base de données où vous souhaitez copier et new_table_name est le nom de la table.
Simplement fais-le.....
(Cela créera la même structure de table que de table que de table avec les mêmes données)
create table toDatabaseName.toTableName as select * from fromDatabaseName.fromTableName;
Pour SQL Server, vous pouvez utiliser l'outil Importer des données à partir d'une autre base de données, il est plus facile de configurer les colonnes de mappage.
Nous avons principalement besoin de ce type de requête dans le script de migration
INSERT INTO db1.table1(col1,col2,col3,col4)
SELECT col5,col6,col7,col8
FROM db1.table2
Dans cette requête, le nombre de colonnes doit être le même dans les deux tables