对单表数据生成insert语句

本文介绍了一个SQL脚本,用于自动生成针对特定表的INSERT语句,包含主键数据,适用于单表操作。该脚本在生成INSERT语句前,会检查表的自增字段,并提供必要的设置说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


/*
功能:对单表数据生成insert语句
约束:1. 只能单表
   2. insert语句包括主键数据
   3. 不进行数据有效性检查
      4. 采用了简单数据处理,如果对表中含了不可转换成varchar的列,则有可能失败

      5. 行中有null值的行将失败
      6. 执行生成的insert语句组前,如果表有自编号字段,请先使用set  identity_insert 表名 on,允许insert自动编号数据

作者: Gavin Liu
*/
declare @tableName varchar(50)
select @tableName='表名' --要生成insert数据的表名,去掉表所有者前缀(如dbo.)

declare @sqlstr varchar(max)
select @sqlstr=''
declare @fldList varchar(max),@flsValueList varchar(max)
select @fldList='',@flsValueList=''
select
@fldList = @fldList + case when len(@fldList)>0 then ',' else '' end + cols.[name],
@flsValueList = @flsValueList + case when len(@flsValueList)>0 then ',' else '' end + '''''''+cast(' + cols.[name] + ' as varchar(max))+'''''''
from
(select * from sysobjects where xtype='u') tbls
inner join syscolumns cols on cols.id=tbls.id
where tbls.[name] in (@tableName)

select @sqlstr='select ''insert into ' + @tableName + '(' + @fldList + ') values (' + @flsValueList + ')'' from ' + @tableName
execute(@sqlstr)

转载于:https://www.cnblogs.com/llbofchina/archive/2010/08/19/1803287.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值