auto generate insert script

本文介绍了一种使用T-SQL动态生成针对特定表的插入语句的方法。通过声明变量和临时表,从系统目录视图中获取字段信息,并构造出完整的插入语句。

DECLARE @TableName VARCHAR(128);
SET @TableName = 'Order_Item'
DECLARE @FieldInfo TABLE(FieldName SYSNAME, TypeName SYSNAME);

INSERT INTO @FieldInfo
SELECT c.[name],t.[name]
FROM sys.[columns] c
JOIN sys.types t ON t.user_type_id = c.user_type_id
WHERE c.[object_id] = OBJECT_ID(@TableName);

DECLARE @sql VARCHAR(MAX);
SET @sql = 'select ''insert into ' + @TableName + '(';

SELECT @sql = @sql + FieldName + ','
FROM @FieldInfo

SET @sql = LEFT(@sql,LEN(@sql) - 1) + ') values('''

SELECT 
	@sql = @sql + '
		+ case when ' + FieldName + ' is null then ''NULL'' else '
	+ CASE WHEN TypeName IN('char', 'varchar') THEN ''''''''' + ' + FieldName + ' + ''''''''' 
	ELSE 'cast(' + FieldName + ' as varchar)'
	END + ' end + '','''
FROM @FieldInfo

SET @sql = LEFT(@sql, LEN(@sql) - 2) + ')'' from ' + @TableName
SELECT @sql

转载于:https://www.cnblogs.com/laoyumi/archive/2010/11/08/1871928.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值