SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: 将表数据生成Insert脚本 -- Demo : exec pCreateInsertScript 'TestTable','1=1' -- ============================================= CREATE PROC [dbo].[pCreateInsertScript] ( @tablename VARCHAR(256) ,@con NVARCHAR(400) ) AS BEGIN SET NOCOUNT ON DECLARE @sqlstr VARCHAR(4000) DECLARE @sqlstr1 VARCHAR(4000) DECLARE @sqlstr2 VARCHAR(4000) SELECT @sqlstr = 'select ''insert ' + @tablename SELECT @sqlstr1 = '' SELECT @sqlstr2 = '(' SELECT @sqlstr1 = 'values (''+' SELECT @sqlstr1 = @sqlstr1 + col + '+'',''+' ,@sqlstr2 = @sqlstr2 + NAME + ',' FROM ( SELECT CASE WHEN a.xtype = 173 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(' + convert(VARCHAR(4), a.length * 2 + 2) + '),' + a.NAME + ')' + ' end' WHEN a.xtype = 104 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(1),' + a.NAME + ')' + ' end' WHEN a.xtype = 175 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.NAME + ','''''''','''''''''''')' + '+''''''''' + ' end' WHEN a.xtype = 61 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'convert(varchar(23),' + a.NAME + ',121)' + '+''''''''' + ' end' WHEN a.xtype = 106 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(' + convert(VARCHAR(4), a.xprec + 2) + '),' + a.NAME + ')' + ' end' WHEN a.xtype = 62 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(23),' + a.NAME + ',2)' + ' end' WHEN a.xtype = 56 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(11),' + a.NAME + ')' + ' end' WHEN a.xtype = 60 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(22),' + a.NAME + ')' + ' end' WHEN a.xtype = 239 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.NAME + ','''''''','''''''''''')' + '+''''''''' + ' end' WHEN a.xtype = 108 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(' + convert(VARCHAR(4), a.xprec + 2) + '),' + a.NAME + ')' + ' end' WHEN a.xtype = 231 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.NAME + ','''''''','''''''''''')' + '+''''''''' + ' end' WHEN a.xtype = 59 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(23),' + a.NAME + ',2)' + ' end' WHEN a.xtype = 58 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'convert(varchar(23),' + a.NAME + ',121)' + '+''''''''' + ' end' WHEN a.xtype = 52 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(12),' + a.NAME + ')' + ' end' WHEN a.xtype = 122 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(22),' + a.NAME + ')' + ' end' WHEN a.xtype = 127 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(6),' + a.NAME + ')' + ' end' WHEN a.xtype = 48 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(6),' + a.NAME + ')' + ' end' WHEN a.xtype = 165 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + 'convert(varchar(' + convert(VARCHAR(4), a.length * 2 + 2) + '),' + a.NAME + ')' + ' end' WHEN a.xtype = 167 THEN 'case when ' + a.NAME + ' is null then ''NULL'' else ' + '''''''''+' + 'replace(' + a.NAME + ','''''''','''''''''''')' + '+''''''''' + ' end' ELSE '''NULL''' END AS col ,a.colid ,a.NAME FROM syscolumns a WHERE a.id = object_id(@tablename) AND a.xtype <> 189 AND a.xtype <> 34 AND a.xtype <> 35 AND a.xtype <> 36 ) t ORDER BY colid SELECT @sqlstr = @sqlstr + left(@sqlstr2, len(@sqlstr2) - 1) + ') ' + left(@sqlstr1, len(@sqlstr1) - 3) + ');'' from ' + @tablename + ' where 1=1 and ' + isnull(@con, '') PRINT @sqlstr EXEC (@sqlstr) SET NOCOUNT OFF END GO