sql用bcp命令输出的txt或excel文件

zhangjiang264 2009-08-26 09:57:28
经过请教高手和网上找资料,
终于把查询结果输出到txt文件里面了。
请教另一个问题。
1.txt文件里面输出来的字段没有对齐。这个有什么办法解决吗?如果没有的话,请帮助解决一下第二个问题。
2.有同事提醒可以输出到excel里面去。格式(比如对齐)倒没有什么问题。
但是还有一个要求是每次输出的时候第一行要有列名或别名。
请问这个该怎么加啊?
现在excel里面只有记录!
求助高手&谢谢
...全文
433 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
wujinjian2008n 2009-08-26
  • 打赏
  • 举报
回复
怎么把列名也导出去呢?????
xiequan2 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zhangjiang264 的回复:]
哎,用excel文件被否决了。太可怜了,白兴奋了。
还是得用txt文件来输出。
看来只能调整输出时的格式了。
有没有什么好办法来指定输出时,各个字段的最大长度啊?
及每个字段输出时必须要满足这个最大长度,不够的话用空格补齐?
望高手指点。
谢谢

[/Quote]

select (right(REPLICATE(' ',10)+ltrim(列名1),10)),(right(REPLICATE(' ',10)+ltrim(列名1),10)) from dbname..tablename

--或者

select cast(列名1 as char(10)), cast(列名1 as char(10)) from dbname..tablename
zhangjiang264 2009-08-26
  • 打赏
  • 举报
回复
哎,用excel文件被否决了。太可怜了,白兴奋了。
还是得用txt文件来输出。
看来只能调整输出时的格式了。
有没有什么好办法来指定输出时,各个字段的最大长度啊?
及每个字段输出时必须要满足这个最大长度,不够的话用空格补齐?
望高手指点。
谢谢
zhangjiang264 2009-08-26
  • 打赏
  • 举报
回复
测试通过,呵呵谢谢
zhangjiang264 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 oflying907 的回复:]
SQL codeEXEC master..xp_cmdshell'bcp "Select 列名1,列名2,... union all select * from dbname..tablename" queryout c:\DT.xls -c -Sservername -Usa -Ppassword'
[/Quote]
貌似这个办法不错,先去试一下了。
谢谢
oflying907 2009-08-26
  • 打赏
  • 举报
回复

EXEC master..xp_cmdshell 'bcp "Select 列名1,列名2,... union all select * from dbname..tablename" queryout c:\DT.xls -c -Sservername -Usa -Ppassword'
zhangjiang264 2009-08-26
  • 打赏
  • 举报
回复
大家可以明确地回复一下,这个能不能实现。
输出地excel首行能加列名或者别名吗?
谢谢
--小F-- 2009-08-26
  • 打赏
  • 举报
回复
/******* 导出到excel */
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'

/*********** 导入Excel */
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

/*动态文件名
declare @fn varchar(20),@s varchar(1000)
set @fn = 'c:\test.xls'
set @s ='''Microsoft.Jet.OLEDB.4.0'',
''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0'''
set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$'
exec(@s)
*/
--小F-- 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhangjiang264 的回复:]
sf:
可以再系统存储过程(xp_cmdshell)参数里设置吗?
[/Quote]
不能吧 这个得问下高手 我记得不能
--小F-- 2009-08-26
  • 打赏
  • 举报
回复
第一个好象可以变通的来做 先导到EXCEL里面排下序
zhangjiang264 2009-08-26
  • 打赏
  • 举报
回复
好快啊。谢谢
SQL77 2009-08-26
  • 打赏
  • 举报
回复
导出到excel 
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'
--导出文本文件
EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword'
zhangjiang264 2009-08-26
  • 打赏
  • 举报
回复
sf:
可以再系统存储过程(xp_cmdshell)参数里设置吗?
--小F-- 2009-08-26
  • 打赏
  • 举报
回复
是每次输出的时候第一行要有列名或别名
这个好象不能实现 具体情况等小梁来说明
SQL77 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 zhangjiang264 的回复:]
和大家分享经验。
这样就可以处理NULL值了。
convert(char(10),isnull(字段A,space(10)))

[/Quote]
对哦,这样子就可以加上10个空格了
zhangjiang264 2009-08-26
  • 打赏
  • 举报
回复
和大家分享经验。
这样就可以处理NULL值了。
convert(char(10),isnull(字段A,space(10)))
zhangjiang264 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 sql77 的回复:]
引用 24 楼 zhangjiang264 的回复:
引用 23 楼 sql77 的回复:
引用 22 楼 zhangjiang264 的回复:
对不起
是显示
) as char(50)),

SQL codeCONVERT(VARCHAR(10),ISNULL(COL1,''))

应该是用char(10)我想要的是定长显示某列。
用这个以后CONVERT(char(10),ISNULL(COL1,'')),
那些NULL值显示的不是空格而是))字段名,
查询的时候是好的,就是输出地txt有问题,而且少了一列。
这是怎么回事?

可能在执行EXEC时的出现了问题
[/Quote]
我定义的执行命令的变量时
varchar(8000)
难道是不够大吗?
可这已经是最大的了吧。
SQL77 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 zhangjiang264 的回复:]
引用 23 楼 sql77 的回复:
引用 22 楼 zhangjiang264 的回复:
对不起
是显示
) as char(50)),

SQL codeCONVERT(VARCHAR(10),ISNULL(COL1,''))

应该是用char(10)我想要的是定长显示某列。
用这个以后CONVERT(char(10),ISNULL(COL1,'')),
那些NULL值显示的不是空格而是))字段名,
查询的时候是好的,就是输出地txt有问题,而且少了一列。
这是怎么回事?
[/Quote]
可能在执行EXEC时的出现了问题
zhangjiang264 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 sql77 的回复:]
引用 22 楼 zhangjiang264 的回复:
对不起
是显示
) as char(50)),

SQL codeCONVERT(VARCHAR(10),ISNULL(COL1,''))
[/Quote]
应该是用char(10)我想要的是定长显示某列。
用这个以后CONVERT(char(10),ISNULL(COL1,'')),
那些NULL值显示的不是空格而是))字段名,
查询的时候是好的,就是输出地txt有问题,而且少了一列。
这是怎么回事?
加载更多回复(8)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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