千家信息网

SQL Server数据导入导出工具BCP怎么用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下SQL Server数据导入导出工具BCP怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基
千家信息网最后更新 2026年11月03日SQL Server数据导入导出工具BCP怎么用

小编给大家分享一下SQL Server数据导入导出工具BCP怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据。BCP可以将数据库的表或视图直接导出,也能通过SELECT FROM语句对表或视图进行过滤后导出。在导入导出数据时,可以使用默认值或是使用一个格式文件将文件中的数据导入到数据库或将数据库中的数据导出到文件中。

  下面将详细讨论如何利用 BCP导入导出数据。

   1. BCP的主要参数介绍

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

   (1) 导入。

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

例如:

bcp sxculture.dbo.show_t_type in c:\temp\show_t_type -U sa -P 111111 -Szhouyx -c -Jcp850

   (2) 导出。

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

例如:

bcp sxculture.dbo.Cul_MuseumData out d:\Cul_MuseumData_out -Usa -P111111 -Szhouyx -c

   (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

  在使用密码登录时需要将 -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 "  " 1 CurrencyCode SQL_Latin1_General_CP1_CI_AS

   2 SQLCHAR 0 100 "  " 2 Name SQL_Latin1_General_CP1_CI_AS

   3 SQLCHAR 0 24 " " 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#等)运行,这也是使客户端程序具有数据导入导出功能的方法之一。

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

   -w

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

   -t field_term

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

   -r row_term

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

   -S server_name[ instance_name]

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

   -U login_id

  指定连接 SQL Sever的用户名。

   -P password

  指定连接 SQL Server的用户名密码。---www.bianceng.cn

   -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

看完了这篇文章,相信你对"SQL Server数据导入导出工具BCP怎么用"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

文件 数据 格式 命令 动作 可以通过 字段 数据库 语句 工具 视图 生成 一行 内容 参数 字符 密码 文件名 方式 用户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重生之互联网科技帝国 盈实互联网科技 互联网巨头反垄断金融科技 关于新基建和互联网科技 上海挚品互联网科技 北京互联网络科技有限公司 互联网科技小额贷款 卓越科技互联网 招聘 成都互联网科技公司100强 全球顶尖互联网科技公司 黑科技闪耀互联网之光 互联网新科技动漫ppt素材 滨湖区互联网智能科技产品有哪些 智帮互联网科技公司最近动向 城市宝互联网科技有限公司 互联网科技资金流入 互联网相关科技技术 南京一网一红互联网科技有限公司 山东大美朱楼互联网科技有限公司 唯美互联网科技 互联网科技股 什么是科技互联网 北京路客互联网科技有限公司 互联网科技金融公司 互联网科技热点资讯 洛阳共同富裕互联网科技有限公司 南博望互联网科技有限公司 保险科技服务互联网营销体系 上海同邻互联网科技有限公司规模 上海旺乐尼互联网科技有限公司
0