Buscar..


Copia datos de una tabla a otra

Este código selecciona los datos de una tabla y los muestra en la herramienta de consulta (generalmente SSMS)

SELECT Column1, Column2, Column3 FROM MySourceTable;

Este código inserta esos datos en una tabla:

INSERT INTO MyTargetTable (Column1, Column2, Column3)
SELECT Column1, Column2, Column3 FROM MySourceTable;

Copia datos en una tabla, creando esa tabla sobre la marcha

Este código selecciona los datos de una tabla:

SELECT Column1, Column2, Column3 FROM MySourceTable;

Este código crea una nueva tabla llamada MyNewTable y coloca esos datos en ella.

SELECT Column1, Column2, Column3 
INTO MyNewTable
FROM MySourceTable;

Mover datos a una tabla (asumiendo el método de claves únicas)

Para mover los datos, primero insértelos en el destino y luego elimine lo que haya insertado de la tabla de origen. Esta no es una operación SQL normal pero puede ser esclarecedor

¿Qué insertaste? Normalmente, en las bases de datos debe tener una o más columnas que pueda usar para identificar de forma única las filas, por lo que supondremos eso y las utilizaremos.

Esta declaración selecciona algunas filas

SELECT Key1, Key2, Column3, Column4 FROM MyTable;

Primero insertamos estos en nuestra tabla de objetivos:

INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;

Ahora, asumiendo que los registros en ambas tablas son únicos en Key1 , Key2 , podemos usar eso para encontrar y eliminar datos de la tabla de origen

DELETE MyTable
WHERE EXISTS (
    SELECT * FROM TargetTable 
    WHERE TargetTable.Key1 = SourceTable.Key1
    AND TargetTable.Key2 = SourceTable.Key2
);

Esto solo funcionará correctamente si Key1 , Key2 son únicas en ambas tablas

Por último, no queremos que el trabajo esté hecho a medias. Si envolvemos esto en una transacción, todos los datos se moverán o no sucederá nada. Esto garantiza que no insertemos los datos y luego no podamos eliminarlos de la fuente.

BEGIN TRAN;

INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;


DELETE MyTable
WHERE EXISTS (
    SELECT * FROM TargetTable 
    WHERE TargetTable.Key1 = SourceTable.Key1
    AND TargetTable.Key2 = SourceTable.Key2
);

COMMIT TRAN;


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow