INSERT...SELECT语法可以批量地将查询的数据导入目标表中,非常方便。在相同的实例中,使用INSERT...SELECT语法时可以以DB名为前缀,这样就能很方便地在不同的数据库间批量操作数据了。如果是在不同的实例中,可以使用OPENDATASOURCE、OPENROWSET等行集函数从其他实例中获取数据,并批量同步到目标库中(语法的详细信息,可以参考SQL Server 联机丛书)。
示例代码如下:
CREATE TABLE #SalesOrderHeaderSalesReason ( [SalesOrderID] [int] NOT NULL, [SalesReasonID] [int] NOT NULL, [ModifiedDate] [datetime] NOT NULL, CONSTRAINT PK_#SalesOrderHeaderSalesReason PRIMARY KEY CLUSTERED ([SalesOrderID], [SalesReasonID]) ) INSERT INTO #SalesOrderHeaderSalesReason (SalesOrderID,SalesReasonID,ModifiedDate) SELECT soh.SalesOrderID,10,GETDATE() FROM Sales.SalesOrderHeader AS soh LEFT JOIN Sales.SalesOrderHeaderSalesReason AS sohsr ON soh.SalesOrderID = sohsr.SalesOrderID AND Sales.SalesReason=10 WHERE sohsr.SalesOrderID IS NULL; DROP TABLE #SalesOrderHeaderSalesReason;