1.1. bcp的主要参数介绍

bcp共有四个动作可以选择。

(1) 导入。

这个动作使用in命令完成,后面跟需要导入的文件名。

(2) 导出。

这个动作使用out命令完成,后面跟需要导出的文件名。

(3) 使用SQL语句导出。

这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。

(4) 导出格式文件。

这个动作使用format命令完成,后而跟格式文件名。

下面介绍一些常用的选项:

-f format_file

format_file表示格式文件名。这个选项依赖于上述的动作,如果使用的是in或out,format_file表示已经存在的格式文件,如果使用的是format则表示是要生成的格式文件。

-x

这个选项要和-f format_file配合使用,以便生成xml格式的格式文件。

-F first_row

指定从被导出表的哪一行导出,或从被导入文件的哪一行导入。

-L last_row

指定被导出表要导到哪一行结束,或从被导入文件导数据时,导到哪一行结束。

-c

使用char类型做为存储类型,没有前缀且以"\t"做为字段分割符,以"\n"做为行分割符。

-w

和-c类似,只是当使用Unicode字符集拷贝数据时使用,且以nchar做为存储类型。

-t field_term

指定字符分割符,默认是"\t"。

-r row_term

指定行分割符,默认是"\n"。

-S server_name[ \instance_name]

指定要连接的SQL Server服务器的实例,如果未指定此选项,bcp连接本机的SQL Server默认实例。如果要连接某台机器上的默认实例,只需要指定机器名即可。

-U login_id

指定连接SQL Sever的用户名。

-P password

指定连接SQL Server的用户名密码。

-T

指定bcp使用信任连接登录SQL Server。如果未指定-T,必须指定-U和-P。

-k
 
2.SQL

-- 这里是创建一个临时表
                    SELECT  *
                    INTO    TempCOrder
                    FROM    ( SELECT    '账号' a , '签约银行' b ,'子账号' c , '类型' d , '金额' e ,  '出入时间' f   --这里是因为导出的时候Excel表没有列,这里采用union all为表增加一个列标题
                              UNION ALL
                              SELECT    u.userName ,
                                        CASE c.ConBankType
                                          WHEN '2' THEN '农业银行'
                                          WHEN '1' THEN '华夏银行'
                                        END back ,
                                        c.subuser ,
                                        CASE f.reason
                                          WHEN '3' THEN '库存结算'
                                          WHEN '4' THEN '银行入金'
                                          WHEN '5' THEN '银行出金'
                                          WHEN '6' THEN '手工调账'
                                        END reason ,
                                        CONVERT(VARCHAR(24), f.changevalue) ,
                                        CONVERT(VARCHAR(24), f.opertime, 121)
                              FROM      dbo.Fund_Change f
                                        INNER JOIN dbo.Trade_User u ON f.userId = u.userId
                                        INNER JOIN dbo.Trade_FundInfo c ON f.userId = c.userId
                              WHERE     u.[state] = '1'
                                        AND c.[state] = '2'
                                        AND f.opertime BETWEEN @BeginDate
                                                       AND    @EndDate
                                                              + @AgentId
                                        AND f.reason IN ( '3', '4', '5', '6' )
                              UNION ALL  --数据查询
                              SELECT    '总计:' ,
                                        '' ,
                                        '' ,
                                        '' ,
                                        CONVERT(VARCHAR(24), SUM(f.changevalue)) changevalue ,
                                        ''
                              FROM      dbo.Fund_Change f
                                        INNER JOIN dbo.Trade_User u ON f.userId = u.userId
                                        INNER JOIN dbo.Trade_FundInfo c ON f.userId = c.userId
                              WHERE     u.[state] = '1'
                                        AND c.[state] = '2'
                                        AND f.opertime BETWEEN @BeginDate
                                                       AND    @EndDate
                                                              + @AgentId
                                        AND f.reason IN ( '3', '4', '5', '6' ) --为表最后增加一个合计
                            ) a

