使用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. IDEA上安装和使用checkstyle,findbugs,visualVM,PMD插件
  2. HashMap的两种实现方式
  3. HDU 1251 Trie树模板题
  4. mybatis 分页
  5. 学习笔记(一)——MVC扩展
  6. 20步打造最安全的NGINX WEB服务器
  7. HDU-----(1083)Courses(最大匹配)
  8. lintcode:Pow(x, n)
  9. [Oracle] Oracle和SQLServer的数据类型比较
  10. filter_map
  11. 关于捕获键盘信息的processDialogkey方法2--具体应用
  12. java实现——005从尾到头打印链表
  13. 永久注册Oracle工具PL/SQL
  14. angular4-自定义组件
  15. 小朋友学C语言(3):整数、浮点数、字符
  16. Cmder - 在右键菜单添加&quot;Cmder Here&quot;
  17. BZOJ 1207 DP
  18. 使用 &quot;java -jar&quot;命令启动jar包时报不支持的jdk版本异常
  19. postman--安装及Interceptor插件
  20. PyCharm2018 安装及破解方法

热门文章

  1. 浅谈Logistic回归及过拟合
  2. [IOS 同步GET和POST数据的模版]
  3. 转:Linux集群-----HA浅谈
  4. php返回json数据简单实例
  5. 安装coreseek找不到mysql
  6. 数数字 (Digit Counting,ACM/ICPC Danang 2007,UVa 1225)
  7. Python socket编程之四:模拟分时图
  8. MIM协议与Base64编码
  9. Nginx Http框架的理解
  10. javascript判断上传文件大小