通过


bcp 实用工具

适用于:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics分析平台系统(PDW)Microsoft Fabric中的SQL数据库

大容量复制程序实用工具 (bcp) 在 SQL Server 实例与用户指定格式的数据文件之间大容量复制数据。

使用 bcp 实用工具将大量新行导入 SQL Server 表或将数据从表导出到数据文件中。 除非与 queryout 选项一起使用,否则使用该实用工具不需要了解 Transact-SQL 知识。 若要将数据导入表中,必须使用为该表创建的格式化文件,或者了解表的结构及其列有效的数据类型。

关于系统上安装的哪个版本的 bcp、系统要求以及如何获取 bcp 的详细信息,请参阅下载并安装 bcp 实用工具

注释

bcp 数据文件不包含任何架构或格式信息。 如果使用 bcp 备份数据,然后稍后删除或更改源表,则需要相同的表定义或格式化文件才能将数据导入回。

有关用于 bcp 语法的语法约定,请参阅Transact-SQL 语法约定(Transact-SQL)。

如何使用 bcp

有关如何使用 bcp 的信息,包括示例命令,请参阅 如何使用 bcp 实用工具

在 Linux 和 macOS 上使用 bcp

有关如何在 macOS 和 Linux 上安装命令行工具的信息,请参阅 在 Linux 上安装 sqlcmd 和 bcp SQL Server 命令行工具

Linux 和 macOS 上的 bcp 注意事项

  • 字段终止符是制表符 (\t)。

  • 行终止符是换行符 (\n)。

  • 对于 SQL Server 到 SQL Server 的传输,请使用本机格式(-n)。 仅当数据跨入非 SQL Server 系统或数据文件不应包含扩展字符时,才使用字符格式(-c)。 有关详细信息,请参阅 字符模式和本机模式最佳做法

  • 必须在命令行参数中引用或转义反斜杠 (\)。 例如,若要将换行符指定为自定义行终止符,请使用下列机制之一:

    • -r\\n
    • -r"\n"
    • -r'\n'

TDS 8.0 支持

SQL Server 2025 (17.x) 引入了对 bcp 实用工具的 TDS 8.0 支持。

Syntax

bcp [ database_name. ] schema. { table_name | view_name | "query" }
    { in data_file | out data_file | queryout data_file | format nul }

    [ -a packet_size ]
    [ -b batch_size ]
    [ -c ]
    [ -C { ACP | OEM | RAW | code_page } ]
    [ -d database_name ]
    [ -D ]
    [ -e err_file ]
    [ -E ]
    [ -f format_file ]
    [ -F first_row ]
    [ -G Microsoft Entra authentication ]
    [ -h"hint [ , ...n ] " ]
    [ -i input_file ]
    [ -k ]
    [ -K application_intent ]
    [ -l login_timeout ]
    [ -L last_row ]
    [ -m max_errors ]
    [ -n ]
    [ -N ]
    [ -o output_file ]
    [ -P password ]
    [ -q ]
    [ -r row_term ]
    [ -R ]
    [ -S [ server_name [ \instance_name ] ] ]
    [ -t field_term ]
    [ -T ]
    [ -U login_id ]
    [ -u ]
    [ -v ]
    [ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
    [ -w ]
    [ -x ]
    [ -Y [ s | m | o ] ]
    [ -z ]

命令行选项

下表列出了 bcp中提供的命令行选项,以及它们支持的操作系统。

命令行选项 在 Windows 上受支持 Linux 和 macOS 上受支持
对象和传输模式
[database_name.]schema,{table_name | view_name | “query”} 是的 是的
{indata_file | outdata_file | queryoutdata_file | format nul} 是的 是的
-q 是的 是的
连接和身份验证
-S [server_name[\instance_name]] 是的 是的
-d database_name 是的 是的
-U login_id 是的 是的
-P 密码 是的 是的
-G Microsoft Entra 身份验证 是的 是的
-D 是的 是的
-K application_intent 是的 是的
-l login_timeout 是的 是的
-T 是的 是的
-Y[s| m| o] 1 1
数据表示形式
-c 是的 是的
-C { ACP |OEM |RAW | code_page } 是的
-n 是的 是的
-N 是的
-w 是的 是的
-z 2
格式化文件
-f format_file 是的 是的
-x 是的
批处理和性能
-a packet_size 是的 是的
-b batch_size 是的 是的
-h“hint [,...n]” 是的
-m max_errors 是的 是的
-F first_row 是的 是的
-L 最后一行 是的 是的
-r row_term 是的 是的
-t field_term 是的 是的
值处理
-k 是的 是的
-E 是的 是的
文件 I/O 和日志记录
-i input_file 是的
-o output_file 是的
-e err_file 是的 是的
兼容性和版本控制
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) 是的
-u 1 1
其他选项
-R 是的 是的
-v 是的 是的

