Je veux une requête pour insérer des enregistrements d'une table à une autre dans une base de données différente si la table de destination existe déjà, il devrait ajouter les enregistrements à la fin de la table
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 dans une autre base de données?
1 Création de serveurs liés {si nécessaire} (SQL Server 2008 R2 - 2012) http://technet.Microsoft.com/en-us/library/ff772782.aspx#SSMSProcedure
2 configurez le serveur lié afin qu'il utilise 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
- TESTER LES SERVEURS LIÉS
EXEC sp_testlinkedserver N'NAMEOFLINKEDSERVER'
INSÉRER DANS LA NOUVELLE TABLE LOCALE
SELECT * INTO NEWTABLE
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
OR
INSÉRER COMME NOUVELLES VALEURS DANS UNE TABLE À DISTANCE
INSERT
INTO [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
SELECT *
FROM localTABLE
INSÉRER COMME NOUVELLES VALEURS DE TABLE LOCALES
INSERT
INTO localTABLE
SELECT *
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
Voici une méthode rapide et facile:
CREATE TABLE database1.employees
AS
SELECT * FROM database2.employees;
--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. */
Tu peux essayer
Insert into your_table_in_db1 select * from your_table_in_db2@db2SID
db2SID est le sid de l'autre base de données. Il sera présent dans le fichier tnsnames.ora
INSERT
INTO remotedblink.remotedatabase.remoteschema.remotetable
SELECT *
FROM mytable
"La fin de la table" n'existe pas dans les bases de données relationnelles.
Si les deux tables ont le même schéma, utilisez la requête suivante: insérez dans nom_base_données.nom_table, sélectionnez * à partir_nouveau_nom_base.nouveau_nom_table où = 'condition'
Remplacez nom_base_de_données par le nom de votre 1re base de données et nom_table par le nom de la table que vous souhaitez copier Remplacez également nom_base_données_base par le nom de votre autre base de données sur laquelle vous souhaitez copier et nom_table_nouve est le nom de la table.
Simplement fais-le.....
(Cela créera la même structure de table à partir de table que de table avec les mêmes données)
create table toDatabaseName.toTableName as select * from fromDatabaseName.fromTableName;