- 單一 insert 插入多筆資料 (insert values)
- 衍伸資料表 (derived table)
單一 insert 插入多筆資料
該作法最常見,常用來取代 insert 資料時,不用一直反覆寫 insert into TableName 這段語法,只要在 values 後面用括號包住資料並用逗號分隔
USE AdventureWorks2019;
GO
DECLARE @Table_Value_Constructor TABLE (id int , LastName nchar(4) , FirstName nchar(4))
INSERT INTO @Table_Value_Constructor VALUES
(1 , N'張' , N'三'),
(2 , N'李' , N'四'),
(3 , N'王' , N'五');
GO
衍伸資料表
values 接括號資料並用逗號分隔後產生 Table 名稱和欄位名稱
SELECT *
FROM
(
VALUES
('20221001', '20221002'),
('20221003', '20221004'),
('20221005', '20221006'),
('20221007', '20221008'),
('20221009', '20221010')
) AS Table_Value_Constructor(Date1, Date2); -- 指定 Table 名稱和欄位名稱
限制事項 from 官方文件
- 用作衍生資料表時,資料列數目沒有限制。
- 作為 INSERT ... VALUES 陳述式的 VALUES 子句時,資料列數目限制為 1000 個。如果資料列數目超過最大值,就會傳回錯誤 10738。 若要插入 1000 個以上的資料列,請使用下列其中一種方法:
- 建立多個 INSERT 陳述式
- 使用衍生資料表
- 使用 bcp 公用程式 ( .NET SqlBulkCopy class、OPENROWSET (BULK ...)) 或 BULK INSERT 陳述式來大量匯入資料
沒有留言:
張貼留言