1 需要 bcp 版本 18 或更高版本,它随 SQL Server 2025 (17.x) 一起提供。
2 ODBC 18.6.1.1 及更高版本。

对象和传输模式

database_name

包含指定表或视图的数据库的名称。 如果未指定此参数,将使用用户的默认数据库。

也可以使用 -d 显式指定数据库名称。

schema

表或视图的所有者的名称。 如果执行该操作的用户拥有指定的表或视图,则 schema 是可选的。 如果未指定 架构,并且执行该操作的用户不拥有指定的表或视图,SQL Server 将返回一条错误消息,并取消该操作。

table_name

将数据导入 SQL Server (in) 时为目标表名称,将数据从 SQL Server 导出时 (out) 为源表名称。

view_name

将数据复制到 SQL Server (in) 时为目标视图名称,从 SQL Server 中复制数据时 (out) 为源视图名称。 当用作目标(in)时,仅当视图的所有列都引用同一个表,视图才受支持。 当视图用作源时,此限制不适用。out 有关将数据复制到视图的限制的详细信息,请参阅 INSERT

"query"

一个返回结果集的 Transact-SQL 查询。 如果该查询返回多个结果集,则只将第一个结果集复制到数据文件,而忽略其余的结果集。 将查询用双引号括起来,将查询中嵌入的任何内容用单引号括起来。 还必须在从查询大容量复制数据时指定 queryout

只要在执行 bcp 语句之前存储过程内引用的所有表均存在,查询就可以引用该存储过程。 例如,如果存储过程生成一个临时表,则 bcp 语句便会失败,因为该临时表只在运行时可用,而在语句执行时不可用。 在这种情况下,应考虑将存储过程的结果插入表中,然后使用 bcp 将数据从表复制到数据文件中。

将数据从文件复制到数据库表或视图中。 指定大容量复制的方向。

出局

将数据从数据库表或视图复制到文件。 指定大容量复制的方向。

如果指定了现有文件,则该文件将被覆盖。 当 bcp 实用工具提取数据时,它将空字符串表示为 null,将 null 字符串表示为空字符串。

data_file

数据文件的完整路径。 将数据批量导入 SQL Server 时,数据文件包含要复制到指定表或视图中的数据。 从 SQL Server 批量导出数据时,数据文件包含从表或视图复制的数据。 路径可以有 1 到 255 个字符。 数据文件最多可包含 2^63 - 1 行。

queryout

从查询复制数据,并且只有在从查询大容量复制数据时才指定。

格式

根据指定的选项(-n-c-w-N)以及表或视图分隔符创建格式化文件。 大容量复制数据时,bcp 命令可以引用一个格式化文件,从而避免以交互方式重复输入格式信息。 该 format 选项需要 -f 该选项;创建 XML 格式化文件也需要该 -x 选项。 有关详细信息,请参阅使用 bcp 创建格式化文件(SQL Server)。 必须指定 nul 作为值 (format nul)。

-q

SET QUOTED_IDENTIFIER ON 实用工具与 SQL Server 实例之间的连接中执行 语句。 使用此选项可以指定包含空格或单引号的数据库、所有者、表或视图的名称。 将整个三部分表或视图名称括在引号中("")。

若要指定包含空格或单引号的数据库名称,必须使用 -q 选项。

