概述
今天想试着用批处理文件调用sql语句,在网上查了一下,方法都是将要执行的sql放在sql文件中,然后使用命令执行该语句,主要有三个命令:
1. osql
2. isql
3. sqlcmd
osql -S xxxxx -d xxxxx -U xxxxx -P xxxxx -i xxxxx
osql
输入Transact-SQL语句、系统过程和脚本文件,通过ODBC与服务器通讯
-L 列出在本地配置的服务器和在网络上广播的服务器的名称
-U login_id 用户登录ID(区分大小写)
-P password 用户指定密码,如果未使用-P选项,osql将提示输入密码,如果在命令提示符的末尾使用-P选项而不带密码,osql使用默认密码(NULL)
-S server 指定要连接的Microsoft SQL Server实例,如果未指定服务器,osql将连接到本地计算机上的SQL Server默认实例,从网络上的远程计算机执行osql时,此选项是必须的
-H wksta_name 工作站名称,如果未指定此选项,则采用当前计算机名称
-d db_name 启动osql时发出一个USE db_name语句
-l time_out 指定登陆超时之前的秒数,登录到osql默认超时为8秒
-t time_out 指定命令超时之前的秒数,未指定则不会超时
-h headers 要在列标题之间打印的行数,默认为每一查询结果集打印一次标题,-1指定不打印标题,如果使用-1,则在参数和设置之间一定不能有空格(-h-1)
-s col_seqarator 指定列分隔符字符,默认为空格,如果是对操作系统有特殊含义的字符,则将该字符用双引号引起来
-w column_width 允许用户设置屏幕输出的宽度,默认为80字符
-a packet_size 请求不同大小的数据包
-e 回显输入
-I 设置QUETED_IDENTIFIER连接选项为开启
-D data_source-name 连接到用Microsoft SQL Server的ODBC驱动程序定义的ODBC数据源
-c cmd_end 指定命令终止符,默认情况下,通过单独在一行中输入GO来终止命令并将其发送到SQL Server2000
-q "query" 启动osql时执行查询,但是在查询完成时不退出osql,如果从批处理文件中发出查询,使用%variables或者环境%variables%
如:SET table = xxxx osql /q “select * from %table%”
-Q "query" 执行查询并立即退出osql,将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来
-n 从输入行中删除编号和提示符
-m error_level 自定义错误信息的显示,显示指定的或该更高严重级别错误的消息数,状态和错误级别
-r {0|1} 将消息输出重定向到屏幕(stderr),如果未指定参数或者指定参数为0,则仅重定向严重级别为17或更高的错误信息,如果指定参数为1,则将重定向所有消息输出
-i 标识包含一批SQL语句或存储过程的文件(等同于<)
-o 标识从osql接收输出的文件(等同于>)
-p 打印性能统计
-b 指定发生错误时osql退出并返回一个DOS ERRORLEVEL值
osql和isql大部分都是相同的,都支持输入脚本,输出脚本,具有相同的参数。osql没有接口,它只会接受一个输入的命令行,或者保存的脚本。尽管存在这个缺陷,但是有时isql和query analyzer不能完成需要的工作。查询分析器不包含微软桌面引擎,当需要开发一个MSDE的应用或者需要做MSDE管理,OSQL实用程序是唯一包含的工具。ISQL和OSQL之间的另一个关键区别是每个工具建立的基础库。ISQL实在DB库的基础上开发的,OSQL在ODBC基础上开发的,DB库使用SQL6.5标准,这意味着isql或db库上开发的任何应用程序不支持新的SQL 2000的功能
sqlcmd用在sql 2005或更高版本,因为性能更好;osql 主要用于sql 7.0和sql 2000;isql主要用于sql 6.5及更早的版本!
最后
以上就是勤恳黑米为你收集整理的bat执行sql语句的全部内容,希望文章能够帮你解决bat执行sql语句所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复