SQL server 向EXCEL导数据,如何将列名也导出?

zeliangzhang19801124 2009-12-29 03:12:42
执行这样的语句:
EXEC master..xp_cmdshell 'bcp CATI.dbo.区号表 out c:\Temp.xls -c -q -S"127.0.0.1" -U"sa" -P""'
没有列名,如何将列名也导出。
...全文
1030 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryanbingo 2010-08-10
  • 打赏
  • 举报
回复
没看懂.....继续看
ShenLiang2025 2010-03-03
  • 打赏
  • 举报
回复
Hi,

Another Way:




0)表T1结构
a int
b int
x char

1)开启Web Assistant Procedures

exec sp_configure 'show advanced options', 1
RECONFIGURE
exec sp_configure 'Web Assistant Procedures', 1
RECONFIGURE

2)执行如下语句

EXEC sp_makewebtask
@outputfile = 'd:\testing.xls',
@query = 'Select TOP 10 * from shenliang1985..T1',
@colheaders =1,
@FixedFont=0,@lastupdated=0,@resultstitle='Querying details'

3)查看生成的EXCEl的

Querying details



Last updated: 2010-03-03 01:02:59.263

a b x
0 0 0
2 5 1
4 10 2
6 15 3
8 20 4
10 25 5
12 30 6
14 35 7
16 40 8
18 45 9

pan_junbiao 2010-02-22
  • 打赏
  • 举报
回复
路过,学习学习!!!!
shuifengcun 2010-02-22
  • 打赏
  • 举报
回复
学习学习学习学习学习学习
Sweet-Tang 2010-02-22
  • 打赏
  • 举报
回复
可以直接用sql的导入导出做
这个最方便
ShenLiang2025 2010-02-21
  • 打赏
  • 举报
回复
Hi,




0)初始表和数据
SELECT * FROM tb22
--结果
001 A
002 B
003 C

1)创建存储过程p_getColumns_inRow
CREATE PROCEDURE p_getColumns_inRow @tabname VARCHAR(MAX)
AS
BEGIN
DECLARE @sql VARCHAR(MAX)
SELECT @sql= ISNULL(@SQL+',','')+'['+CAST(COLID AS VARCHAR(MAX))+']'
FROM SYSCOLUMNS
WHERE ID = OBJECT_ID(@tabname) GROUP BY COLID
DECLARE @STRING VARCHAR(MAX)
SET @STRING='SELECT * FROM (SELECT NAME,COLID FROM SYSCOLUMNS WHERE ID=OBJECT_ID('''+@tabname+'''))A pivot (MAX(NAME) for COLID in('+@sql+'))t'
EXEC(@STRING)
END

2)启用Ad Hoc Distributed Queries
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO

3)取出行列转换后的表tb22的字段到表#testingHow
select *
INTO #testingHow
from OPENROWSET('SQLOLEDB',
'SERVER=PC-20100109AKXW\SHENL;uid=sa;pwd=1qaz2wsx!@12;Database=TestShen','SET FMTONLY OFF;SET NOCOUNT ON exec p_getColumns_inRow ''tb22''')
as a


4)将结果合并成含有字段名和字段值的表tb22_Merger中
SELECT * INTO tb22_Merger
FROM #testingHow
UNION ALL
SELECT * FROM tb22

5)整合
SELECT * FROM tb22_Merge

--结果
costNo costName
001 A
002 B
003 C

6)测试
6.1)CMD模式

bcp TestShen.dbo.tb22_Merger out c:\Temp.xls -c -q -S PC-20100109AKXW\SHENL -U sa -P 1qaz2wsx!@12

6.2)xp_cmdshell模式

--如果没有启用xp_cmdshell,先启动之
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

--xp_cmdshell模式
EXEC master..xp_cmdshell 'bcp TestShen.dbo.tb22_Merger out c:\Temp.xls -c -q -S PC-20100109AKXW\SHENL -U sa -P 1qaz2wsx!@12'

7)删除表tb22_Merger
DROP TABLE tb22_Merger


ShenLiang2025 2010-02-21
  • 打赏
  • 举报
回复
Hi,

Tasks → Export Data
dragoo1 2010-02-05
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
曾经的拥有 2010-01-17
  • 打赏
  • 举报
回复
过来学习一下
  • 打赏
  • 举报
回复
自己顶一下。
claro 2010-01-03
  • 打赏
  • 举报
回复
如果是查询结果自动保存文档,不用看。
如果是复制结果 ,看文档
http://blog.csdn.net/claro/archive/2008/11/13/3292508.aspx
  • 打赏
  • 举报
回复
自己顶一下。
  • 打赏
  • 举报
回复
对我来说不太实用。
  • 打赏
  • 举报
回复
1楼的有下列错误:
服务器: 消息 156,级别 15,状态 1,行 2
在关键字 'IF' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 6
第 6 行: 'GO' 附近有语法错误。
服务器: 消息 111,级别 15,状态 1,行 6
'CREATE PROCEDURE' 必须是批查询中的第一条语句。
服务器: 消息 137,级别 15,状态 1,行 10
必须声明变量 '@fname'。
服务器: 消息 137,级别 15,状态 1,行 11
必须声明变量 '@fname'。
服务器: 消息 137,级别 15,状态 1,行 11
必须声明变量 '@sheetname'。
服务器: 消息 137,级别 15,状态 1,行 12
必须声明变量 '@fname'。
服务器: 消息 137,级别 15,状态 1,行 12
必须声明变量 '@path'。
服务器: 消息 137,级别 15,状态 1,行 13
必须声明变量 '@path'。
服务器: 消息 137,级别 15,状态 1,行 14
必须声明变量 '@path'。
服务器: 消息 137,级别 15,状态 1,行 17
必须声明变量 '@path'。
服务器: 消息 137,级别 15,状态 1,行 28
必须声明变量 '@sqlstr'。
服务器: 消息 137,级别 15,状态 1,行 45
必须声明变量 '@sheetname'。
服务器: 消息 137,级别 15,状态 1,行 51
必须声明变量 '@path'。
服务器: 消息 170,级别 15,状态 1,行 54
第 54 行: ':' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 54
第 54 行: 'lbexit' 附近有语法错误。
Mr_Nice 2009-12-31
  • 打赏
  • 举报
回复
路过,学习!
w_xxxbbb 2009-12-31
  • 打赏
  • 举报
回复
学习。
dawugui 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zeliangzhang19801124 的回复:]
自己顶一下。
[/Quote]
目前邹老大的那个存储过程可用.
  • 打赏
  • 举报
回复
bcp 即可
  • 打赏
  • 举报
回复
自己顶一下。
wzy_love_sly 2009-12-29
  • 打赏
  • 举报
回复
老问题,不行就用union all吧,bcp用语句的写法
select '列名1' as a,'列名2' as b
union all
select a,b from 表
加载更多回复(2)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