Comment insérer des valeurs de table d'une base de données dans une autre base de données? [fermé]

89

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.

Naveenkumar
la source

Réponses:

156

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)
marc_s
la source
3
10 ans plus tard ... toujours très apprécié.
Chris Catignani
@ChrisCatignani: merci! Quelques réponses sont faites pour l'éternité ;-)
marc_s
33

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
OzzKr
la source
10

Voici une méthode simple et rapide:

CREATE TABLE database1.employees
AS
SELECT * FROM database2.employees;
Cillín
la source
10
    --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. */
Sagar Mahajan
la source
6

Tu peux essayer

Insert into your_table_in_db1 select * from your_table_in_db2@db2SID 

db2SID est le sid d'une autre base de données. Il sera présent dans le fichier tnsnames.ora

sandwho
la source
1
INSERT
INTO    remotedblink.remotedatabase.remoteschema.remotetable
SELECT  *
FROM    mytable

Il n'y a pas de «fin de table» dans les bases de données relationnelles.

Quassnoi
la source
0

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.

Ghazali
la source
0

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;
Imranmadbar
la source
0

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.

Lê Văn Hiếu
la source
0

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

Akshay Bhardwaj
la source