在通信行业里,平时都会接触到很多报表,不管是从网管的数据,还是从专业的优化平台,要处理各类的报表数据,所有做个定时报表输出,直接从数据库生成,能减轻不少重复的工作量,也减轻工作压力,那有什么好的方法,网上各种的导成EXCEL方法,都太复杂了,MSSQL可以直接生成TXT,CSV,而且CSV也相当于是EXCEL,对于一个数据经常导来导去的家伙来说,CSV是再好不过了,这个问题,其实是个老生常谈的问题,百度上很多解决方案,这里总结下几种常用的方法:
1)利用工具,这里就直接介绍,我自个常用的数据库工具 Aqua Data Studio,这个工具集成了很多种数据库的,非常好用,而且很亲和力,这个工具导出数据,可以把查询的数据,直接保存数据成文本,或者EXCEL,但是这个有个缺点,不好实现自动化,因此看下一个方法
2)直接使用SQL Server命令行工具,来直接上干货:
先看看,这个命令的各个参数吧:
C:Documents and SettingsAdministrator>sqlcmd -?Microsoft (R) SQL Server 命令行工具版本 10.50.1600.1 NT INTEL X86版权所有 (c) Microsoft Corporation。保留所有权利。用法: Sqlcmd [-U 登录 ID] [-P 密码][-S 服务器] [-H 主机名] [-E 可信连接][-N 加密连接][-C 信任服务器证书][-d 使用数据库名称] [-l 登录超时值] [-t 查询超时值][-h 标题] [-s 列分隔符] [-w 屏幕宽度][-a 数据包大小] [-e 回显输入] [-I 允许带引号的标识符][-c 命令结束] [-L[c] 列出服务器[清除输出]][-q "命令行查询"] [-Q "命令行查询" 并退出][-m 错误级别] [-V 严重级别] [-W 删除尾随空格][-u unicode 输出] [-r[0|1] 发送到 stderr 的消息][-i 输入文件] [-o 输出文件] [-z 新密码][-f | i:[,o:]] [-Z 新建密码并退出][-k[1|2] 删除[替换]控制字符][-y 可变长度类型显示宽度][-Y 固定长度类型显示宽度][-p[1] 打印统计信息[冒号格式]][-R 使用客户端区域设置][-b 出错时中止批处理][-v 变量 = "值"...] [-A 专用管理连接][-X[1] 禁用命令、启动脚本、环境变量[并退出]][-x 禁用变量替换][-? 显示语法摘要]
使用方法:
sqlcmd -S"127.0.0.1" -U "sa" -P "sa" -d "bigData" -Q "SELECT * FROM [bigData].[dbo].[list]" -o d:aaa.txt
或者把脚本统一到一个文件里
sqlcmd -S "127.0.0.1" -U "sa" -P "sa" -d "bigData" -i "C:甥敳獲AdministratorDesktopest.sql" -o d:a.txt
如上,其中C:甥敳獲AdministratorDesktop1.sql即存放SQL语句的文件,bigData是库名,d:a.txt是结果存放文件。在语句中加入-s,可以更改列分隔符字符,默认时为空格。
例:
sqlcmd -S"127.0.0.1" -U"sa" -P"sa" -d"bigData" -Q"SELECT * FROM [bigData].[dbo].[list]" -s