首頁 > 資料庫 > mysql教程 > 如何有效率地同時插入資料到多個SQL Server表?

如何有效率地同時插入資料到多個SQL Server表?

Mary-Kate Olsen
發布: 2025-01-04 05:01:40
原創
389 人瀏覽過

How to Efficiently Insert Data into Multiple SQL Server Tables Simultaneously?

同時插入多個SQL Server 表

同時將資料插入多個表可能是一個挑戰,特別是當表具有外鍵關係時。常見的方法是使用 INSERT-SELECT-INSERT 方法,該方法涉及將資料插入第一個表中,檢索主鍵,然後將該鍵插入到第二個表中。

但是,此方法可能會變得低效用於大規模插入。對於這種情況,SQL Server 提供了替代解決方案:

insert into [table1] ([data])
output inserted.id, inserted.data into table2
select [data] from [external_table]
登入後複製

此查詢在單一交易中將資料插入兩個表中。 OUTPUT 子句從第一個表中檢索插入的主鍵和數據,並將它們插入到第二個表中。

範例:

CREATE TABLE [table1] (
  [id] [int] IDENTITY(1,1) NOT NULL,
  [data1] [varchar](255) NOT NULL,
  CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED ([id] ASC)
);

CREATE TABLE [table2] (
  [id] [int] IDENTITY(1,1) NOT NULL,
  [table1_id] [int] NOT NULL,
  [data2] [varchar](255) NOT NULL,
  CONSTRAINT [PK_table2] PRIMARY KEY CLUSTERED ([id] ASC)
);

INSERT INTO [table1] ([data1])
OUTPUT INSERTED.ID, INSERTED.DATA1 INTO [table2] ([table1_id], [data2])
SELECT [data1] FROM [external_table];
登入後複製

此查詢將插入資料在一次操作中從外部表到表 1 和表 2。 table1中的資料將用於建立table2中的外鍵關係。

處理不同的資料列:

在某些場景下,來源和表格中的資料列目標表可能不同。在這種情況下,可以使用 MERGE 語句:

MERGE INTO [table1] AS t
USING [external_table] AS s
ON 1=0 -- modify this predicate as necessary
WHEN NOT MATCHED THEN INSERT (data)
VALUES (s.[col1])
OUTPUT INSERTED.ID, s.[col2] INTO [table2];
登入後複製

此查詢執行 upsert 操作,將不存在的行插入到 table1 中,並更新現有行。 OUTPUT 子句從外部表中擷取插入的主鍵和對應的資料並將其插入到 table2 中。

以上是如何有效率地同時插入資料到多個SQL Server表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板