Insertion de lignes au moyen de l'instruction SELECT INTO
L'instruction SELECT INTO crée une nouvelle table qu'elle remplit à l'aide du jeu de résultats de l'instruction SELECT. SELECT INTO permet de combiner dans une table les données provenant de plusieurs tables ou vues. Vous pouvez aussi l'utiliser pour créer une nouvelle table contenant des données sélectionnées provenant d'un serveur lié.
La structure de la nouvelle table est définie par les attributs des expressions dans la liste de sélection. L'exemple suivant crée la table dbo.EmployeeAddresses en sélectionnant sept colonnes de diverses tables liées aux salariés et aux adresses.
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
Vous ne pouvez pas utiliser SELECT INTO pour créer une table partitionnée, même lorsque la table source est partitionnée. SELECT INTO n'utilise pas le schéma de partition de la table source. Au lieu de cela, la nouvelle table est créée dans le groupe de fichiers par défaut. Pour insérer des lignes dans une table partitionnée, vous devez d'abord créer la table partitionnée, puis utiliser l'instruction INSERT INTO…SELECT FROM.
L'attribut FILESTREAM n'est pas transféré lorsque vous créez une table en utilisant l'instruction SELECT INTO. Les BLOB FILESTREAM sont copiés et stockés dans la nouvelle table en tant que BLOB varbinary(max). Si un BLOB FILESTREAM dépasse 2 Go, le message d'erreur suivant est généré et l'instruction est arrêtée : « Tentative d'accroître la taille d'un objet LOB au-delà de la valeur maximale autorisée de 2147483647 octets ».