bcp 实用工具使您得以将 Transact-SQL 语句的结果集复制到数据文件中。该 Transact-SQL 语句可以是任何可返回结果集的有效语句,例如分布式查询或联接多个表的 SELECT 语句。例如,若要将所有作者的姓名从 pubs 数据库的 authors 表复制到 Authors.txt 文件,并按姓氏排序,可在命令提示符下执行以下命令:bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout Authors.txt -c -Sservername -Usa -Ppassword
--------------------------------------
看见了么,
那支蛾子,
正飞向太阳,
那就是我!
--------------------------------------

解决方案 »

  1.   

    1、我想在查询分析器中执行,应该是可以的吧?
    2、我目前正使用的数据库应用程序做的这方面很不理想,我想重新修改一下,可又不知该怎么做。
       我想用ASP.net+C#能帮个忙吗?
      

  2.   

    其实我感觉如何只是想把一些报表从数据库中查询被打印出来的话,那么用VBA是很方便的,也就是在excel中写一个宏,把你要的报表从数据库中查出来,并写入excel表格中,你可以直接把想要的格式都做成宏,这样,你只要每次打开Excel就可以查到你的结果了.我就是这么做的。公司里的人感觉使用很方便。而且他们可以按照自己的格式打印报表。实现起来也很简单!
      

  3.   

    同意楼上的。还有一种方法使用就是ASP中ADO控件的命令对象,然后运行: firetoucher(蹈火者)写的脚本也可以。
      

  4.   

    longji的想法很不错,我试了,可只有做一些简单的查询还可以,当我用一些稍复杂些的交叉表查询语句时却怎么也行不通,?????我用的是office xp.
      

  5.   

    bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout Authors.xsl -c -Sservername -Usa -Ppassword
      

  6.   

    exec master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout 路径\文件名.xls -c -Sservername -Usa -Ppassword'
      

  7.   

    谢谢哈哈!
    但这个方法导出后没有列标题,有办法解决吗?
    另外,我对LONGJI的想法很感兴趣,前面我已经提过了,当做一些简单的查询还可以,当我用一些稍复杂些的交叉表查询语句时却怎么也行不通,?????我用的是office xp.
    下面是原代码:USE pubs
    go
    CREATE TABLE abc
    ( 收费员  varchar(8),
      交费方式    varchar(6),
      金额  int,
      月份 int
    )
    go
    insert into abc values ('张三','现金',200,2)
    insert into abc values ('李四','协议',100,2)
    insert into abc values ('王五','顶帐',300,4)
    insert into abc values ('李四','现金',400,1)
    insert into abc values ('王五','现金',200,12)
    insert into abc values ('张三','现金',100,1)
    insert into abc values ('李四','协议',500,3)
    go
    select a.收费员,isnull(c.现金,0)现金,isnull(c.顶帐,0)顶帐,isnull(c.协议,0)协议,isnull(现金+顶帐+协议,0) as 本月合计,b.全年合计
    into #temp
    from (select distinct 收费员 from abc) a left join
    (select 收费员,
           sum(case 交费方式 when '现金' then 金额 else 0 end ) +
     sum(case 交费方式 when '顶帐' then 金额 else 0 end )+
           sum(case 交费方式 when '协议' then 金额 else 0 end ) as 全年合计
    from abc
    group by 收费员) b on  a.收费员=b.收费员 
    left join 
    (select 收费员,
           sum(case 交费方式 when '现金' then 金额 else 0 end ) as 现金,
           sum(case 交费方式 when '顶帐' then 金额 else 0 end ) as 顶帐,
           sum(case 交费方式 when '协议' then 金额 else 0 end ) as 协议--,
    from abc
    where 月份=2
    group by 收费员) c
    on b.收费员=c.收费员
    select * from #temp
    union 
    select '总计',sum(现金),sum(顶帐),sum(协议),sum(本月合计),sum(全年合计) from #temp
    drop table #temp
      

  8.   

    我想在EXEC master..xp_cmdshell 'bcp "SELECT * from saletesttmp.dbo.test" queryout C:\authors.xls -c -Spmserver -Usa -Psa'中select语句中使用变量,如果可以怎么用?
      

  9.   

    我是直接在前台生成excel 2.0的文件的(不是txt改名的),很方便的。
      

  10.   

    declare @sql varchar(8000)
    set @sql='select * from ltstamp..bin_mst'
    set @sql= ' bcp "'+@sql++'" queryout d:\123.txt -c -Sjoygxd -Usa  -P666666 '
    print @sql
    exec master..xp_cmdshell @sql我试了可以
      

  11.   

    高手很多,有谁帮帮我?http://expert.csdn.net/Expert/topic/1870/1870389.xml?temp=.4596216
      

  12.   

    exec master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout 路径\文件名.xls -c -Sservername -Usa -Ppassword'
    这个方法导出后没有列标题,有办法解决吗?
      

  13.   

    create proc 导出xls文件
    @服务器名 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),@value2=@value2+'',cast(''+a.name+'' as varchar(200))'' from '+@库名+'..syscolumns a,'+@库名+'..sysobjects d where a.id=d.id and d.name='''+@表名+''''exec sp_executesql @temp1,N'@value1 nvarchar(4000) output , @value2 varchar(8000) output',@temp1 output,@temp2 outputselect @temp1=right(@temp1,len(@temp1)-1),@temp2=right(@temp2,len(@temp2)-1)set @temp2='bcp "select '+@temp1+' union all SELECT '+@temp2+' FROM '+@库名+'..'+@表名+'" queryout '+@路径及文件名+' -c -S'+@服务器名+' -U'+@用户名+' -P'+@密码--print @temp2
    EXEC master..xp_cmdshell @temp2
    goexec 导出xls文件 '服务器名','库名','表名','sa','密码','c:\文件.xls'go
    drop proc 导出xls文件
    go