高分相送!!!!用BCP导出为Excel文件,怎样带表格字段?高分相送!!!!

csqiu 2003-09-04 03:07:51
我用如下语句在SQL Server上执行:
exec master..xp_cmdshell 'bcp "select * from Production..Affirm" queryout c:\InventoryEBIC.xls -c -q -Usa -P'
Excel文件能生成,可是只要是时间字段就成00:00:00,不能正确导出而且所要的表的字段名称也未能导出。紧急求救!!!!
...全文
108 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
CrazyFor 2003-09-05
  • 打赏
  • 举报
回复
TRY:
exec master..xp_cmdshell 'bcp "select *,cast(日期时间字段 as varchar(20))as newDate from Production..Affirm" queryout c:\InventoryEBIC.xls -c -q -Usa -P'
helodd 2003-09-05
  • 打赏
  • 举报
回复
up
zyhlhx 2003-09-05
  • 打赏
  • 举报
回复
如果 bcp 能够 做成 excel 格式文件,那么 bcp 的功能也太NB 了把。
你的这个想法就不能做到
zyhlhx 2003-09-05
  • 打赏
  • 举报
回复
BCP 导出的不可能是 excel 格式文件,尽管你取这个名字!
csqiu 2003-09-05
  • 打赏
  • 举报
回复
我按照大力的作了,在表中可以看到字段名在表中的第一项,可是导到Excel文件后总打不开,错误提示:“文件格式 SYLK:无效”,我在表中把字段名的那一项删除则没有这个错误提示,且Excel文件也能打开,请问怎样解决?????着急!!!!!!
happydreamer 2003-09-05
  • 打赏
  • 举报
回复
试了一下
cast(日期时间字段 as varchar(20))
转换后excel里变成这样的格式12 7 2001 12:00AM

如果你需要和sql里一样的格式2001-12-7 00:00:00.000
这样做
exec master..xp_cmdshell 'bcp "select *,convert(varchar(10),日期时间字段,120)+'' ''+convert(varchar(12),日期时间字段 ,114)as newDate from Production..Affirm" queryout c:\InventoryEBIC.xls -c -q -Usa -P'

直接
exec master..xp_cmdshell 'bcp "select *,convert(varchar(20),日期时间字段,120)as newDate from Production..Affirm" queryout c:\InventoryEBIC.xls -c -q -Usa -P'
得到的结果是 2001-12-7 0:00





happydreamer 2003-09-05
  • 打赏
  • 举报
回复
试了一下
cast(日期时间字段 as varchar(20))
转换后excel里变成这样的格式12 7 2001 12:00AM

如果你需要和sql里一样的格式2001-12-7 00:00:00.000
这样做
exec master..xp_cmdshell 'bcp "select *,convert(varchar(10),日期时间字段,120)+'' ''+convert(varchar(12),日期时间字段 ,114)as newDate from Production..Affirm" queryout c:\InventoryEBIC.xls -c -q -Usa -P'

直接
exec master..xp_cmdshell 'bcp "select *,convert(varchar(20),日期时间字段,120)as newDate from Production..Affirm" queryout c:\InventoryEBIC.xls -c -q -Usa -P'
得到的结果是 2001-12-7 0:00





pengdali 2003-09-05
  • 打赏
  • 举报
回复
时间你可以先转成字符再导出如:



select CONVERT(varchar(10), getDate(),120) --不要时间2002-1-1
select convert(char(8),getdate(),112) ----20020101
select convert(char(8),getdate(),108) ---06:05:05
pengdali 2003-09-05
  • 打赏
  • 举报
回复
CREATE proc out2xls
@服务器名 varchar(255),
@库名 varchar(255),
@表名 varchar(255),
@用户名 varchar(100),
@密码 varchar(100),
@路径及文件名 varchar(255)
as
declare @temp1 nvarchar(4000),@temp2 varchar(8000)

set @temp1='select @value1='''',@value2='''' select @value1=@value1+'',''''''+a.name+''''+char(39)+'' [''+a.name+'']'',@value2=@value2+'',cast(''+''[''+a.name+'']''+ '' as varchar(200))'' from '+@库名+'..syscolumns a,'+@库名+'..sysobjects d where a.id=d.id and d.name='''+@表名+''''+' order by a.colorder'


exec sp_executesql @temp1,N'@value1 nvarchar(4000) output , @value2 varchar(8000) output',@temp1 output,@temp2 output

select @temp1=right(@temp1,len(@temp1)-1),@temp2=right(@temp2,len(@temp2)-1)

exec('select * into '+@库名+'.dbo.中间表 from (select '+ @temp1+' union all SELECT '+@temp2+' FROM '+@库名+'..'+@表名+') tem3')


set @temp2='bcp '+@库名+'.dbo.中间表 out '+@路径及文件名+' -c -S'+@服务器名+' -U'+@用户名+' -P'+@密码

EXEC master..xp_cmdshell @temp2
exec('drop table '+@库名+'.dbo.中间表')
GO
exec out2xls 'daliserver','pubs','jobs','sa','element','c:\a.txt'
go
drop proc out2xls

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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