使⽤BAT批处理执⾏sql语句的代码
1、把待执⾏Sql保存在⼀个⽂件,这⾥为20110224.sql。
2、新建⼀个扩展名.bat的批处理⽂件,输⼊下⾯命令并保存后,双击.bat⽂件,系统会⾃动执⾏20110224.sql的语句:复制代码代码如下:
osql -S gdjlc -d TestDB -U sa -P 1 -i 20110224.sql
osql参数见下⾯
=======================================================================
E:\>osql /?
icrosoft (R) SQL Server 命令⾏⼯具
版本 10.0.1600.22 NT INTEL X86
版权所有 (c) Microsoft Corporation。保留所有权利。
注意: osql 并不⽀持 SQL Server 2008的所有功能。
请使⽤ sqlcmd。有关详细信息,请参阅 SQL Server 联机丛书。
⽤法: osql                  [-U 登录 ID]          [-P 密码]
[-S 服务器]                [-H 主机名]          [-E 可信连接]
[-d 使⽤数据库名称]        [-l 登录超时值]      [-t 查询超时值]
[-h 标题]                  [-s 列分隔符]        [-w 列宽]
[-a 数据包⼤⼩]            [-e 回显输⼊]        [-I 允许带引号的标识符]
批处理文件注释
[-L 列出服务器]            [-c 命令结束]        [-D ODBC DSN 名称]
[-q "命令⾏查询"]          [-Q "命令⾏查询" 并退出]
[-n 删除编号⽅式]          [-m 错误级别]
[-r 发送到 stderr 的消息]  [-V 严重级别]
[-i 输⼊⽂件]              [-o 输出⽂件]
[-p 打印统计信息]          [-b 出错时中⽌批处理]
[-X[1] 禁⽤命令,[退出的同时显⽰警告]]
[-O 使⽤旧 ISQL ⾏为禁⽤下列项]
<EOF> 批处理
⾃动调整控制台宽度
宽消息
默认错误级别为 -1 和 1
[-? 显⽰语法摘要]
通过批处理执⾏sql命令实例:
通过批处理执⾏sql命令:
1. Restore.bat⽂件内容:
osql -E -S -i C:\
2. ⽂件内容:
复制代码代码如下:
use master
if exists (select * from sysdevices where name='TruckDB')
EXEC sp_dropdevice 'TruckDB'
Else
EXEC sp_addumpdevice 'disk','TruckDB', 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\TruckDB.mdf' restore database TruckDB
from disk='c:\TempDB\TruckDB'
with replace
导出数据到txt:
复制代码代码如下:
p_cmdshell 'bcp "intest" in d:\ -c -Sd02 -Usa -P'
p_cmdshell 'bcp "in" out d:\ -c -Sd02 -Usa -P'
很多情况下,需要给客户更新数据库,不值得
跑⼀趟,客户⾃⼰也不懂得如何操作,远程操作⽹速还跟不上...这时可以把要更新的sql语句保存成⽂件,写⼀个批处理在命令⾏状
态下调⽤查询分析器来执⾏这个sql⽂件⾥的语句。
下⾯就是sqlserver帮助⾥对于查询分析器(isqlw)命令⾏参数的解释:
isqlw 实⽤⼯具(SQL 查询分析器)使您得以输⼊ Transact-SQL 语句、系统存储过程和脚本⽂件。通过设置快捷⽅式或创建批处理
⽂件,可以启动预配置的 SQL 查询分析器。
语法
isqlw
[-?] |
[
[-S server_name[instance_name]]
[-d database]
[-E] [-U user] [-P password]
[{-i input_file} {-o output_file} [-F {U|A|O}]]
[-f file_list]
[-C configuration_file]
[-D scripts_directory]
[-T template_directory]
]
参数
-?
显⽰⽤法信息。
-S server_name[instance_name]:
指定要连接到的 Microsoft® SQL Server™ 2000 实例。指定⽤于连接到该服务器上的 SQL Server 2000 默认实例的
server_name。
指定⽤于连接到该服务器上的 SQL Server 2000 命名实例的 server_nameinstance_name。如果未指定服务器,isqlw 将连接到本地
计算机上的 SQL Server 默认实例。从⽹络上的远程计算机执⾏ isqlw 时,此选项是必需的。
-d database
当启动 isqlw 时,发出⼀个 USE database 语句。默认值为⽤户的默认数据库。
-E
使⽤信任连接⽽不请求密码。
-U user
⽤户登录 ID。登录 ID 区分⼤⼩写。
-P password
是登录密码。默认设置为 NULL。
-i input_file
标识包含⼀批 SQL 语句或存储过程的⽂件。必须同时指定 -i 和 -o 选项。如果指定 -i 和 -o 选项,将执⾏输⼊⽂件中的查询,并
将结果保存到输出⽂件中。在查询执⾏过程中不显⽰⽤户接⼝。当执⾏完成后,进程退出。
-o output_file
标识接收来⾃ isqlw 的输出的⽂件。必须同时指定 –i 和 –o 选项。如果指定 -i 和 -o 选项,将执⾏输⼊⽂件中的查询,并将结
果保存到输出⽂件中。在查询执⾏过程中不显⽰⽤户接⼝。当执⾏完成后,进程退出。如果未使⽤ -F 指定⽂件格式,则输出⽂件使⽤
与输⼊⽂件相同的类型。
-F {U|A|O}
是输⼊⽂件和输出⽂件的格式。值包括 Unicode、ANSI 和 OEM。如果未指定 -F,则使⽤⾃动模式(如果⽂件标为 Unicode 格式,则
以 Unicode 格式打开;否则,以 ANSI 格式打开⽂件)。
-f file_list
将列出的⽂件装载到 SQL 查询分析器中。使⽤ -f 选项,可以装载⼀个或多个⽂件(⽂件名以单个空格分开)。如果指定了多个⽂件
,则以相同的连接上下⽂将这些⽂件打开。⽂件名可以包含该⽂件所驻留的⽬录路径。可以使⽤通配符,如 C:Test*.sql 中的星号
(*)。
-C configuration_file
使⽤配置⽂件中指定的设置。其它在命令提⽰下显式指定的参数将重写相应配置⽂件中的设置。
-D scripts_directory
重写在注册表中或在⽤ –C 指定的配置⽂件中指定的默认存储脚本⽬录。该值不保留在注册表或配置⽂件中。若要在 SQL 查询分析
器中查看该选项的当前值,请单击"⼯具"菜单,然后单击"选项"命令。
-T template_directory
重写在注册表中或在⽤ –C 指定的配置⽂件中指定的默认模板⽬录。该值不保留在注册表或配置⽂件中。若要在 SQL 查询分析器中
查看该选项的当前值,请单击"⼯具"菜单,然后单击"选项"命令。
注释
有⽤户界⾯或没有⽤户界⾯时都可使⽤ isqlw 实⽤⼯具。若要在没有⽤户界⾯的情况下运⾏ isqlw,请指定有效登录信息(具有信任
连接或有效登录 ID 及密码的 SQL Server 2000 实例)和输⼊及输出⽂件。isqlw 将执⾏输⼊⽂件的内容,并将结果保存到输出⽂件
中。
如果没有指定输⼊和输出⽂件,isqlw 将交互运⾏并启动 SQL 查询分析器。如果指定了有效登录信息,isqlw 将直接连接 SQL Server 2000 实例。如果指定的连接信息不充⾜,将出现"连接到 SQL Server"对话框。
isqlw 和 SQL 查询分析器使⽤ ODBC API。该实⽤⼯具使⽤ SQL-92 的 Microsoft® SQL Server ODBC 驱动程序默认设置。⽰例
A. 执⾏ SQL 语句
本例使⽤ Windows ⾝份验证连接到 MyServer 上的 pubs 数据库,并执⾏ Input.sql ⽂件。结果保存在 ⽂件中。这些⽂件以 Unicode ⽂件⽅式打开。
isqlw -S MyServer -d pubs -E -i input.sql - -FU
B. 使⽤通配符
本例将两个⽂件装载到 SQL 查询分析器中。将使⽤ Windows ⾝份验证连接到本地服务器。
isqlw -d pubs -E -f "c:Program FilesMicrosoft SQL ServerMSSQLInstallinstpubs.sql" "c:Program FilesMicrosoft
SQL ServerMSSQLInstallinstcat.sql"
C. 装载多个⽂件
本例将所有 .sql ⽂件装载到 SQL 查询分析器中。所有连接均使⽤ Windows ⾝份验证并指向本地服务器上的 pubs 数据库。isqlw -d pubs -E -f "c:Program FilesMicrosoft SQL ServerMSSQLInstall*.sql"
D. 使⽤ Unicode ⽂件
本例连接到 MyServer(pubs 数据库),并执⾏ input_file 中的 SQL 语句,执⾏结果存储在 output_file 中。
isqlw -S MyServer -d pubs -U sa -P -i input_file -o output_file