-q 不适用于传递到 -d 的值。

有关详细信息,请参阅本文中的 备注 部分。

连接和身份验证

-S [server_name[\instance_name]]

指定要连接到的 SQL Server 实例的名称,或者如果使用 -D,则为 DSN。

如果未指定服务器, bcp 实用工具将连接到本地计算机上的 SQL Server 的默认实例。 从网络上的远程计算机或本地命名实例运行 bcp 命令时,需要此选项。 若要连接到服务器上的 SQL Server 默认实例,请仅指定 server_name。 若要连接到 SQL Server 的命名实例,请指定 <server_name>\<instance_name>

-d database_name

指定要连接到的数据库。 默认情况下, bcp 连接到默认数据库。 如果指定带有三个部分的名称 -d <database_name>(database_name.schema.table,作为第一个参数传递给命令 bcp),则会发生错误,因为不能重复指定数据库名称。 如果 database_name 以连字符 () 或正斜杠 (-) 开头,则不要在 / 与数据库名称之间添加空格。

-U login_id

指定用于连接到 SQL Server的登录 ID。

-P 密码

指定 登录 ID 的密码。 如果不使用此选项, bcp 命令会提示输入密码。 如果在命令提示符结束时使用此选项而不使用密码, bcp 将使用默认密码(NULL)。

Important

不要使用空密码。 请使用强密码。

若要屏蔽密码,请不要同时指定 -P-U 选项。 相反,在指定 bcp 以及 -U 选项和其他开关(不要指定 -P)后,按下 Enter 键,然后命令提示符会要求您输入密码。 这种方法可以确保在输入密码时对其进行隐藏。

如果 password 以连字符 () 或正斜杠 (-) 开头,则不要在 / 与 password 值之间添加空格。

在 Linux 和 macOS 上,当与选项-G一起使用且不包含-U时,-P指定包含 Microsoft Entra 访问令牌(v17.8 及更高版本)的文件。 令牌文件应采用 UTF-16LE(无 BOM)格式。 有关详细信息,请参阅 bcp 中使用 Microsoft Entra ID 进行身份验证

-G

适用于:Azure SQL 数据库、Azure SQL 托管实例、Microsoft Fabric 中的 SQL 数据库、Azure Synapse Analytics 和 SQL Server 2022(16.x)及更高版本。

客户端使用此开关来指定用户使用 Microsoft Entra ID 进行身份验证。 该 -G 开关需要 bcp 版本 14.0.3008.27 或更高版本。 若要确定你的版本,请执行 bcp -v。 欲了解更多信息,请参阅将 Microsoft Entra 身份验证与 SQL 数据库或 Azure Synapse Analytics 配合使用Microsoft Fabric 的 SQL 数据库中的身份验证

有关 bcp 中Microsoft Entra 身份验证的完整详细信息,请参阅 bcp 中使用 Microsoft Entra ID 进行身份验证

-D

使传递给 bcp -S 选项的值被解释为数据源名称 (DSN)。 -D 可以在命令行上的任意位置显示;相对于 -S 排序无关紧要。

DSN 可用于:

  • 嵌入驱动程序选项以简化命令行。
  • 强制实施无法从命令行访问的驱动程序选项,例如 MultiSubnetFailover
  • 帮助防止敏感凭据作为命令行参数被发现。

有关详细信息,请参阅 sqlcmd 和 bcp 中的 DSN 支持

-K 应用意图

连接到服务器时声明应用程序工作负荷类型。 唯一可能的值是 ReadOnly。 如果未指定 -Kbcp 实用工具不支持连接到 AlwaysOn 可用性组中的辅助副本。 有关详细信息,请参阅将只读工作负载卸载到 Always On 可用性组的次要副本

-l login_timeout

指定登录超时。 -l 选项指定在尝试连接到服务器时登录 SQL Server 的超时时间(以秒为单位)。 默认登录超时值为 15 秒。 登录超时必须是介于 0 和 65534 之间的数字。 如果提供的值不是数值或不属于该范围, bcp 将生成一条错误消息。 值 0 指定无限超时。

-T

指定 bcp 实用工具通过使用集成安全性的受信任连接连接到 SQL Server 。 不需要网络用户的安全凭据 login_id 和 password。 如果未指定 -T,那么需要指定 -U-P 才能成功连接。

Important

仅在使用 Windows 集成的受信任连接连接到 SQL Server 时使用 -T 。 连接到 Azure SQL 数据库或 Azure Synapse Analytics 时, -T 不支持 (Windows 集成身份验证)。 对于针对 Azure 服务或 SQL Server 2022(16.x)及更高版本的 Microsoft Entra 认证,请使用 -G(请参阅 bcp 中的 Microsoft Entra ID 身份验证)。

-Y[s|m|o]

适用于bcp 版本 18 及更高版本,随 SQL Server 2025 (17.x) 一起提供。

指定连接是否通过网络使用 TLS 加密。 -Y 可以是 o(对于 Optional)、m(对于 Mandatory,默认),或 s(对于 Strict)。 如果未包含 -Y,则 -Ym (for Mandatory)是默认值。

-u

适用于bcp 版本 18 及更高版本,随 SQL Server 2025 (17.x) 一起提供。

信任服务器证书。 与连接的加密选项一起使用时,请使用自签名服务器证书启用加密。

数据表示形式

-c

使用字符数据类型执行该操作。 此选项不会提示输入每个字段。 它使用 char 作为存储类型,而不使用前缀,并使用 \t (制表符)作为字段分隔符和 \r\n (换行符)作为行终止符。 -c-w 不兼容。

有关详细信息,请参阅使用字符格式导入或导出数据 (SQL Server)

有关最佳做法,请参阅 字符模式和本机模式最佳做法

-C { ACP | OEM | RAW | code_page }

仅适用于:Windows。 Linux 和 macOS 不支持。

指定该数据文件中数据的代码页。 仅当数据包含具有字符值大于 127 或小于 32 的charvarchartext列时,code_page才相关。

为格式化文件中的每一列指定排序规则名称,除非希望 65001 选项优先于排序规则或代码页规范。

代码页值 Description
ACP ANSI/Microsoft Windows (ISO 1252)。
OEM 客户端使用的默认代码页。 如果未指定 -C,则此代码页是默认值。
RAW 不进行代码页间的转换。 此选项最快,因为不会发生转换。
<code_page> 特定代码页码,例如 850。

SQL Server 2016(13.x)之前的版本不支持代码页 65001(UTF-8 编码)。 版本 13 和后续版本可将 UTF-8 编码导入以前版本的 SQL Server。

-n

使用数据的本机(数据库)数据类型执行大批量复制操作。 此选项不会提示输入每个字段。 它使用原生值。

有关详细信息,请参阅使用本机格式导入或导出数据 (SQL Server)

有关最佳做法,请参阅 字符模式和本机模式最佳做法

-N

仅适用于:Windows。 Linux 和 macOS 不支持。

执行大容量复制操作时,对于非字符数据使用本地(数据库)数据类型,对于字符数据使用Unicode字符。 此选项是 -w 选项的一个替代选项,并具有更高的性能。此选项主要用于通过数据文件将数据从一个 SQL Server 实例传送到另一个实例。 此选项不提示输入每个字段。 如果要传送包含 ANSI 扩展字符的数据,并希望利用本机模式的性能优势,则可使用此选项。

有关详细信息,请参阅使用 Unicode 本机格式导入或导出数据 (SQL Server)

如果通过将 bcp-N 一起使用来导出数据后又将数据导入到同一表架构中,则在存在固定长度的非 Unicode 字符列(例如 char(10))的情况下,系统可能会显示截断警告。

可以忽略警告。 解决此警告的一个方法是使用 -n 来替代 -N

-w

使用 Unicode 字符执行大容量复制操作。 此选项不会提示输入每个字段。 它使用 nchar 作为存储类型,无前缀, \t (制表符)作为字段分隔符,( \n 换行符)作为行终止符。 -w-c 不兼容。

有关详细信息,请参阅使用 Unicode 字符格式导入或导出数据(SQL Server)。

-z

仅适用于bcp (ODBC)、Linux 和 macOS。 Windows 系统不被支持。

bcp 实用工具中启用矢量数据类型支持。 此功能当前默认处于禁用状态。 禁用后,矢量数据将导入或导出为 JSON 浮点数组字符串。 启用后,在连接到 SQL Server 2025(17.x)及更高版本时,矢量数据将以原生矢量二进制文件格式进行导入或导出。

格式化文件

-f format_file

指定格式化文件的完整路径。 此选项的含义取决于使用它的环境,具体如下:

  • 如果使用-fformat此选项,则会为指定的表或视图创建指定的format_file。 若要创建 XML 格式化文件,请同时指定 -x 选项。 有关详细信息,请参阅使用 bcp 创建格式化文件(SQL Server)。

  • 如果使用-finout选项,则需要现有的格式化文件。

    注释

    使用带 inout 选项的格式化文件是可选的。 如果未指定-f选项,并且未指定-n-c-w-N,则命令提示符将提示设置格式信息,并允许您将响应保存在格式文件中。 默认文件名为 bcp.fmt.

如果 format_file 以连字符 () 或正斜杠 (-) 开头,则不要在 / 与 format_file 值之间包含空格。

-x

仅适用于:Windows。 Linux 和 macOS 不支持。

将此选项与format选项及-fformat_file一起使用。 它生成基于 XML 的格式化文件,而不是默认的非 XML 格式化文件。 导入或导出数据时,此选项 -x 不起作用。 如果不与 format-f format_file 一起使用,则将生成错误。

批处理和性能

-a packet_size

指定客户端从服务器发送和接收的每个网络数据包的字节数。 使用 SQL Server Management Studio 或 sp_configure 系统存储过程设置此服务器配置选项。 但是,可以使用此选项单独替代服务器配置选项。 packet_size 可以介于 4,096 字节到 65,535 字节之间。 默认值为 4096

增加数据包大小可以提高大容量复制操作的性能。 如果请求更大的数据包,但服务器无法授予它,则使用默认值。 bcp 实用工具生成的性能统计信息显示使用的数据包大小。

-b batch_size

指定每批导入数据的行数。 每个批次均作为一个单独的事务进行导入并记录,在提交之前会导入整批。 默认情况下, bcp 将数据文件中的所有行作为一个批处理导入。 若要将行分为多个批次进行操作,请指定小于数据文件中的行数的 batch_size 。 如果任何批次的事务失败,那么只有当前批次中的插入操作才会被回滚。 已提交的交易所导入的批次不会受到后续事务失败的影响。

-b-h "ROWS_PER_BATCH=<bb>" 提示是互斥的。 使用-b以显式控制bcp的分批处理,或者在将数据作为单个事务发送时使用ROWS_PER_BATCH,以提示服务器优化器。

-h “hints [, ... n]”

仅适用于:Windows。 Linux 和 macOS 不支持。

