将MSSQL表数据转成SQL语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将MSSQL表数据转成SQL语句相关的知识,希望对你有一定的参考价值。

创建一个把表记录转换成SQL语句

CREATE PROC [dbo].[up_tb_tosql]
@tbname varchar(200) = ‘‘,<span style="white-space:pre">	</span>--表名
@rownum varchar(10) =‘1000‘<span style="white-space:pre">	</span>--转换条数
as
BEGIN
--表名检查
IF @tbname = ‘‘
BEGIN
	return 0;
END
--条数验证
IF @rownum is null 
BEGIN
	SET @rownum =‘1000‘; 
END
--定义变量
DECLARE @colinfo varchar(8000)
DECLARE @sqlinfo varchar(8000)
DECLARE @sqlcmd varchar(8000)
DECLARE @sqlst varchar(800)
DECLARE @sqlend varchar(800)
SET @sqlcmd=‘‘;
SET @sqlst=‘‘;
SET @sqlend=‘‘;
--生成列信息
SELECT @colinfo=replace(replace(CAST (( SELECT  case when system_type_id in (61,58) then convert(varchar(20),name,120) else  name end +‘,‘ from sys.columns 
			WHERE  object_name(object_id)[email protected]
			FOR XML PATH(‘‘), TYPE) AS NVARCHAR(MAX) ) ,‘</name>‘,‘‘),‘<name>‘,‘‘);
SELECT @colinfo=Left(@colinfo,len(@colinfo)-1);
--拼接列名
SELECT @sqlinfo=replace(replace(CAST (( SELECT  case when system_type_id in (58,61) then ‘+convert(varchar(20),isnull(‘+name+‘,‘‘‘‘),120)+‘‘‘‘‘‘,‘‘‘‘‘‘‘ else  ‘+replace(CAST(isnull(‘+name+‘,‘‘‘‘) as varchar(2000)),‘‘‘‘‘‘‘‘,‘‘‘‘)+‘‘‘‘‘‘,‘‘‘‘‘‘‘ end 
from sys.columns 
			WHERE object_name(object_id)[email protected]
			FOR XML PATH(‘‘), TYPE) AS NVARCHAR(MAX) ) ,‘</name>‘,‘‘),‘<name>‘,‘‘);
SELECT @sqlinfo=Left(@sqlinfo,len(@sqlinfo)-8);

--查询是否自增
IF exists (SELECT * FROM  sys.columns  WHERE  object_name(object_id)[email protected] and is_identity=1)
BEGIN
	SET @sqlst=‘SELECT ‘‘SET identity_insert [‘[email protected]+‘] ON ‘‘
UNION ALL ‘;
	SET @sqlend=‘UNION ALL
SELECT ‘‘ SET identity_insert [‘[email protected]+‘] OFF  ‘‘‘;
END
--拼写整个SQL
SELECT @[email protected]+‘
SELECT TOP ‘[email protected]+‘ ‘‘INSERT INTO [‘[email protected]+‘](‘[email protected]+‘) SELECT ‘‘‘‘‘‘‘[email protected]+ ‘+‘‘‘‘‘‘;‘‘ FROM ‘[email protected]+‘
‘[email protected];
--SELECT @sqlcmd,@sqlst,@colinfo,@sqlinfo,@tbname,@sqlend,@rownum;
--执行SQL
exec (@sqlcmd);
--print @sqlcmd;
end

调用方式
up_tb_tosql(‘t_tbnam‘,‘10000‘);


本文出自 “枯叶” 博客,请务必保留此出处http://mydbs.blog.51cto.com/513727/1745278

以上是关于将MSSQL表数据转成SQL语句的主要内容,如果未能解决你的问题,请参考以下文章

mssql 的一张表中有100000条数据,如何用mssql语言将这100000条数据平均分到10张表中

如何将几条sql语句一起执行

我用的是 MSSQL 2005 请问下 用SQL语句 数据库查询某个表是不是存在不存在则创建这个表,该怎么写。

如何将多行生成为 1 列值或在 MSsql 中用逗号分隔的 sql 语句

Microsoft SQL Server 代码片段收集

SQL Select 语句的用法