SqlServer之xp_cmdshell_使用以及配置(转)
然后再输出excel
输出excel语法简介:
exec
master..xp_cmdshell 'bcp
[数据库名称].[架构名].[表名] out [excel存放位置全路径] -c -q
-S"服务器Ip" -U "sql用户名" -P "sql密码"'
---例1:
exec
master..xp_cmdshell 'bcp test.dbo.tableName out d:test.xls -c -q -S"." -U "sa" -P "erp"'
---将数据库test中tablName输出值d盘test.xls文件
---服务器地址.
---sql账户sa
---sql密码erp
--------------------------------------------
例2: 根据动态文件名输出excel的方法
declare @name varchar(30) ---动态文件名
set @name ='d:test123.xlsx'
exec
('master..xp_cmdshell ''bcp test.dbo.tableName out '+@name+' -c -q -S"." -U "sa" -P "erp"''') ---拼接操作语句,并采用exec执行
注意事项:
*1 使用脚本输出的excel ,无表头
2
可动态文件名和动态sa账户密码生成相关信息
3
如果输出sql脚本的数据至excel,我们需先将sql脚本生成的数据缓存至表中,然后输出表数据至excel
如果是表与表之间的数据导入,可用 -N, 或者 -w, 而不要用 -c
用-c的话, 如果导出的某个列中的数据中包含分隔符, 则会导致你 bcp
导入的时候失败
-N 或者 -w 不会有这个问题
下文将分享使用sql脚本输出excel的方法
此脚本可以应用于 表或视图生成excel的方法,
若需使用sql脚本输出excel数据,我们可将sql脚本生成视图或临时表,
2、SQLState = 22018, NativeError = 0
Error = [Microsoft][SQL Native Client]对于造型说明无效的字符值
摘要:
转自:http://www.maomao365.com/?p=6683
--执行想要的xp_cmdshell语句
Exec xp_cmdshell 'query user'
GO
然后在配置管理器(configuration manager)里面的SQL
server2005服务里打开,看到登陆内置账号为Network service,
改成local system问题解决。
新建查询->输入SQL查询语句,执行得到需要的结果,在查询结果栏点击鼠标右键->将结果另存为
导出文件(*csv)即可导出为 逗号分割的excel文件。
此时,由于没有分列,所以应先新建一个空白的Excel文档,然后选择打开刚才保存的的文件;
然后它会出现文本导入步骤,选中分割符号,下一步,选中
逗号,预览区域正常,然后在下一步和完成,保存为excel文件
- 在SQL Server中提供了导入导出的界面操作。
- 在界面操作中又分【复制一个或多个表或视图的数据】和【编写查询以指定要传输的数据】两种模式,第一种是直接对表、视图进行全部字段、记录进行导出,而第二种就是可以通过SQL语句来控制导出导入的字段和行。
- 使用 简单但有用的SQL脚本 中的【表复制】这里面的方法。
再一种就是在命令行中使用bcp命令来导入导出数据,需要特别说明的是,这是对大数据量导入导出就好的办法。
--整个表导出(out)
bcp 数据库名.dbo.表名 out c:currency.txt -S"数据库实例" -U"用户" -P"密码" -c--使用SQL语句导出(queryout)
bcp "select * from 数据库名.dbo.表名" queryout c:currency.txt -S 数据库实例 -U"用户" -P"密码" -c--设置字段分隔符和行分隔符(-c -t"," -r"n"),不想输入字段类型等请配合-c一起使用
bcp "select * from 数据库名.dbo.表名" queryout c:currency.txt -S 数据库实例 -U"用户" -P"密码" -c -t"," -r"n"--指定每批导入数据的行数、指定服务器发出或接收的每个网络数据包的字节数(-k -b5000 -a65535)
bcp "select * from 数据库名.dbo.表名" queryout c:currency.txt -S 数据库实例 -U"用户" -P"密码" -c -t"," -r"n" -k -b5000-a65535--在查询分析器上执行(EXEC master..xp_cmdshell)
EXEC master..xp_cmdshell 'bcp "select * from 数据库名.dbo.表名" queryout c:currency.txt -S 数据库实例 -U"用户" -P"密码" -c'--把SQL语句生成一个.sql文件,然后调用
--注:路径的文件夹名称中间不能有空格
exec master..xp_cmdshell 'osql -S 数据库实例 -U 用户 -P 密码 -i C:cmdshellTest.sql'--将数据导入到currency表中
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 in c:currency.txt -c -T'
--导入数据也同样可以使用-F和-L选项来选择导入数据的记录行。
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 in c:currency.txt -c -F 10 -L 13 -T'