INSERT Tabla1 SELECT * FROM Tabla2

22/03/2010 - 12:08 por José Antonio Muñoz | Informe spam
Holas a todos,

Quiero importar los datos de una tabla que se ubica en una base de datos a
otra tabla con el mismo nombre pero en otra base de datos teniendo en cuenta
que ambas tablas tienen la misma estructura y algunos campos son calculados.

He intentado hacerlo con la instrucción INSERT BD1..tabla SELECT * FROM
BD2..tabla pero como existen campos calculados me dice que "los valores
especificados no corresponden a la definición de la tabla". Claro está puedo
especificar los campos que tengo que importar (INSERT bd1..tabla (campo1,
campo2, ...) SELECT campo1, campo2, FROM bd2..tabla) pero la tabla
tiene más de 300 campos y la instrucción se me hace muy larga ¿existe otra
manera sin tener que especificar la lista de campos?

saludos,
José Antonio Muñoz

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
22/03/2010 - 15:01 | Informe spam
José Antonio Muñoz,

no, no existe otra forma. Especifar los nombres de las columnas es una buena
practica.

En SSMS existen varias formas de traer la lista de columnas de una tabla.

En el explorador de objectos, click derecho del raton sobre la tabla donde
deseas insertar (tabla destino), escoje "script table as" - "insert to", esta
accion creara la sentencia insert sin incluir los campos calculados. Luego
reemplaza la clusula VALUES por el select de los campos de la tabla fuente,
haciendo click derecho del raton sobre la tabla fuente y escogiendo "script
table as" - "select to".


AMB


"José Antonio Muñoz" wrote:

Holas a todos,

Quiero importar los datos de una tabla que se ubica en una base de datos a
otra tabla con el mismo nombre pero en otra base de datos teniendo en cuenta
que ambas tablas tienen la misma estructura y algunos campos son calculados.

He intentado hacerlo con la instrucción INSERT BD1..tabla SELECT * FROM
BD2..tabla pero como existen campos calculados me dice que "los valores
especificados no corresponden a la definición de la tabla". Claro está puedo
especificar los campos que tengo que importar (INSERT bd1..tabla (campo1,
campo2, ...) SELECT campo1, campo2, FROM bd2..tabla) pero la tabla
tiene más de 300 campos y la instrucción se me hace muy larga ¿existe otra
manera sin tener que especificar la lista de campos?

saludos,
José Antonio Muñoz

.

Respuesta Responder a este mensaje
#2 Miguel Egea
22/03/2010 - 15:31 | Informe spam
Modificando este script obtienes la instrucción sin teclearla.. (la he
probado con una tabla llamada 't' , solo tienes que cambiarla por tu nombre
de tabla y en principio debería ir.

declare @sql nvarchar(max)
set @sql=N' insert into t ('
select @sql=@sql+QUOTENAME(name) +', ' from sys.columns where
object_id=object_id('t') and is_computed=0 order by column_id
set @sql=LEFT(@sql,len(@sql)-1) +') SELECT '
select @sql=@sql+QUOTENAME(name) +', ' from sys.columns where
object_id=object_id('t') and is_computed=0 order by column_id
set @sql=LEFT(@sql,len(@sql)-1) +' FROM OTRABD.DBO.T'


select @sql

Saludos Cordiales
Miguel Egea
Solid Quality Mentos
http://www.portalsql.com

"José Antonio Muñoz" escribió en el mensaje de
noticias:#
Holas a todos,

Quiero importar los datos de una tabla que se ubica en una base de datos a
otra tabla con el mismo nombre pero en otra base de datos teniendo en
cuenta que ambas tablas tienen la misma estructura y algunos campos son
calculados.

He intentado hacerlo con la instrucción INSERT BD1..tabla SELECT * FROM
BD2..tabla pero como existen campos calculados me dice que "los valores
especificados no corresponden a la definición de la tabla". Claro está
puedo especificar los campos que tengo que importar (INSERT bd1..tabla
(campo1, campo2, ...) SELECT campo1, campo2, FROM bd2..tabla) pero la
tabla tiene más de 300 campos y la instrucción se me hace muy larga
¿existe otra manera sin tener que especificar la lista de campos?

saludos,
José Antonio Muñoz
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida