SQL Server 2005使用BCP命令将数据表导出到Excel第一行包括表头

时间:2021-08-27 09:29:39

--首选需要确保已经启用xp_cmdshell --启用命令如下,也可以通过外围应用程序配置器启用

-------------------------------------------------------------------------------

-- 允许配置高级选项 EXEC sp_configure 'show advanced options', 1 GO

-- 重新配置 RECONFIGURE GO

-- 启用xp_cmdshell ,如果要禁用,这将这个命令的1改为0 EXEC sp_configure 'xp_cmdshell', 1 GO

--重新配置 RECONFIGURE GO

-------------------------------------------------------------------------------

--用于测试的数据库:wm20130428--bs_sellerFile:wm20130428数据库中的一张表 --SellerCode,SellerName:bs_sellerFile表中的个字段名

--如果临时表已经存在,则将其删除

if exists(select * from wm20130428..sysobjects where id = object_id('wm20130428..TempTable'))

drop table wm20130428..TempTable

go

--根据需要导出的表的数据创建临时表,并将需要导出的表的所有字段名插入到第一行

select * into wm20130428..temptable from (

select 'SellerCode' as [1],'SellerName' as [2]

Union all

SELECT convert(varchar,SellerCode), convert(varchar,SellerName) FROM wm20130428..bs_sellerFile

) as temptable

--执行BCP命令,将临时表导出到指定的Excel文件中

--EXEC master..xp_cmdshell 'bcp"select SellerCode,SellerName wm20130428..bs_sellerFile" queryout  "C:/Product.xls" -c -q -S"192.168.1.110" -U"sa" -P"sa"'

EXEC master..xp_cmdshell 'BCP "SELECT top 20 * FROM wm20130428..temptable" queryout "c:\currency2.xls" -c -q -S"192.168.1.110" -U"sa" -P"sa"' --删除临时表 drop table wm20130428..TempTable