Partilhar via


Inserindo linhas usando SELECT INTO

A instrução SELECT INTO cria uma tabela e a popula com o conjunto de resultados da instrução SELECT. A instrução SELECT INTO pode ser usada para combinar dados de várias tabelas ou exibições em uma única tabela. Também pode ser usada para criar uma tabela que contenha dados selecionados de um servidor vinculado.

A estrutura da nova tabela é definida pelos atributos das expressões na lista de seleção. O exemplo a seguir cria a tabela dbo.EmployeeAddresses selecionando sete colunas de várias tabelas relacionadas a funcionários e endereços.

USE AdventureWorks2008R2;
GO
SELECT c.FirstName, c.LastName, e.JobTitle, a.AddressLine1, a.City, 
    sp.Name AS [State/Province], a.PostalCode
INTO dbo.EmployeeAddresses
FROM Person.Person AS c
    JOIN HumanResources.Employee AS e 
    ON e.BusinessEntityID = c.BusinessEntityID
    JOIN Person.BusinessEntityAddress AS bea
    ON e.BusinessEntityID = bea.BusinessEntityID
    JOIN Person.Address AS a
    ON bea.AddressID = a.AddressID
    JOIN Person.StateProvince as sp 
    ON sp.StateProvinceID = a.StateProvinceID;
GO

Não é possível usar SELECT INTO para criar uma tabela particionada, mesmo quando a tabela de origem está particionada. SELECT INTO não usa o esquema de partição da tabela de origem. Em vez disso, a tabela é criada no grupo de arquivos padrão. Para inserir linhas em uma tabela particionada, primeiro, é necessário criar a tabela particionada e, depois, usar a instrução INSERT INTO…SELECT FROM.

O atributo FILESTREAM não transfere quando você cria uma nova tabela usando a instrução SELECT INTO. FILESTREAM BLOBS são copiados e armazenados na nova tabela como BLOBs varbinary(max). Se um FILESTREAM BLOB exceder 2 GB, a seguinte mensagem de erro será gerada e a instrução será interrompida: "Tentativa de aumentar LOB além do tamanho máximo permitido de 2147483647 bytes."