SQL Server根據表或視圖批量生成插入語句並BCP導出成文本
--聲明變量 DECLARE @TableName VARCHAR(100),@RunStr VARCHAR(MAX),@RunRC VARCHAR(MAX),@FinalRun VARCHAR(MAX) --在master庫創建數據載體,也可以建立在其他數據庫,但一定要是實體表,因為BCP導出不支持臨時表 IF OBJECT_ID(‘master.dbo.tempinsertstr‘) IS NOT NULL DROP TABLE master.dbo.tempinsertstr CREATE TABLE master.dbo.tempinsertstr(rowid INT IDENTITY(0,1),rowtext VARCHAR(MAX)) INSERT master.dbo.tempinsertstr(rowtext) VALUES(‘reserved‘) --表或視圖名稱定義: SELECT @TableName=‘Reseller‘ --拼湊表或視圖字段信息,針對字符或時間類型的加單引號‘‘,為防止特殊字段名都加了[] SELECT @RunStr=ISNULL(@RunStr+‘+‘‘,‘‘+‘,‘‘)+‘ISNULL(‘+CASE WHEN T.name IN(‘nvarchar‘,‘varchar‘,‘char‘,‘text‘,‘datetime‘,‘date‘,‘datetime2‘) THEN ‘‘‘‘‘‘‘‘‘+LTRIM(‘+CASE WHEN T.name=‘text‘ THEN ‘CAST([‘+c.name+‘] as varchar(max)))+‘‘‘‘‘‘‘‘,‘‘NULL‘‘)‘ ELSE ‘[‘+c.name+‘])+‘‘‘‘‘‘‘‘,‘‘NULL‘‘)‘ END ELSE ‘LTRIM([‘+c.name+‘]),‘‘NULL‘‘)‘ END FROM dbo.syscolumns C INNER JOIN dbo.systypes T on C.xusertype=T.xusertype WHERE C.id = object_id(@TableName) AND (OBJECTPROPERTY(C.id, N‘IsUserTable‘) = 1 OR OBJECTPROPERTY(C.id,N‘IsView‘)=1) ORDER BY C.colorder --生成批量values語句: SET @RunRC=LOWER(‘ insert master.dbo.tempinsertstr(rowtext) select ‘+‘‘‘([email protected]