设为首页 收藏本站
查看: 1019|回复: 1

[经验分享] SQLServer快速生成多字段sql语句

[复制链接]

尚未签到

发表于 2017-10-30 14:55:37 | 显示全部楼层 |阅读模式
也许会碰到这样的问题:
有一张表有几十个或者上百个字段,备份后删除了一部分数据,过后发现问题需要恢复其中一部分数据,但有几个字段不需要恢复(比如100个字段,只需恢复97个)

初学阶段:
对于一个初学者可能是个噩梦:"oh, my god! 难道要手打97个字段???",一边从网上找案例,一边苦思冥想,折腾十几分钟,最终还是手打...

入门阶段:
对于了解数据库但不是很擅长编写sql语句(涉及系统表)的技术人员:"嗯...这个可以从建表语句或者用sp_help table_name拿到所有字段,只需要将字段复制出来整理一下...",于是复制粘贴,改字段加符号,处理了几分钟

进阶阶段:
对于熟悉数据及编写sql语句的技术人员:"系统表里面存放表的字段信息,在查询字段时可以把不需要的字段剔除,拼接出可直接用于执行的语句...",几分钟后,敲出代码:

declare @into_table_name varchar(50)
declare @select_table_name varchar(50)
declare @except_columns varchar(100)
declare @where_condition varchar(500)

--原表
set @into_table_name=''

--备份表
set @select_table_name=''

--排除的字段
set @except_columns=''

--where条件
set @where_condition=' where 1=2'

declare @insert_str varchar(max)
declare @column_str varchar(max)

--拼接字段
set @column_str=(
select b.name+','
from sysobjects a,syscolumns b
where a.id=b.id
and a.name=@table_name
and b.name not in(@except_columns)
for xml path(''))

--删除末尾逗号
select @column_str=substring(@column_str,1,len(@column_str)-1)

--拼接sql语句
set @insert_str='insert into '+@into_table_name+'('+@column_str+') select '+@column_str+' from '+@select_table_name+@where_condition
select @insert_str
检查无误后:exec(@insert_str)


类似的问题再次出现

初学者:"##$#@!@#!@#%$#%..."
入门者:"唉..."
进阶者笑了笑,从容不迫的替换参数,十几秒后一切搞定...

于是开始了打怪升级道路:初学者->入门者->进阶者->......


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-406237-1-1.html 上篇帖子: SQL Server 打造完整的数据备份体系 下篇帖子: SQL Server双机热备技术
累计签到:35 天
连续签到:1 天
发表于 2017-10-31 08:24:06 | 显示全部楼层
谢谢,看一下

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表