指定在将数据批量导入表或视图时使用的提示。

  • 排序 ( [升序 | 降序] [, ……n])

    数据文件中的数据排序次序。 如果导入的数据根据表上的聚集索引(如果有)排序,则大容量导入性能会提高。 如果数据文件按不同的顺序排序,即与聚集索引键的顺序不同,或者表中没有聚集索引,则忽略 ORDER 子句。 你提供的列名必须是目标表中的有效列名。 默认情况下, bcp 假定数据文件没有排序。 对于经过优化的批量导入, SQL Server 还将验证导入的数据是否已排序。

  • ROWS_PER_BATCH = bb

    每批数据的行数(即 bb)。 未指定 -b时使用,导致整个数据文件作为单个事务发送到服务器。 服务器根据bb值优化批量加载。 默认情况下,ROWS_PER_BATCH 未知。

  • KILOBYTES_PER_BATCH = cc

    每批数据的近似千字节数(即 cc)。 默认情况下,KILOBYTES_PER_BATCH 未知。

  • TABLOCK

    指定在大容量加载操作期间获取大容量更新表级别的锁;否则,获取行级别的锁。 由于在大容量复制操作期间拥有锁可以减少表中的锁争夺,因此此提示可显著提高性能。 如果表没有索引且 TABLOCK 已指定,则可以同时从多个客户端加载表。 默认情况下,表选项 table lock on bulkload 确定锁定行为。 有关详细信息,请参阅 sp_tableoption

    注释

    如果目标表是聚集列存储索引,则不需要使用 TABLOCK 提示进行加载,因为每个并发线程在索引中各自分配一个独立的行组,将数据加载到该行组中。 有关详细信息,请参阅 列存储索引:概述

  • CHECK_CONSTRAINTS

    指定在批量导入操作期间,必须检查所有对目标表或视图的约束。 没有CHECK_CONSTRAINTS提示,任何CHECK约束和FOREIGN KEY约束将被忽略,并且在操作后,表上的约束将被标记为不受信任。

    注释

    始终强制实施 UNIQUEPRIMARY KEYNOT NULL 约束。

    在某个时间点,您需要检查表格的所有限制。 如果在批量导入操作之前表没有空,则重新验证约束的成本可能会超过对增量数据应用 CHECK 约束的成本。 因此,通常可以在增量批量导入期间启用约束检查。

    当输入数据包含违反约束的行时,您可能希望禁用约束(默认行为)。 通过禁用 CHECK 约束,可以导入数据,然后使用 Transact-SQL 语句删除无效的数据。

    注释

    -m“max_errors” 开关不适用于约束检查。

  • FIRE_TRIGGERS

    使用 in 参数指定此选项时,在批量复制操作期间,将执行在目标表上定义的任何插入触发器。 如果未指定 FIRE_TRIGGERS,则不会运行插入触发器。 对于 FIRE_TRIGGERSoutqueryout 参数,将忽略 format

-m 最大错误数

指定取消 bcp 操作之前可能出现的语法错误的最大数目。 语法错误是指将数据转换为目标数据类型时的错误。 max_errors总数排除服务器只能检测的任何错误,例如约束冲突。

bcp 实用工具无法复制的行将被忽略并计为一个错误。 如果未包含此选项,则默认值为 10。

注释

-m 选项在转换moneybigint数据类型时不适用。

-F 第一行

指定要从表中导出或从数据文件导入的第一行的编号。 此参数需要大于 (>) 0 但小于 (<) 或等于总行数的值。 如果未指定此参数,则默认值为文件的第一行。

first_row 可以是一个最大为 2^63-1 的正整数值。 -F first_row 使用基于 1 的编号。

-L 最后一行

指定要从表中导出或从数据文件中导入的最后一行的编号。 此参数需要大于 (>) 0 但小于 (<) 的值或等于最后一行的数目。 如果未指定此参数,则默认值为文件的最后一行。

last_row 可以是一个最大为 2^63-1 的正整数值。

-r row_term

指定行终止符。 默认值为 \n(换行符)。 使用此参数可替代默认行终止符。 有关详细信息,请参阅“指定字段和行终止符”(SQL Server)。

如果在 bcp 命令中以十六进制表示法指定行终止符,则该值将在 处截断。 例如,如果指定 0x410041,则使用 0x41

如果 row_term 以连字符 () 或正斜杠 (-) 开头,则不要在 / 与 row_term 值之间包含空格。

-t field_term

指定字段终止符。 默认为 \t(制表符)。 使用此参数可以替代默认字段终止符。 有关详细信息,请参阅“指定字段和行终止符”(SQL Server)。

如果在 bcp 命令中以十六进制表示法指定字段终止符,则该值将在 处截断。 例如,如果指定 0x410041,则使用 0x41

如果 field_term 以连字符 () 或正斜杠 (-) 开头,则不要在 / 与 field_term 值之间包含空格。

值处理

-k

指定空列在操作期间保留 null 值,而不是插入列的任何默认值。 有关详细信息,请参阅在批量导入期间保留 Null 或使用默认值 (SQL Server)

-E