--3.用BCP命令导出到指定的文件夹下                 
                    SET @sqlCmd = 'bcp JinTong_JYRJ.dbo.TempCOrder  out F:\' + @ReportFile + ' -c -U"jintongjy" -P"jtjiaoyirj!"' ;
                    EXEC master..xp_cmdshell @sqlCmd ;
                    IF EXISTS ( SELECT  *
                                FROM    sys.tables
                                WHERE   name = 'TempCOrder' )
                        DROP TABLE TempCOrder ;
                    SET @Result = '资金变动报表查询成功' ;
                    RETURN 0 ;
                END TRY
                BEGIN CATCH
                    SET @Result = '资金变动报表查询失败' ;
                    IF EXISTS ( SELECT  *
                                FROM    sys.tables
                                WHERE   name = 'TempCOrder' )
                        DROP TABLE TempCOrder ;
                    RETURN 1 ;                   
                END CATCH  
            END

Sql Server通过BCP数据导出Excel的更多相关文章

  1. SQL Server 2012 数据库数据导出为脚本

    转自:http://blog.csdn.net/ituff/article/details/8265822 将高版本的的SQL Server数据库移到低版本的SQL Server是一件十分蛋疼的事,最 ...

  2. SQL Server 2008将数据导出为脚本

    之前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特 ...

  3. (转)SQL Server 2008将数据导出为脚本 [SQL Server]

    之前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特 ...

  4. 【转载】SQL Server 2012将数据导出为脚本详细图解

    前记: 从SQL SERVER 2008开始,我们就可以很方便的导出数据脚本,而无需再借助存储过程,但是SQL Server 2012和SQL Server 2008的导出脚本的过程还有一点细微的差别 ...

  5. SQL Server 2008将数据导出为脚本 [SQL Server]

    之前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特 ...

  6. SQL Server中bcp命令的用法以及数据批量导入导出

    原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...

  7. SQL Server服务器上需要导入Excel数据的必要条件

    SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Ex ...

  8. SQL Server高速导入数据分享

    SQL Server高速导入数据,能够尝试的方法例如以下:CTE.OpenRowSet/OpenDataSource.BULK INSERT.bcp.Shell. 以下依次介绍这几种办法. 1.CTE ...

  9. SQL Server 2012大数据导入Oracle的解决方案

    在实际工作中需要把SQL Server中的表导入Oracle.之前尝试过直接用SQL Server的DTS进行都没问题.但这次因为数据量在千万级所以报虚拟内存不足.最后通过SQL Server导出tx ...

随机推荐

  1. Android开发--ListPreferance 运行报错:android.preference.ListPreference.findIndexOfValue(ListPreference.java:169)

    在Stack Overflow上找到的答案:http://stackoverflow.com/questions/4357094/exception-on-listpreferences “i fix ...

  2. Pritunl:简易搭建个人VPN及年费200的超编译独立主机 BandwagonHost

    https://pao-pao.net/article/213 Pritunl:简易搭建个人VPN 文/ Vergil 一 直以来安装 VPN 服务.提供全局加密代理,是租用VPS(虚拟主机)的一个重 ...

  3. [MySQL优化案例]系列 — slave延迟很大优化方法

    备注:插图来自网络搜索,如果觉得不当还请及时告知 :) 一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以In ...

  4. 29个你必须知道的Linux命令

    虽然Linux发行版支持各种各样的饿GUI(graphical user interfaces),但在某些情况下,Linux的命令行接口(bash)仍然是简单快速的.Bash和 Linux Shell ...

  5. A Tour of Go Methods and Interfaces

    The next group of slides covers methods and interfaces, the constructs that define objects and their ...

  6. 第十三章、学习 Shell Scripts 简单的 shell script 练习

    简单的 shell script 练习 简单范例 对谈式脚本:变量内容由使用者决定 [root@www scripts]# vi sh02.sh #!/bin/bash # Program: # Us ...

  7. 转载MVC Html.AntiForgeryToken() 防止CSRF攻击

    MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)攻击的一个措施,它跟XSS(XSS又叫CSS:Cross ...

  8. Lambda表达式的由来

    1.lambada表达式的本质:一个匿名方法,或说是匿名委托.从C#3.0开始支持,C#2.0只支持匿名方法语法很简单 : (输入参数)=>expr   //当参数为一个是可以省略括号.lamb ...

  9. android系统自带图标集合(android.R.drawable查看)

    alert_dark_frame alert_light_frame arrow_down_float arrow_up_float bottom_bar btn_default btn_defaul ...

  10. (转)java读取数据库表信息,子段

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...