使用sqlcmd可以在批处理脚本中执行SQL。虽然这个命令的参数很多,但幸运的是,我们不需要全部理解,在这里简要介绍以下几个:
  { -U login_id [ -P password ] } | –E trusted connection }] 如果指定了-E就不需要指定用户名密码,当然指定了用户名密码就不用-E了;
  -S server_name [ \ instance_name ] 数据库服务器,如果不在本机的话必须指定;
  -d db_name 数据库名字,必须的;
  [ -i input_file ] [ -o output_file ] sql存在文件里的话用-i,输出到文件用-o;
  [ -q "cmdline query" ] [ -Q "cmdline query" and exit ] 输入是简单的sql,不用文件,推荐用-Q,如果你执行完sqlcmd还需要执行别的动作的话;
  [ -W remove trailing spaces ] 删除多余的空格,结果会更紧凑。
  当我们在真正的脚本中执行sql时,通常需要传入和输出变量。
  传入变量比较简单,如下所示:
  sqlcmd -d test -Q "select * from dbo.Investment where investor=$(x)" -v x='IBM' -W
  这个语句从test数据库的Investment表中选出investor等于x的所有行,注意到变量x被包含在${}中。
  然后用-v定义了x的值,'IBM'。
  -W确定输出的结果不包含多余的空格。
  x的值如果没有在sqlcmd中设定,系统会试图从别的地方去寻找,可能的地方包括,系统环境变量,用户环境变量,以及用在sqlcmd之前用set设定的变量值。
  如果你的数据里确实包含${},那么你并不希望进行变量的替换,使用-x选项可以禁止变量的替换。
  有些时候,你还希望能获得sql执行结果并保存到变量中。比如你们的日志系统每天都在产生日志文件,你要执行一个脚本来处理这些日志文件并存到数据库中。在处理之前,你必须读取数据库以确定上次处理到那一天了。你期望这样能解决你的问题:
  sqlcmd -d test -Q "select ${x}=max(date) from dbo.logDates " -W
  但这样并不工作。因为sqlcmd并不提供输出变量。
  不过你可以这样做:
  sqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -W
  这样你就可以得到一个干干净净的数字,而不会包含列名和其他信息。
  接着你将上述结果导入到一个文件里:
  sqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -W 1.txt
  现在到了最关键的一步,将文件的内容写入到变量里:
  set /P myvar=<1.txt
  /p表明这个变量myvar的值需要用户输入;
  <1.txt表明从1.txt中读入而不是从其他地方读入。
  这样,我们就巧妙的把sql执行的结果写入到变量里了。 EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于

最新文章

  1. Ubuntu下的MySQL安装
  2. android studio 中依赖库compile 的一些库的地址
  3. delphi 串口 关于RS485总线通信协议开发注意事项
  4. .frame类库简单介绍与使用
  5. weblogic部署项目包,报空指针错误
  6. linux常用
  7. Sprint计划会议1
  8. Struts2笔记——与ServletAPI解耦
  9. (Relax 水题1.2)POJ 1032 Parliament(将n分解成若干个互不相等的整数的和,并且是这些整数的乘积最大)
  10. Ubuntu 下对ADT 添加别名(alias)
  11. Linux(Redhat)安装Redis
  12. MyDAL - .UpdateAsync() 之 .SetSegment 根据条件 动态设置 要更新的字段 使用
  13. Love Live!-01字典树启发式合并
  14. Yii2 设计模式——工厂方法模式
  15. SpringBoot整合定时任务异步任务
  16. nginx http转 https
  17. C#编程(八十一)---------- 捕获异常
  18. efcore数据库自动生成
  19. 键值对操作 之 combineByKey
  20. SQL Server 生成 数据字典 / 数据库文档

热门文章

  1. SpringAOP
  2. codevs3243 区间翻转
  3. Intel 80x86 Linux Kernel Interrupt(中断)、Interrupt Priority、Interrupt nesting、Prohibit Things Whthin CPU In The Interrupt Off State
  4. Linux 线程(进程)数限制分析
  5. C/C+小记
  6. hdu 1003 Max Sum(动态规划)
  7. CruiseControl.NET学习总结(转载)
  8. Java EE学习--Quartz基本用法
  9. artEditor增加表单提交功能
  10. HDOJ 2063 过山车