以文本方式查看主题 - 昂捷论坛 (http://enjoyit.com.cn/bbs/index.asp) -- □-系统配置管理类 (http://enjoyit.com.cn/bbs/list.asp?boardid=34) ---- [原创]如何将sql语句执行结果变成文本文档 (http://enjoyit.com.cn/bbs/dispbbs.asp?boardid=34&id=9339) |
-- 作者:prcak47 -- 发布时间:2016/1/23 14:54:14 -- [原创]如何将sql语句执行结果变成文本文档 如何将sql语句执行结果变成文本文档
可以在系统里面运行dos命令,或者用bat批处理,将sql的执行结果变成文本文档 具体使用语句sqlcmd命令,命令格式如下: sqlcmd
[{ { -U login_id [ -P password ] } | –E trusted connection }] [ -N encrypt connection ][ -C trust the server certificate ] [ -z new password ] [ -Z new password and exit] [ -S [protocol:]server[\\instance_name][,port] ] [ -H wksta_name ] [ -d db_name ] [ -l login time_out ] [ -A dedicated admin connection] [ -i input_file ] [ -o output_file ] [ -f < codepage > | i: < codepage > [ < , o: < codepage > ] ] [ -u unicode output] [ -r [ 0 | 1 ] msgs to stderr ] [ -R use client regional settings] [ -q "cmdline query" ] [ -Q "cmdline query" and exit] [ -e echo input ] [ -t query time_out ] [ -I enable Quoted Identifiers ] [ -v var = "value"...] [ -x disable variable substitution ] [ -h headers ][ -s col_separator ] [ -w column_width ] [ -W remove trailing spaces ] [ -k [ 1 | 2 ] remove[replace] control characters ] [ -y display_width ] [-Y display_width ] [ -b on error batch abort] [ -V severitylevel ] [ -m error_level ] [ -a packet_size ][ -c cmd_end ] [ -L [ c ] list servers[clean output] ] [ -p [ 1 ] print statistics[colon format]] [ -X [ 1 ] ] disable commands, startup script, enviroment variables [and exit] [ -? show syntax summary] -U login_id 是用户登录 ID。 -P password 用户指定的密码。 -E trusted connection 使用信任连接而不是用户名和密码登录 -N encrypt connection 此开关供客户端用于请求加密连接 -C trust the server certificate 该开关供客户端用于将其配置为隐式表示信任服务器证书且无需验证。 -z new password 更改密码: -Z new password and exit 更改密码并退出: -S [protocol:]server[\\instance_name][,port] 指定要连接的 SQL Server 实例。 -H wksta_name 工作站的名称。 -d db_name 启动 sqlcmd 时发出一个 USE db_name 语句。 -l logintime_out 指定在您尝试连接到服务器时 OLE DB 访问接口的 sqlcmd 登录超时时间(以秒计)。 -A dedicated admin connection 使用专用管理员连接 (DAC) 登录到 SQL Server。 -i input_file[,input_file2...] 标识包含一批 SQL 语句或存储过程的文件。 -o output_file 标识从 sqlcmd 接收输出的文件。 -u unicode output 指定无论 input_file 为何种格式,output_file 都以 Unicode 格式进行存储。 -r[ 0 | 1] msgs to stderr 将错误消息输出重定向到屏幕 (stderr)。 -R use client regional settings 促使 sqlcmd 根据客户端的区域设置本地化从 SQL Server 中检索到的数字、货币、日期和时间列。 -q" cmdline query " 启动 sqlcmd 时执行查询,但是在查询结束运行时不退出 sqlcmd。 -Q"cmdline query " and exit 在 sqlcmd 启动时执行查询,随后立即退出 sqlcmd。 -e echo input 将输入脚本写入标准输出设备 (stdout)。 -I enable Quoted Identifiers 将 SET QUOTED_IDENTIFIER 连接选项设置为 ON。 -t querytime_out 指定命令(或 SQL 语句)超时的时间。 -x disable variable substitution 导致 sqlcmd 忽略脚本变量。 -h headers 指定要在列标题之间输出的行数。默认为每一组查询结果输出一次标题。使用 -1 指定不能输出标题。 -s col_separator 指定列分隔符字符。默认为空格。 -w column_width 指定用于输出的屏幕宽度。 -W remove trailing spaces 此选项删除列的尾随空格。 -k [ 1 | 2 ] remove[replace] control characters 删除输出中的所有控制字符,例如制表符和换行符。 -y display_width 设置 sqlcmd 脚本变量 SQLCMDMAXFIXEDTYPEWIDTH。 -Y display_width 设置 sqlcmd 脚本变量 SQLCMDMAXVARTYPEWIDTH。 -b on error batch abort 指定发生错误时,sqlcmd 退出并返回一个 DOS ERRORLEVEL 值。 -V severitylevel 控制用于设置 ERRORLEVEL 变量的安全级别。 -m error_level 控制将哪些错误消息发送到 stdout。 -a packet_size 需要不同大小的数据包。 -c cmd_end 指定批处理终止符。 -L [ c ] list servers[clean output] 列出在本地配置的服务器和在网络上广播的服务器的名称。 -p [ 1 ] print statistics[colon format] 输出每个结果集的性能统计信息。 -X [ 1 ] disable commands, startup script, enviroment variables [and exit] 从批处理文件执行 sqlcmd 时,将禁用可能危及系统安全的命令。
具体实现如下: 首先做一个文本文档sql.txt,放入需要执行的语句 set nocount on
select c_userno,c_name,c_type,c_status,c_phone from tb_user
再做一个批处理文件sql.bat sqlcmd -S 127.0.0.1 -d enjoy_shq -U sa -P 123456 -i D:\\sql.txt -o D:\\result.txt -u -h -1
执行bat文件,就可以将sql执行结果输出到文本文档result.txt
具体参数解释: -S 127.0.0.1 数据库地址 -d enjoy_shq 数据库名称 -U sa 登录用户名 -P ****** 登录密码 -i D:\\sql.txt 执行脚本 -o D:\\result.txt 输出文件名 -u 以Unicode 格式进行存储 -h -1 不输出标题
语句中set nocount on 控制是否输出执行结果的行数
如果想要带参数 语句可以写为 set nocount on select c_userno,c_name,c_type,c_status,c_phone from tb_user where c_userno = $(userno)
执行的批处理写为 sqlcmd -S 127.0.0.1 -d enjoy_shq -U sa -P 123456 -i D:\\sql.txt -o D:\\result.txt -u -h -1 -v userno = "0000"
https://msdn.microsoft.com/zh-cn/library/ms162773.aspx
[此贴子已经被作者于2016/1/23 15:26:22编辑过]
|
-- 作者:prcak47 -- 发布时间:2016/2/19 17:42:40 -- 以上语句在sql2008测试通过,sql2000的话,可以在cmd下运行下面语句
bcp "SELECT c_userno,c_name,c_type,c_status,c_phone FROM enjoy_shq.dbo.tb_user" queryout D:\\result.txt -c -t , -S 127.0.0.1 -U sa -P 123456"
|