2009-06-02 51 views
27

Básicamente tengo unas dos bases de datos en SQL Server 2005.Copiar datos de una tabla en una base de datos a otra base de datos separada

quiero tomar los datos de la tabla de una base de datos y copiarlo en la tabla de otra base de datos.

yo probamos este:

SELECT * INTO dbo.DB1.TempTable FROM dbo.DB2.TempTable 

Esto no funcionó.

No quiero usar una restauración para evitar la pérdida de datos ...

¿Alguna idea?

Respuesta

44

SELECCIONAR ... INTO crea una nueva tabla. Tendrá que usar INSERTAR. Además, tiene la base de datos y los nombres de propietarios invertidos.

INSERT INTO DB1.dbo.TempTable 
SELECT * FROM DB2.dbo.TempTable 
+0

Pensé que lo tenía pero me salió este error. ¿Algún trabajo para eso? Un valor explícito para la columna de identidad en la tabla 'DB1.dbo.TempTable ' solo se puede especificar cuando se utiliza una lista de columnas y IDENTITY_INSERT está activado. – Gabe

+0

yo probamos este: SET_IDENTITY_INSERT DB1.dbo.TempTable EN GO INSERT INTO DB1.dbo.TempTable SELECT * FROM DB2.dbo.TempTable - Desactivar IDENTITY_INSERT. SET IDENTITY_INSERT DB1.dbo.TempTable OFF GO – Gabe

8

Se db1.dbo.TempTable y db2.dbo.TempTable

El esquema de nombres de cuatro partes va:

ServerName.DatabaseName.Schema.Object

0

probar este

INSERT INTO dbo.DB1.TempTable 
    (COLUMNS) 
    SELECT COLUMNS_IN_SAME_ORDER FROM dbo.DB2.TempTable 

Esto solo fallará si un elemento en dbo.DB2.TempTable ya está en dbo.DB1.TempTable.

9

SELECCIONAR * INTO requiere que la tabla de destino no exista.

Pruebe esto.

INSERT INTO db1.dbo.TempTable 
(List of columns here) 
SELECT (Same list of columns here) 
FROM db2.dbo.TempTable 
5

Es difícil de decir sin ninguna idea de lo que quiere decir con "no funcionó". Hay muchas cosas que pueden salir mal y cualquier consejo que demos sobre la resolución de problemas en una de esas rutas puede llevarlo más y más a encontrar una solución, que puede ser realmente simple.

Aquí hay un algo que buscaría embargo,

Identidad Insertar debe estar en la mesa está importando en caso de que la tabla contiene un campo de identidad y va a suministrarla de forma manual. Identity Insert también solo se puede habilitar para 1 tabla por vez en una base de datos, por lo que debe recordar habilitarla para la tabla, luego deshabilitarla inmediatamente después de que haya terminado de importar.

Además, intenta listar todos sus campos

INSERT INTO db1.user.MyTable (Col1, Col2, Col3) 
SELECT Col1, COl2, Col3 FROM db2.user.MyTable 
2

Podemos nombrar tres partes como database_name..object_name

La consulta siguiente será crear la tabla en la base de datos (con limitaciones fuera)

SELECT * 
INTO DestinationDB..MyDestinationTable 
FROM SourceDB..MySourceTable 

otra posibilidad:

INSERT INTO DestinationDB..MyDestinationTable 
SELECT * FROM SourceDB..MySourceTable 

Si su tabla de destino existe y está vacía.

1
INSERT INTO DB1.dbo.TempTable 
SELECT * FROM DB2.dbo.TempTable 

Si utilizamos esta consulta devolverá Primary key error .... Así mejor elegir los que se deben mover las columnas, como

INSERT INTO db1.dbo.TempTable // (List of columns here) 
SELECT (Same list of columns here) 
FROM db2.dbo.TempTable 
1

No olvide insertar SET IDENTITY_INSERT MobileApplication1 ON a la parte superior, de lo contrario, obtendrás un error. Esto es para SQL Server

SET IDENTITY_INSERT MOB.MobileApplication1 ON 
INSERT INTO [SERVER1].DB.MOB.MobileApplication1 m 
     (m.MobileApplicationDetailId, 
     m.MobilePlatformId) 
SELECT ma.MobileApplicationId, 
     ma.MobilePlatformId 
FROM [SERVER2].DB.MOB.MobileApplication2 ma 
1

Im prefieren éste.

INSERT INTO 'DB_NAME' 
(SELECT * from '[email protected]_LINK') 
MINUS 
(SELECT * FROM 'DB_NAME'); 

Lo que significa que se inserte en absoluto de que no se incluye en DB_NAME pero incluyó en [email protected]_LINK. Espero que esto ayude.

0

Esto funciona con éxito.

INSERT INTO DestinationDB.dbo.DestinationTable (col1,col1) 
SELECT Src-col1,Src-col2 FROM SourceDB.dbo.SourceTable 
Cuestiones relacionadas