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. -lrt

    在编写pthread有关的程序时,编译时老是报"undefined reference to `pthread_create'"的错误,原因是没有链接pthread相关的库,gcc ...

  2. ActivityNotFoundException: No Activity found to handle Intent

    代码如下: Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction ...

  3. 常用的各种标准下载网站(HB GB GJB MH)

    标准分享网 http://www.bzfxw.com/ 标准下载网 http://www.bzxz.net/ 搜标准网   http://www.biaozhunw.com/Index.html 标准 ...

  4. activemq重启

    172.16.10.72 activemq /home/local/apache-activemq-5.10.0/bin/activemq-admin stop /home/local/apache- ...

  5. iOS block的用法

    本章学习目标: 1. 了解何谓block. 2. 了解block的使用方法. Block 是iOS在4.0之后新增的程式语法,严格来说block的概念并不算是基础程式设计的范围,对初学者来说也不是很容 ...

  6. Android虚拟环境的工具集Genymotion完整安装教程

    Genymotion提供Android虚拟环境的工具集.相信很多Android开发者一定受够了速度慢.体验差效率及其地下的官方模拟器了.如果你没有物理机器,又不想忍受官方模拟器的折磨,Genymoti ...

  7. ThinkPHP函数详解:C方法

    C方法是ThinkPHP用于设置.获取,以及保存配置参数的方法,使用频率较高.了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的.ThinkPHP的配置文件采用PH ...

  8. PCL 点云数据操作 OpenCV遍历数据

    1.对于点云类型实例cloud,对其第i个点进行赋值操作,使用cloud.point[i].x 和 cloud.point[i].y 和cloud.point[i].z 分别对其XYZ坐标赋值. cl ...

  9. iOS开发——面试笔试精华(四)

    面试笔试精华(四) 1.        Object-C有多继承吗?没有的话用什么代替?
 1>  OC是单继承,没有多继承 2>  有时可以用分类和协议来代替多继承 2.        ...

  10. android报错及解决1--Bitmap加载时,报bitmap size exceeds VM budget

    报错描述: 用Bitmap加载图片资源时,报错java.lang.OutOfMemoryError: bitmap size exceeds VM budget 原因分析: android系统限制,只 ...