指定该操作在导入的数据文件中为标识列使用标识值。 如果未指定 -E,SQL Server 将忽略要导入的数据文件中此列的标识值,并根据表创建期间指定的种子值和增量值自动分配唯一值。 有关详细信息,请参阅 DBCC CHECKIDENT

如果数据文件不包含表或视图中标识列的值,请使用格式化文件指定导入数据时应跳过表或视图中的标识列。 SQL Server 自动为列分配唯一值。

-E 选项有一个特殊的权限要求。 有关详细信息,请参阅本文后面的“备注”。

文件 I/O 和日志记录

-i input_file

仅适用于:Windows。 Linux 和 macOS 不支持。

指定响应文件的名称。 当你使用交互模式(-n-c-w或未指定)-N执行大容量复制操作时,该文件包含对每个数据字段的命令提示符问题的响应。

如果 input_file 以连字符 () 或正斜杠 (-) 开头,则不要在 / 与 input_file 值之间包含空格。

-o 输出文件

仅适用于:Windows。 Linux 和 macOS 不支持。

指定文件名称,该文件用于接收从命令提示符重定向来的输出。

如果 output_file 以连字符 () 或正斜杠 (-) 开头,则不要在 / 与 output_file 值之间包含空格。

-e err_file

指定错误文件的完整路径,此文件用于存储 bcp 实用工具无法从文件传输到数据库的所有行。 bcp 命令产生的错误消息将被发送到用户的工作站。 如果不使用此选项,则不会创建错误文件。

如果 err_file 以连字符 () 或正斜杠 (-) 开头,则不要在 / 与 err_file 值之间包含空格。

兼容性和版本控制

-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }

仅适用于:Windows。 Linux 和 macOS 不支持。

使用 SQL Server早期版本中的数据类型执行大容量复制操作。 此选项并不提示输入每个字段,它使用默认值。

  • 80 = SQL Server 2000 (8.x)
  • 90 = SQL Server 2005 (9.x)
  • 100 = SQL Server 2008 (10.0.x) 和 SQL Server 2008 R2 (10.50.x)
  • 110 = SQL Server 2012 (11.x)
  • 120 = SQL Server 2014 (12.x)
  • 130 = SQL Server 2016 (13.x)
  • 140 = SQL Server 2017 (14.x)
  • 150 = SQL Server 2019 (15.x)
  • 160 = SQL Server 2022 (16.x)
  • 170 = SQL Server 2025 (17.x)

例如,若要为 SQL Server 2000 (8.x) 不支持的类型生成数据,但在更高版本中引入,请使用此选项 -V80

有关详细信息,请参阅导入来自早期版本的 SQL Server 的本机格式数据和字符格式数据

其他选项

-R

指定 bcp 实用工具使用为客户端计算机的区域设置定义的区域格式将货币、日期和时间数据批量复制到 SQL Server 中。 默认情况下, bcp 将忽略区域设置。

-v

报告 bcp 实用工具的版本号和版权信息。

注解

  • bcp 实用工具支持与所有受支持的 SQL Server 版本兼容的本机数据文件。

  • bcp 实用工具仅显示错误消息的前 512 个字节。

权限

bcp out 操作要求对源表具有 SELECT 权限。

对目标表执行 bcp in 操作需要最低的 SELECTINSERT 权限。 此外,如果满足以下任一条件,则需要 ALTER TABLE 权限:

  • 存在约束,但未指定 CHECK_CONSTRAINTS 提示。

    禁用约束是默认行为。 要显式启用约束,请使用 -h 选项和 CHECK_CONSTRAINTS 提示。

  • 存在触发器,但未指定 FIRE_TRIGGERS 提示。

    默认情况下,不会激发触发器。 要显式触发触发器,请使用 -h 选项和 FIRE_TRIGGERS 提示。

  • 可以使用 -E 选项从数据文件导入标识值。

获取帮助

参与编辑 SQL 文档

你是否知道你可以自行编辑 SQL 内容? 你如果这样做,不仅可以帮助改进我们的文档,还可以获得页面贡献者的殊荣。

有关详细信息,请参阅 Edit Microsoft Learn 文档