迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
/* 类似的工具也曾写过,今天拿出改改,重新分享给大家! 1. .Net 1.1 C# 实现 生成的 SQL 的 列之间使用 "\t" Tab 分割, 另外还可以控制是否处理 二进制 的大字段! 实现方式使用 DataSet 和 DataReader 两种方法重载! DataReader.GetDataTypeName(i) 方法可以得到 native 的 SQL Server 的数据类型 DataReader.GetFieldType(i) 方法 完整程序下载 2. T-SQL Store Procedure 实现
create proc Z_SP_GenInsertSQL (@tablename varchar(256))
as begin declare @sql varchar(8000) declare @sqlValues varchar(8000) set @sql =' (' + char(9) set @sqlValues = 'values '+ char(9) + '(' + char(9) + '''+' select @sqlValues = @sqlValues + cols + ' + '',' + char(9) + ''' + ' ,@sql = @sql + '[' + name + '],' + CHAR(9) from (select case when xtype in (48,52,56,59,60,62,104,106,108,122,127) then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end' when xtype in (58,61) then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end' when xtype in (167,175) then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+''''''''' + ' end' when xtype in (231,239) then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+''''''''' + ' end' else '''NULL''' end as Cols,name from syscolumns where id = object_id(@tablename) and autoval is null ) T set @sql ='select ''INSERT INTO ' + CHAR(9) + '['+ @tablename + ']' + CHAR(9) + left(@sql,len(@sql)-2) + char(9) + ') ' + CHAR(9) + left(@sqlValues,len(@sqlValues)-5) + char(9) + ')'' from '+@tablename print @sql exec (@sql)
ALTER procedure Z_SP_GenInsertSQL
( @tablename varchar(256) ,@WhereClause varchar(1000) = 'where 1 = 1' ) as begin
|
请发表评论