¿Cómo insertar valores de tabla de una base de datos a otra? [cerrado]

90

Quiero una consulta para insertar registros de una tabla a otra tabla en una base de datos diferente si la tabla de destino ya existe, debería agregar los registros al final de la tabla.

naveenkumar
fuente

Respuestas:

157

Qué tal esto:

USE TargetDatabase
GO

INSERT INTO dbo.TargetTable(field1, field2, field3)
   SELECT field1, field2, field3
     FROM SourceDatabase.dbo.SourceTable
     WHERE (some condition)
marc_s
fuente
3
10 años después ... todavía muy apreciado.
Chris Catignani
@ChrisCatignani: ¡gracias! Algunas respuestas están hechas para la eternidad ;-)
marc_s
33

¿Cómo insertar valores de tabla de un servidor / base de datos a otra base de datos?

1 Creación de servidores vinculados {si es necesario} (SQL Server 2008 R2 - 2012) http://technet.microsoft.com/en-us/library/ff772782.aspx#SSMSProcedure

2 configure el servidor vinculado para usar Credenciales a) http://technet.microsoft.com/es-es/library/ms189811(v=sql.105).aspx

EXEC sp_addlinkedsrvlogin 'NAMEOFLINKEDSERVER', 'false', null, 'REMOTEUSERNAME', 'REMOTEUSERPASSWORD'

- VER SERVIDORES

SELECT * FROM sys.servers

- PRUEBA DE SERVIDORES VINCULADOS

EXEC sp_testlinkedserver N'NAMEOFLINKEDSERVER'

INSERTAR EN LA NUEVA MESA LOCAL

SELECT * INTO NEWTABLE
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE

O

INSERTAR COMO NUEVOS VALORES EN TABLA REMOTA

INSERT
INTO    [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
SELECT  *
FROM    localTABLE

INSERTAR COMO NUEVOS VALORES DE TABLA LOCAL

INSERT
INTO    localTABLE
SELECT  *
FROM    [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
OzzKr
fuente
10

He aquí un método rápido y sencillo:

CREATE TABLE database1.employees
AS
SELECT * FROM database2.employees;
Cillín
fuente
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
fuente
6

Puedes probar

Insert into your_table_in_db1 select * from your_table_in_db2@db2SID 

db2SID es el sid de otra base de datos. Estará presente en el archivo tnsnames.ora

arenoso
fuente
1
INSERT
INTO    remotedblink.remotedatabase.remoteschema.remotetable
SELECT  *
FROM    mytable

No existe tal cosa como "el final de la tabla" en las bases de datos relacionales.

Quassnoi
fuente
0

Si ambas tablas tienen el mismo esquema, utilice esta consulta: insertar en nombre_base_datos.nombre_tabla seleccione * de nombre_base_datos nuevo.nombre_tabla_nuevo donde = 'condición'

Reemplace database_name con el nombre de su primera base de datos y table_name con el nombre de la tabla desde la que desea copiar también reemplace new_database_name con el nombre de su otra base de datos donde desea copiar y new_table_name es el nombre de la tabla.

Ghazali
fuente
0

Simplemente hazlo.....

(Creará la misma estructura de tabla que la de la tabla que la tabla con los mismos datos)

 create table toDatabaseName.toTableName as select * from fromDatabaseName.fromTableName;
Imranmadbar
fuente
0

Para SQL Server, puede utilizar la herramienta Importar datos de otra base de datos. Es más fácil configurar las columnas de asignación.

Lê Văn Hiếu
fuente
0

Principalmente necesitamos este tipo de consulta en el script de migración.

INSERT INTO  db1.table1(col1,col2,col3,col4)
SELECT col5,col6,col7,col8
  FROM db1.table2

En esta consulta, el recuento de columnas debe ser el mismo en ambas tablas

Akshay Bhardwaj
fuente