自动生成INSERT语句的SQL存储过程
2012-05-25 09:43
531 查看
create PROC [dbo].[Spgeninsertsql] (@tablename VARCHAR(256)) AS BEGIN DECLARE @sql VARCHAR(8000) DECLARE @sqlValues VARCHAR(8000) SET @sql =' (' SET @sqlValues = 'values (''+' SELECT @sqlValues = @sqlValues + cols + ' + '','' + ', @sql = @sql + '[' + name + '],' 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 ) THEN 'case when ' + name + ' is null then ''NULL'' else ' + ''''''''' + ' + 'replace(' + name + ','''''''','''''''''''')' + '+''''''''' + ' end' WHEN xtype IN ( 231 ) THEN 'case when ' + name + ' is null then ''NULL'' else ' + '''N'''''' + ' + 'replace(' + name + ','''''''','''''''''''')' + '+''''''''' + ' end' WHEN xtype IN ( 175 ) THEN 'case when ' + name + ' is null then ''NULL'' else ' + ''''''''' + ' + 'cast(replace(' + name + ','''''''','''''''''''') as Char(' + Cast(length AS VARCHAR) + '))+''''''''' + ' end' WHEN xtype IN ( 239 ) THEN 'case when ' + name + ' is null then ''NULL'' else ' + '''N'''''' + ' + 'cast(replace(' + name + ','''''''','''''''''''') as Char(' + Cast(length AS VARCHAR) + '))+''''''''' + ' end' ELSE '''NULL''' END AS Cols, name FROM syscolumns WHERE id = Object_id(@tablename)) T SET @sql ='select ''INSERT INTO [' + @tablename + ']' + LEFT(@sql, Len(@sql) - 1) + ') ' + LEFT(@sqlValues, Len(@sqlValues) - 4) + ')'' from ' + @tablename PRINT @sql EXEC (@sql) END
执行如下语句测试结果:
exec spGenInsertSQL test
把得到的insert语句Copy后放置在如下位置执行:
set Identity_Insert text on //insert 语句 set Identity_Insert test off
PS:有时生成SQL语句很长,采用文本方式显示时无法显示全部,通过如下方式调整:
在 SQL Server 查询窗口中单击右键-〉“查询选项”-〉在“查询选项”对话框中的“结果”下,单击“文本”-〉更改"每列中显示的最大数"
相关文章推荐
- 自动生成INSERT语句的SQL存储过程
- 将表中的数据自动生成INSERT语句的存储过程,自己收藏一下
- mssql 生成‘批量Insert数据的sql语句’的存储过程
- 生成Insert语句SQL存储过程
- 根据表名自动生成INSERT,UPDATE,DELETE,SELECT的SQL语句
- SQL过程自动C#封装,支持从表到基本存储过程生成,
- MSSQL生成表数据SQL插入语句的存储过程
- 根据表中数据生成insert语句的存储过程
- 在SQL存储过程内拼条件,动态生成SQL语句执行
- 根据表名自动生成INSERT,UPDATE,DELETE,SELECT的SQL语句
- SQL Server 存储过程生成insert语句
- MySQL存储过程动态SQL语句的生成
- SQL Server 存储过程生成insert语句
- MS SQL server 生成 insert 数据的存储过程脚本
- C# 由数据集DataSet自动生成Insert的SQL语句集合
- 从已有数据库生成脚本来获得生成数据表、视图、函数、存储过程以及触发器的SQL语句
- 生成Insert语句的存储过程
- 将表里的数据批量生成INSERT语句的存储过程 增强版
- 在SQL SERVER中定时执行SQL语句,或者存储过程. &sql server 自动执行存储过程
- T-SQL 存储过程: (修订版) 根据基本表结构及其数据生成 INSERT INTO ... 的 SQL (转)