Share via


使用 SELECT INTO 插入資料列

SELECT INTO 陳述式建立新的資料表並使用 SELECT 陳述式的結果集來填入該資料表。SELECT INTO 可用來把許多資料表或檢視的資料合併成一個資料表。它也可以用來建立新的資料表而其中包含選取自連結的伺服器之資料。

新資料表的結構是由選取清單中的運算式屬性所定義。下列範例從各個員工和地址相關資料表選取七個資料行來建立 dbo.EmployeeAddresses 資料表。

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

即使已分割來源資料表,您還是無法使用 SELECT INTO 來建立分割的資料表。SELECT INTO 不會使用來源資料表的資料分割配置,而是會在預設檔案群組中建立新的資料表。若要將資料列插入到已分割的資料表中,您必須先建立已分割的資料表,然後使用 INSERT INTO…SELECT FROM 陳述式。

當您使用 SELECT INTO 陳述式建立新的資料表時,FILESTREAM 屬性並不會傳送。FILESTREAM BLOB 會當做 varbinary(max) BLOB 複製及儲存在新的資料表中。如果 FILESTREAM BLOB 超出 2 GB,將會引發下列錯誤訊息,並停止此陳述式:「嘗試讓 LOB 成長超過所允許的大小上限 2147483647 位元組」。