Добавление строк с использованием SELECT INTO
Инструкция SELECT INTO создает новую таблицу и заполняет ее результирующим набором инструкции SELECT. SELECT INTO можно использовать для объединения в одной таблице данных из нескольких таблиц или представлений. Также эту инструкцию можно применять для создания новой таблицы, содержащей данные, выбранные со связанного сервера.
Структура новой таблицы определяется атрибутами выражений в списке выбора. В следующем примере таблица dbo.EmployeeAddresses создается путем выбора семи столбцов из различных таблиц, описывающих сотрудников и адреса.
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
Инструкцию SELECT INTO нельзя использовать для создания секционированной таблицы, даже если исходная таблица является секционированной. В инструкции SELECT INTO схема секционирования исходной таблицы не используется. Вместо этого в файловой группе по умолчанию создается новая таблица. Чтобы вставить строки в секционированную таблицу, необходимо сначала создать секционированную таблицу, а затем использовать инструкцию INSERT INTO…SELECT FROM.
Атрибут FILESTREAM не передается при создании новой таблицы с помощью инструкции SELECT INTO. Объекты BLOB FILESTREAM копируются и хранятся в новой таблице как объекты BLOB типа varbinary(max). Если размер объекта BLOB FILESTREAM превышает 2 ГБ, выводится следующее сообщение об ошибке и инструкция прекращает работу: «Попытка увеличить LOB свыше максимально допустимого размера 2147483647 байт».
См. также