设为首页 收藏本站
查看: 760|回复: 0

[经验分享] 用Vim操作SQL Server数据库

[复制链接]

尚未签到

发表于 2016-11-1 00:57:46 | 显示全部楼层 |阅读模式
  在SQL Server环境下开发和调试SQL通常要用到官方的开发工具SQL Server Management Studio。该工具虽然能够满足一般的开发调试需求,但编辑器的功能不过完善。另外,它也没有很好的版本控制支持,这对于严谨的项目开发而言不够高效。有没有能够满足这些要求的高效的开发工具呢?Vim正是一个比较理想的选择。它首先是一个高效率的编辑工具,同时也是一个可扩展的平台,通过使用合适的插件,用户可以在不离开Vim的情况下进行数据库查询,代码编译、执行,版本控制等项目开发常见的操作。当然,使用Vim也自然可以访问SQL Server。下面简单说明如何设置Vim使其能够在SQL Server环境下开发和调试SQL。
为了能够在Vim环境下直接运行数据查询,我们需要安装dbext这个插件(具体安装请参看官网)。该插件可以支持多种主流关系型数据,如SQL Server, Oracle, DB2, MySQL, Sybase, SQLite等等。dbext的基本工作原理是将用户指定的SQL语句调用相应的数据库客户端软件然后获取结果然后在Vim中用一个叫Result的窗口显示查询结果。因此,我们需要安装SQL Server的客户端软件sqlcmd。该软件的最精简版本包含在所谓的Feature Pack中,可以在微软官方网站http://www.microsoft.com/en-us/download/details.aspx?id=16978下载。要注意的是sqlcmd依赖的数据库驱动程序也必须下载安装。
安装完后就可以配置dbext了。
关键的设置是修改g:dbext_default_SQLSRV_bin,默认第三方软件osql,兼容性没有微软官方的sqlcmd好,所以我们要改成sqlcmd。然后就可以配置profile了。dbext中SQL Server对应的Type是SQLSRV。然后,设置srvname,它相当于sqlcmd的-S选项,指定了数据库所在的服务器,实例名及端口。其它需要设置的参数是dbname,它表示连接那个数据库。最后是user和passwd。以下是完整的例子:

let g:dbext_default_SQLSRV_bin = 'sqlcmd'
let g:dbext_default_SQLSRV_cmd_options = ''
let g:dbext_default_profile_uca_dw = 'type=SQLSRV:srvname=167.3.129.85:dbname=UCA_DW:user=fgz:passwd=123456'
  
这些设置通常放在.vimrc(或_vimrc)中。
设置完成后就可以在.sql文件中加入dbext modeline来说明运行该文件中的SQL语句时dbext应该选用的数据库连接。以下是一个示例文件:

--dbext:profile=uca_dw
select p1.program,
p2.program,
p2.sub_module
from program p1, program p2
where p1.description = p2.description
and p1.sub_module = 'UNCLASSIFIED'
and p2.sub_module <> 'UNCLASSIFIED'
go
update p1
set p1.sub_module = p2.sub_module
from program p1, program p2
where p1.description = p2.description
and p1.sub_module = 'UNCLASSIFIED'
and p2.sub_module <> 'UNCLASSIFIED'
go
select eu_num,
name
from customer
where exists(select 1 from audit where audit.eu_num = customer.eu_num)
go
select a1.tot as "IDS Total Usage",
a2.tot as "Lang_mekra Total Usage",
a3.tot as "IDS Named User Usage",
a4.tot as "Lang_mekra Named User Usage"
from (select count(*) tot,
1        link
from app_usage t1, audit t2
where t1.audit_id = t2.audit_id
and t2.eu_num = '00048236'
) a1,
(select count(*) tot,
1        link
from app_usage t1, audit t2
where t1.audit_id = t2.audit_id
and t2.eu_num = '00061737'
) a2,
(select count distinct user_login tot,
1                         link
from app_usage t1, audit t2
where t1.audit_id = t2.audit_id
and t2.eu_num = '00048236'
) a3,
(select count distinct user_login tot,
1                         link
from app_usage t1, audit t2
where t1.audit_id = t2.audit_id
and t2.eu_num = '00061737'
) a4
where a1.link = a2.link
and a2.link = a3.link
and a3.link = a4.link
go

  
如果要运行SQL语句,先将要运行的语句用visual模式选中然后按\se即可。运行结果如下:

运维网声明 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-293801-1-1.html 上篇帖子: SQL Server 优化存储过程的方法 下篇帖子: sql server的BCP导入导出(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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