SQL Server – Insertar Datos a una tabla desde otra. INSERT INTO SELECT FROM TABLE, SELECT INTO FROM TABLE

12 04 2011

Existen dos formas de insertar datos de una tabla a otra, la primera es creando la estructura de la tabla destino y luego haciendo un INSERT INTO SELECT FROM TABLE o creando al vuelo la tabla e insertando los datos en la misma instruccion.

El Primero Modo es como se describe a continuación:

--Crear Tabla Destino
CREATE TABLE TablaDest (Col1 VARCHAR(100), Col2 VARCHAR(100))
--INSERT INTO TablaDest usando SELECT
INSERT INTO TablaDest (Col1, Col2)
SELECT Col1, Col2
FROM TablaFuente
WHERE --<Condicion>

La segunda forma de hacerlo es así:

--Crear una nueva tabla al tiempo que seleccionamos los datos desde la tabla fuente
SELECT Col1, Col2
INTO TablaDest
FROM TablaFuente
WHERE --<Condicion>

Ambos modos funcionan también con tablas temporales.

1Saludo

About these ads

Acciones

Information

19 responses

12 06 2012
kirdoo

INSERT INTO “tabla1″ (“columna1″, “columna2″, …)
SELECT “columna3″, “columna4″, …
FROM “tabla2″

25 06 2012
loca121

excelente opcion!!!!!

19 11 2012
william

uyyyy parce gracias a DIOS usted nacio y estudio sobre esto y nos pudo ayudar gracias….

30 11 2012
Magui

Hola! la opción “INSERT INTO Tabla (Col1, Col2, .. )
SELECT Col1, Col2, ..
FROM TablaAux”
es más óptima que la otra opción (SELECT INTO..)

6 05 2013
Stuart

Si no eh creado la TablaDest Puedo
agregarle datos ..
como en la segunda Imagen

17 05 2013
Blogger

Te la crea con la estructura que la sentencia select que te devuelve los datos

17 06 2013
LUCERO CORTES

no he podido continuar con mi tarea de sql por que cuando quiero introducir los datos a esta tabla genera un error ¡objeto no identificado! por fa quien tenga la respuesta le quedo agradecida
lo he hecho asi:
use taxi
go
insert into cliente
y me genera el error debajo de cliente
LULU16

24 06 2013
Blogger

igual y no has creado la tabla cliente!

31 10 2013
Jibran

Funcionaria si por ejemplo la tabala destino tiene un campo extra???
insert into TablaDestino (campo1,campo2, campo3)values((select campo1, campo2 from TablaOrigen where “Condicion”), “Valor campo 3″)

???

1 11 2013
Blogger

Usa el primer método, la columna extra de la tabla destino debe aceptar nulos o tener un default de otro modo falla la inserción,
Tu consulta no se podria ejecutar debiera ser algo como:

insert into TablaDestino (campo1,campo2)
select campo1, campo2
from TablaOrigen
where “Condicion”

o

insert into TablaDestino (campo1,campo2, campo3)
select campo1, campo2, ” AS campo3
from TablaOrigen
where “Condicion”

15 11 2013
rafa

Puedo usar este metodo para realizar mi consulta?

15 11 2013
rafa

Si la tabla ya esta creada lo que pretendo hacer es guardar un respaldo de informacion que se pueda ver pero no quiero eliminar las tablas y me dice
comando:
select * into trailer_copia2 from list
error:
Msg 2714, Level 16, State 6, Line 1
Ya hay un objeto con el nombre ‘trailer_copia2′ en la base de datos.

21 11 2013
Blogger

El mensaje mismo te indica el error, para el segunda forma, la tabla se crea “al vuelo” [no debe existir o habrá conflicto].
Si ya esta creada, entonces se usa la primera forma o bien borrarlo primero y usar la segunda forma.

10 03 2014
alice

este error me sale
Msg 544, Level 16, State 1, Line 1
Cannot insert explicit value for identity column in table ‘Estados’ when IDENTITY_INSERT is set to OFF.

11 03 2014
Blogger

Los errores “level 16″ corresponden al usuario resolverlos, y como dice tu mensaje es un error de insercion al violar las restricciones de la tabla, que al parecer quieres insertar un valor en una columna de tipo identity/autonumerico y el numero que quieres insertar ya esta en la base de datos, o bien tienes duplicados en tu select y quieres insertar en un identity, debieras revisar que no traiga duplicados o en caso extremo (que no considero debas llegar hasta aqui) deshabilitar las restriccion sobre esa columna, pero corres el riesgo de introducir duplicados en esa columna.

24 06 2014
martha

Y SI TENGO MAS DE UNA TABLA COMO SE PODRIA REALIZAR

8 07 2014
Blogger

Si quieres unir los datos de dos o mas tablas/fuentes antes de insertarlos puedes usar la instruccion UNION [ALL] para obtener los datos, o bien hacer un [LEFT/RIGTH/INNER] JOIN si las tablas tienen forma de unirse, los insertas usando la primera forma que menciono.

4 10 2014
ahc

Hola, una pregunta, como puedo hacer teniendo 2 bd una en firebird y otra en mysql, ambas con casi las mismas columnas solo varian en cantidad mas no en propiedades, y con el mismo nombre de tablas, y lo que deseo es pasar los registros de una tabla a la bd firebird a la tabla vacia en mysql, intente usando php, creando un archivo de conexiones y añadiendolo en otro php en donde pongo un query con ” INSERT INTO bd1.tablax (campo1, campo2) SELECT campo1, campo2 FROM bd2.tablay ” el problema es que no me marca ningun error , pero tampoco hace lo que pido simplemente no hace nada… , podrian aclararme una forma mejor???, gracias y saludos.

21 10 2014
Blogger

Si lo haces con php, puedes crear un ciclo que recorra la tabla en cuestion e inserte los valores en la nueva base de datos.

algo asi como estraes un tanto lo pones en un array y lo insertas como insert into table values();

tambien puedes usar SSIS para hacer el pase de datos de una fuente a otra.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: