Sql Server 快速获取表中数据的Insert语句,便于快速复制
来源:互联网 发布:网络胜利组人物介绍 编辑:程序博客网 时间:2024/05/23 19:33
EXEC usp_Tool_GetSQL @tablename='****',@condition=' WHERE ****=''****'''
EXEC usp_Tool_GetSQL @tablename='*****'
CREATE proc [dbo].[usp_Tool_GetSQL] @tablename sysname, @aimtablename sysname = '', @condition nvarchar(4000) = '', @showSql char(1) = 'N' ,@columnnames nvarchar(4000) ='*'ASbegin declare @sqlName varchar(max) declare @sqlValues varchar(max) declare @strCondition varchar(1000) SET NOCOUNT ON select @sqlName =' (' select @sqlValues = 'VALUES (''+' if(@aimtablename = '') select @aimtablename = @tablename select @sqlValues = @sqlValues + ColValue + ' + '','' + ' ,@sqlName = @sqlName + '[' + ColName + '],' 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) --smalldatetime datetime --then 'case when ['+ name +'] is null then ''NULL'' else '+''''''''' + ' + 'cast(['+ name +'] as varchar)'+ '+'''''''''+' end' then 'case when ['+ name +'] is null then ''NULL'' else '+''''''''' + ' + 'convert(nvarchar(24),['+ name +'],121)'+ '+'''''''''+' end' -- when xtype in (167,175)--(var)char -- then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+''''''''' + ' end' when xtype in (167,175)--(var)char then 'case when ['+ name +'] is null then ''NULL'' else '+'''N'''''' + ' + 'replace(['+ name+'],'''''''','''''''''''')' + '+''''''''' + ' end' when xtype in (231,239)--(nvar)char then 'case when ['+ name +'] is null then ''NULL'' else '+'''N'''''' + ' + 'replace(['+ name+'],'''''''','''''''''''')' + '+''''''''' + ' end' else '''NULL''' end as ColValue,name as ColName from syscolumns where id = object_id(@tablename) AND (@columnnames='*' or CHARINDEX(','+name+',',','+@columnnames+',')>0) --and autoval is null --当该栏位为自增型int时,会出现autoval不为null的情况。 ) T --不同的DB计算出来的长度可能不一样,所以最后一个是逗号的话,多减去一个字符的长度 select @sqlValues = left(@sqlValues,len(@sqlValues)-4) if left(reverse(@sqlValues),1) = ',' select @sqlValues = left(@sqlValues,len(@sqlValues)-1) if(@showSql='Y') BEGIN print '--SQL1 - GenColoums:' print '--select ''INSERT INTO ['+ @aimtablename + ']' + left(@sqlName,len(@sqlName)-1)+') ' + @sqlValues + ')'' AS INSERTSQL from '+@tablename + space(1) + @condition print '--SQL2 - Not GenColoums:' print '--select ''INSERT INTO ['+ @aimtablename + '] ' + @sqlValues + ')'' AS INSERTSQL from '+@tablename + space(1) + @condition END select @sqlName = left(@sqlName,len(@sqlName)-1) select @strCondition=replace(@condition,'''','''''') /* --from table to table exec ('SELECT ''--['+@tablename+']-->['+@aimtablename+']'' as [ ]') --delete existed records exec('select ''DELETE FROM'+ @tablename + ' ' + @strCondition+''' as [--Delete SQL]') */ --get insert sql exec('SELECT ''--['+@tablename+']-->['+@aimtablename+']'' as [ ] UNION ' + 'SELECT ''DELETE FROM ['+ @tablename + '] ' + @strCondition+''' as [ ] UNION ' + 'SELECT ''INSERT INTO ['+ @aimtablename + ']' + @sqlName +') '+ @sqlValues + ')'' as [ ] from '+ @tablename + ' ' + @condition) SET NOCOUNT OFF end
- Sql Server 快速获取表中数据的Insert语句,便于快速复制
- (sqllite)sql语句复制表积累-快速导入数据
- mysql 快速清除指定表中数据的sql语句
- SQL Server 快速获取表的行数
- SQL Server 2005导出表中数据的SQL脚本形式(即INSERT语句)
- 数据库——Oracle中快速复制表结构及sql语句select into的用法
- 获取数据库表中数据的insert语句
- 快速复制数据库表中的数据SQL
- sql快速复制表,导入数据到新表
- excel sheet中数据的快速复制
- SQL Server快速获取表的记录总数
- 快速获取指定表的行数(Sql Server 大数据量)
- 使用SQL语句快速查找表中相同的记录或有相同数据的列
- MS SQL SERVER中如何快速获取表的记录总数
- 用sql语句快速备份表数据
- 用sql语句快速备份表数据
- SQL Server快速导入数据 各种表的速度比较
- [转]sql server将表中的数据导出为 insert的sql语句
- 打印功能
- 众数及重数
- 查看JNDI
- QT QTableWidget 用法总结
- CSDN宣布与全球领先的协同软件供应商Atlassian开展战略合作
- Sql Server 快速获取表中数据的Insert语句,便于快速复制
- 东南三菱新成员——风迪思
- Linux防火墙:iptables(netfilter)、ipchains、ipfwadm
- 设置 Oracle 监听器密码(LISTENER) .
- 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
- Nginx架构的企业级应用
- 时间复杂度
- 图片处理工具类
- c# 跨窗体调用控件和参数