Compartir a través de


Insertar filas mediante SELECT INTO

La instrucción SELECT INTO crea una nueva tabla y la llena con el conjunto de resultados de la instrucción SELECT. SELECT INTO se puede emplear para combinar datos de varias tablas o vistas en una tabla. También se puede utilizar para crear una nueva tabla que contenga datos seleccionados de un servidor vinculado.

La estructura de la nueva tabla se define con los atributos de las expresiones de la lista de selección. En el ejemplo siguiente se crea la tabla dbo.EmployeeAddresses mediante la selección de siete columnas de varias tablas relacionadas con empleados y direcciones.

USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName, e.Title, a.AddressLine1, a.City, sp.Name AS [State/Province], a.PostalCode
INTO dbo.EmployeeAddresses
FROM Person.Contact AS c
JOIN HumanResources.Employee AS e ON e.ContactID = c.ContactID
JOIN HumanResources.EmployeeAddress AS ea ON ea.EmployeeID = e.EmployeeID
JOIN Person.Address AS a on a.AddressID = ea.AddressID
JOIN Person.StateProvince as sp ON sp.StateProvinceID = a.StateProvinceID;
GO

No puede usar SELECT INTO para crear una tabla con particiones, incluso si se particiona la tabla de origen. SELECT INTO no utiliza el esquema de partición de la tabla de origen. En su lugar, la nueva tabla se crea en el grupo de archivos predeterminado. Para insertar filas en una tabla con particiones, primero debe crearse la tabla con particiones y, a continuación, utilizar la instrucción INSERT INTO…SELECT FROM.

El atributo FILESTREAM no se transfiere al crear una nueva tabla mediante la instrucción SELECT INTO. Los BLOB FILESTREAM se copian y se almacenan en la nueva tabla como BLOB varbinary(max). Si un BLOB FILESTREAM supera los 2 GB, se recibe el siguiente mensaje de error y se detiene la ejecución de la instrucción: "Se ha intentado aumentar el LOB más allá del tamaño máximo permitido de 2147483647 bytes."