2024年3月31日发(作者:)
今天在项目中遇到一个问题,需要从SQL Server导出表到Excel,但需要带列名。尝试了
几种方法,并小结如下:
假定表如下:
[sql] view plaincopyprint?
1. USE testDb2
2. GO
3.
4.
5. IF NOT OBJECT_ID('Demo_A') IS NULL
6. DROP TABLE [Demo_A]
7.
8. /****** Object: Table[dbo].[Demo_A]downmoon:****************/
9.
10.
11. CREATE TABLE [dbo].[Demo_A](
12. [ID] int not null,
13. [Name] [Nvarchar](20) NOT NULL
14. )
15.
16. GO
17. INSERT [dbo].[Demo_A]
18. SELECT 1,'郭靖'
19. union ALL SELECT 2,'胡一刀'
20. union ALL SELECT 3,'令狐冲'
21. GO
如果通常的思路,我们可以用BCP,命令如下:
[sql] view plaincopyprint?
1. -- To allow advanced options to be changed.
2. EXEC sp_configure 'show advanced options', 1
3. GO
4. -- To update the currently configured value for advanced options.
5. RECONFIGURE
6. GO
7. -- To enable the feature.
8. EXEC sp_configure 'xp_cmdshell', 1
9. GO
10. -- To update the currently configured value for this feature.
11. RECONFIGURE
12. GO
13.
鱼跃家庭制氧机
14. p_cmdshell 'bcp _A out c: -c -q -S"ap
4Net2012" -U"sa" -P"sA"'
这样得到的xls文件中,Sheet是不带列名的。但可以改进一下,得到如下命令(参考:
/forums/en-US/sqlgetstarted/thread/812b8eec-5b7
7-42a2-bd23-965558ece5b9/):
方法一:使用BCP
为了方便,我创建了一个存储过程:
[sql] view plaincopyprint?
1. /****** SQL Export to xls ***************/
2. /* Example */
3. /*CPP_Export_To_Excel_With_Header 'Testdb2','Demo_A','C:TestExxelWithHeader
.xls'*/
4. /* 2012.5.4 BY tony,邀月,***********/
5. ---- CPP_Export_To_Excel_With_Header 'Testdb2','Demo_A','C:TestExcelWithHea
'
6.
7. Create Procedure CPP_Export_To_Excel_With_Header
8. (
9. @db_name varchar(255),
10. @table_name varchar(255),
11. @file_path varchar(255)
12. )
13. as
14.
15. ----Generate column names as a recordset
16. declare @columns varchar(8000), @sql varchar(8000)
17. declare @HeadersOnlyFile varchar(255),@TableDataWithoutHeaders varchar(255)
18. set @HeadersOnlyFile=replace(cast(newid() as VARCHAR(40)),'-','')+''
19.
20. set @TableDataWithoutHeaders=replace(cast(newid() as VARCHAR(40)),'-','')+'2
.xls'
21. select
22. @columns=coalesce(@columns+',','')+column_name+' as '+column_name
23. from
24. information_s
25. where
26. table_name=@table_name
鱼跃家庭制氧机
发布者:admin,转转请注明出处:http://www.yc00.com/web/1711881721a1971365.html
评论列表(0条)