sqlcmd

使用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 - 大于或等于
时间: 2024-10-24 21:33:37

sqlcmd的相关文章

SQLCMD备忘录:执行文件夹所有Sql文件

在做性能测试的时候最希望的一件事情是数据自动导入. 一般做法就是写很多SQL文件,通过Bat自动执行所有Sql文件. Bat代码: @ECHO OFF SET SQLCMD="C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" SET PATH="C:\path\to\sql\files\" SET SERVER="Server\Instance" SET DB=&qu

sqlcmd导入大数据文件

SQLCMD 允许在Windows命令窗中通过命令行提示符运行脚本. 语法如下: sqlcmd  [  { { -U <login id> [ -P <password> ] } | -E }  ]  [-S <server> [ \<instance > ] ] [ -H <workstation> ] [ -d <database> ]  [ -l <time out> ] [ -t <time out>

使用SQLCMD清理WSUS 数据库。

WSUS 运行一段时间以后,会累积一些过期的补丁或者电脑信息,长期不进行清理,则可能造成数据库越来越大,然后WSUS Server越来越慢,客户端无法通过WSUS 安装补丁等情况. WSUS 提供了一个Server Cleanup Wizard,可以帮助我们清理WSUS .如果之前长期没有进行清理,数据太大或者数据库存在一些问题,则可能会在清理的过程中碰到数据库错误,无法无法清理工作. 因为WSUS使用的是Internal SQL Databse,所以,如果出现这种情况,可以使用SQLCMD工具

使用SQLCMD在SQLServer执行多个脚本 转载

出处不明 概述: 作为DBA,经常要用开发人员提供的SQL脚本来更新正式数据库,但是一个比较合理的开发流程,当提交脚本给DBA执行的时候,可能已经有几百个sql文件,并且有执行顺序,如我现在工作的公司,十几个客户,每个客户一个库,但是数据库结构.存储过程.视图等都是一模一样,每次执行脚本(以下称为升级),如果有一百个脚本,那么就要按顺序执行过千次,这种工作量可不是一个人能承受得了的. 解决方法: 应对这种情况有以下几种方法: 1.  购买第三方软件(一般估计很少人买) 2.  自己编程一个小软件

转:SQLServer的命令行工具-sqlcmd等..

转:http://blog.csdn.net/leamonjxl/article/details/6428753 和往常一样,我们先使用 /?来看看sqlcmd的启动参数们: C:Documents and Settingschenxie.IFLYTEK>sqlcmd.exe /? Microsoft (R) SQL Server 命令行工具 版本 9.00.1399.06 NT INTEL X86 版权所有 (c) Microsoft Corporation.保留所有权利. 用法: Sqlcm

SqlCmd -Windows Cluster Model

前提条件 1存储lun 划分完毕并且挂载到其中一台机器上 2 需要加入群集的节点机器加入域完毕,并设置好心跳线 .加域部分可以参考 之前 Sqler Cmd 加域部分. 1检查Feature 更新 SqlerCmdWinClusterInstallFeature 再需要按装cluster的 节点机器上面运行 SqlerCmdWinClusterInstallFeature cat C:\CheckInstallClusterLog.Log 如果节点机器已安装 PS C:\Users\xwj> c

使用SQLCMD在SQLServer执行多个脚本

概述: 作为DBA,经常要用开发人员提供的SQL脚本来更新正式数据库,但是一个比较合理的开发流程,当提交脚本给DBA执行的时候,可能已经有几百个sql文件,并且有执行顺序,如我现在工作的公司,十几个客户,每个客户一个库,但是数据库结构.存储过程.视图等都是一模一样,每次执行脚本(以下称为升级),如果有一百个脚本,那么就要按顺序执行过千次,这种工作量可不是一个人能承受得了的. 解决方法: 应对这种情况有以下几种方法: 1.  购买第三方软件(一般估计很少人买) 2.  自己编程一个小软件来执行,但

bat+sqlcmd 批量运行脚本

Hello,此BAT脚本可以帮助开发人员将某文件夹下所有SQL脚本按文件名依次在指定数据库中批量执行.不用忍受powershell invoke-sqlcmd 的笨重,在指运行时多一种选择. bat文件 @echo off @REM ******** ******** General Batch for Starting SQL ******** ******** @REM %1 is the name of SQL script file @rem SET SQL_NAME=%1 @SET S

sqlcmd介绍

最近经常用到超过80M *.sql文件的导入问题. 上网找了一下,发现超过80M的文件是不能在查询分析器中执行的.  sqlcmd  -U "sa" -P "111" -d "databasename" -i "mydata.sql" 找了些解决方案,个人感觉最简单的方法就是这个SQLCMD的,拿出来分享一下,也方便日后自己使用. 1 sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -