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
指定空列使用null值插入,而不是这列的默认值。

2. 如何使用BCP导出数据

(1) 使用BCP导出整个表或视图。

BCP AdventureWorks.sales.currency out c:/currency1.txt -c -U"sa" -P"password" --使用密码连接

BCP AdventureWorks.sales.currency out c:/currency1.txt -c -T --使用信任连接

下面是上述命令执行后的输出结果

Starting copy...
105 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 10 Average : (10500.00 rows per sec.)

下面是currency1.txt的部分内容

AED Emirati Dirham 1998-06-01 00:00:00.000
AFA Afghani 1998-06-01 00:00:00.000
... ... ...
... ... ...
ZWD Zimbabwe Dollar 1998-06-01 00:00:00.000

在使用密码登录时需要将-U后的用户名和-P后的密码加上双引号。

注:BCP除了可以在控制台执行外,还可以通过调用SQL Server的一个系统存储过程xp_cmdshell以SQL语句的方式运行BCP。如上述第一条命令可改写为

EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency out c:/currency1.txt -c -U"sa" -P"password"'
执行xp_cmdshell后,返回信息以表的形式输出。为了可以方便地在SQL中执行BCP,下面的命令都使用xp_cmdshell执行BCP命令。

(2) 对要导出的表进行过滤。

BCP不仅可以接受表名或视图名做为参数,也可以接受SQL做为参数。通过SQL语句可以对要导出的表进行过滤,然后导出过滤后的记录。

EXEC master..xp_cmdshell 'BCP "SELECT TOP 20 * FROM AdventureWorks.sales.currency" queryout c:/currency2.txt -c -U"sa" -P"password"'

BCP还可以通过简单地设置选项对导出的行进行限制。

EXEC master..xp_cmdshell 'BCP "SELECT TOP 20 * FROM AdventureWorks.sales.currency" queryout c:/currency2.txt -F 10 -L 13 -c -U"sa" -P"password"'

这条命令使用了两个参数-F 10和-L 13,表示从SELECT TOP 20 * FROM AdventureWorks.sales.currency所查出来的结果中取第10条到13条记录进行导出。

3. 如何使用BCP导出格式文件

BCP不仅可以根据表、视图导入导出数据,还可以配合格式文件对导入导出数据进行限制。格式文件以纯文本文件形式存在,分为一般格式和xml格式。用户可以手工编写格式文件,也可以通过BCP命令根据表、视图自动生成格式文件。

EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:/currency_format1.fmt -c -T'

上述命令将currency表的结构生成了一个格式文件currency_format1.fmt,下面是这个格式文件的内容。

9.0
3
1 SQLCHAR 0 6 "/t" 1 CurrencyCode SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 100 "/t" 2 Name SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 24 "/r/n" 3 ModifiedDate

这个格式文件记录了这个表的字段(共3个字段)类型、长度、字符和行分割符和字段名等信息。

BCP还可以通过-x选项生成xml格式的格式文件。

EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:/currency_format2.fmt -x -c -T'
xml格式文件所描述的内容和普通格式文件所描述的内容完全一样,只是格式不同。

4. 如何使用BCP导入数据

BCP可以通过in命令将上面所导出的currency1.txt和currency2.txt再重新导入到数据库中,由于currency有主键,因此我们将复制一个和currency的结构完全一样的表。

SELECT TOP 0 * INTO AdventureWorks.sales.currency1 FROM AdventureWorks.sales.currency
将数据导入到currency1表中

EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:/currency1.txt -c -T'
导入数据也同样可以使用-F和-L选项来选择导入数据的记录行。

EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:/currency1.txt -c -F 10 -L 13 -T'
在导入数据时可以根据已经存在的格式文件将满足条件的记录导入到数据库中,不满足则不导入。如上述的格式文件中的第三个字段的字符长度是24,如果某个文本文件中的相应字段的长度超过24,则这条记录将不被导入到数据库中,其它满足条件的记录正常导入。

使用普通的格式文件

EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:/currency1.txt -F 10 -L 13 -c -f c:/currency_format1.fmt -T'
使用xml格式的格式文件

EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:/currency1.txt -F 10 -L 13 -c -x -f c:/currency_format2.fmt -T'

总结

BCP命令是SQL Server提供的一个快捷的数据导入导出工具。使用它不需要启动任何图形管理工具就能以高效的方式导入导出数据。当然,它也可以通过xp_cmdshell在SQL语句中执行,通过这种方式可以将其放到客户端程序中(如delphi、c#等)运行,这也是使客户端程序具有数据导入导出功能的方法之一。

1. BCP的主要参数介绍相关推荐

  1. 网路摄像头技术参数介绍

    网路摄像头技术参数介绍 星光级图像传感器 4MP (2592 × 1520) @30fps SmartH.265 / H.265+ / H.265 / SmartH.264 / H.264+ / H. ...

  2. GCC编译选项参数介绍

    gcc和g++分别是gnu的c和c++编译器,下面是整理的常用编译选项参数: #(1). -x: 设定文件所使用的语言,使文件后缀名无效,如下,执行完后生成test.o gcc -c -x c++ t ...

  3. tensorflow中的命令行参数介绍

    1.tensorflow中的tf.flags参数介绍 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019-01-20 21:39: ...

  4. 【深度学习】caffe 中的一些参数介绍

     [深度学习]caffe 中的一些参数介绍 标签: 深度学习caffe 2016-05-30 14:33 7122人阅读 评论(1) 收藏 举报 本文章已收录于: 分类: [机器学习&深度 ...

  5. 学习笔记Hadoop(八)—— Hadoop集群的安装与部署(5)—— Hadoop配置参数介绍、Hadoop集群启动与监控

    五.Hadoop配置参数介绍 Hadoop集群配置文件主要有: 它们的默认参数配置可以看: core-default.xml :https://hadoop.apache.org/docs/stabl ...

  6. 【学习笔记】28、类的方法及参数介绍

    类的方法及参数介绍 初始化方法 在类被实例化的时候,有一个方法会被自动运行,这个方法就是"__init__(self)" (前后两个下划线). 这个方法主要用于在一个对象被实例化的 ...

  7. Linux系统IO分析工具之iotop常用参数介绍

      Linux系统IO分析工具之iotop常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的 ...

  8. python怎么导入opencv_对python opencv 添加文字 cv2.putText 的各参数介绍

    如下所示: cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3) 各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字 ...

  9. HDFS命令行客户端使用,命令行客户端支持的命令参数,常用命令参数介绍

    3.HDFS的shell(命令行客户端)操作 3.1 HDFS命令行客户端使用 HDFS提供shell命令行客户端,使用方法如下: [toto@hadoop hadoop-2.8.0]$ hdfs d ...

最新文章

  1. Google重磅发布开源库TFQ,快速建立量子机器学习模型
  2. Android-正方形的容器
  3. Android网络连接监听
  4. ios 视频旋转---分解ZFPlayer
  5. waitpid最后以一个参数设为0_西门子MM440变频器参数设置
  6. 【dfs】【链表】连通图 (ssl 1758)
  7. java8 camel_Meet Fabric8:基于Camel和ActiveMQ的开源集成平台
  8. 00058 imp_IMP-00058: ORACLE error 12154 encountered
  9. android统计库,android jacoco 统计多模块
  10. vscode 调试 PHP 打造PHP本地开发环境
  11. mysql定时event创建每隔一天_mysql用event设置定时任务
  12. module 'tensorflow.python.keras.backend' has no attribute 'get_graph'
  13. lisp 车位块自动编号_湘源控规用使用手册.doc
  14. Photoneo为IKEA提供家具零件包装自动化解决方案
  15. wish平台入驻需要押金吗?
  16. 来!带你认识几种最流行的Python编辑器/IDEs
  17. C++常用函数汇总(持续更新)
  18. html wmf 不显示,在Word、Excel、PPT中不能显示WMF图片
  19. 用星坐标(Star Coordinates)表示高维数据
  20. 强化学习keras-rl2的安装注意点

热门文章

  1. mysql数据库空闲时间设定_关于数据库连接池的最大空闲时间的配置
  2. LNMP架构详解(2)——Mysql、PHP、Nginx源码编译过程
  3. idea删除后能还原吗_热水管能过100度热水吗
  4. 定义一个有参宏SWAP(t,x,y),用以交换t类型的两个参数的值
  5. 【c语言】蓝桥杯算法训练 4-2找公倍数
  6. html钟无序列表不换行,风格无序列表中奇怪的换行符?
  7. 【事务】特性、安全保障及实现
  8. 20180513模拟赛
  9. 同步机制之 ReentrantLock
  10. 关于ajax跨域请求(cross Domain)