bcp 实用工具

您所在的位置:网站首页 cmd备份sqlserver数据库 bcp 实用工具

bcp 实用工具

2023-09-05 16:06| 来源: 网络整理| 查看: 265

bcp 实用工具 项目 07/12/2023

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

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

注意

有关在 Linux 上使用 bcp 的信息,请参阅在 Linux 上安装 sqlcmd 和 bcp。

有关将 bcp 与 Azure Synapse Analytics 配合使用的详细信息,请参阅使用 bcp 加载数据。

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

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

注意

如果使用 bcp 备份数据,请创建一个格式化文件来记录数据格式。 bcp 数据文件 不包括 任何架构或格式信息,因此如果已删除表或视图并且不具备格式化文件,则可能无法导入数据。

下载最新版本的 bcp 实用工具

命令行工具为公开发行版 (GA),但与 SQL Server 2019 (15.x) 的安装程序包一起发布。

版本信息 版本号:15.0.4298.1 生成号:15.0.4298.1 发布日期:2023 年 4 月 7 日

新版本的 sqlcmd 支持 Azure AD 身份验证,包括对 SQL 数据库、Azure Synapse Analytics 和 Always Encrypted 功能的多重身份验证 (MFA) 支持。

新 BCP 支持 Azure AD 身份验证,包括对 SQL 数据库和 Azure Synapse Analytics 的多重身份验证 (MFA) 支持。

系统要求

Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11

Windows Server 2008、Windows Server 2008 R2、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、Windows Server 2019、Windows Server 2022

此组件要求安装 Windows Installer 4.5 和最新的 Microsoft ODBC Driver 17 for SQL Server。

若要查看 BCP 版本,请执行 bcp -v 命令,并确认使用的是 15.0.4298.1 或更高版本。

语法 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 Azure Active Directory 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] [-v] [-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 ) ] [-w] [-x] 命令行选项 database_name

指定的表或视图所在数据库的名称。 如果未指定,则使用用户的默认数据库。

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

schema

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

table_name

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

view_name

将数据复制到 SQL Server (in) 时为目标视图名称,从 SQL Server 中复制数据时 (out) 为源视图名称。 只有其中所有列都引用同一个表的视图才能用作目标视图。 有关将数据复制到视图的限制的详细信息,请参阅 INSERT (Transact-SQL)。

“query”

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

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

in

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

out

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

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

data_file

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

queryout

从查询中复制,仅当从查询大容量复制数据时才必须指定此选项。

format

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

-a packet_size

指定服务器发出或接收的每个网络数据包的字节数。 可以使用 SQL Server Management Studio (或 sp_configure 系统存储过程)来设置服务器配置选项。 但是,可以使用此选项逐个替代服务器配置选项。 packet_size 的取值范围为 4096 到 65535 字节,默认值为 4096。

增大数据包可以提高大容量复制操作的性能。 如果无法得到请求的较大数据包,则使用默认值。 bcp 实用工具生成的性能统计信息可以显示所用的数据包大小。

-b batch_size

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

不要将此选项与 -h "ROWS_PER_BATCH=" 选项一起使用。

-c

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

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

-C { ACP | OEM | RAW | code_page }

指定该数据文件中数据的代码页。 仅当数据含有字符值大于 127 或小于 32 的code_page 、 code_page, varcode_page列时, code_page columns with code_pageacter values greater than 127 or less than 32.

注意

我们建议你为格式文件中的每个列指定一个排序规则名称,除非你希望 65001 选项优先于排序规则/代码页规范。

代码页值 说明 ACP ANSI/Microsoft Windows (ISO 1252)。 OEM 客户端使用的默认代码页。 这是未指定 -C 时使用的默认代码页。 RAW 不进行代码页间的转换。 因为不进行转换,所以这是最快的选项。 code_page 特定的代码页编号,例如 850。

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

-d database_name

指定要连接到的数据库。 默认情况下,bcp 连接到用户的默认数据库。 如果指定了 -d database_name 和包含三部分的名称(database_name.schema.table,作为第一个参数传递给 bcp),则将发生错误,因为数据库名称不能指定两次。 如果 database_name 以连字符 (-) 或正斜杠 (/) 开头,则不要在 -d 与数据库名称之间添加空格。

-d

使值传递给将解释为数据源名称 (DSN) 的 bcp-S 选项。 DSN 可以用于嵌入驱动程序选项,以简化命令行,强制执行其他无法从命令行(例如 MultiSubnetFailover)访问的驱动程序选项,或帮助防止敏感凭据被视为命令行参数。 有关详细信息,请参阅使用 sqlcmd 进行连接中的“sqlcmd 和 bcp 中的 DSN 支持”。

-e err_file

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

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

-E

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

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

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

-f format_file

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

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

如果与 in 或 out 选项一起使用,则 -f 需要一个现有的格式化文件。

注意

可以选择将格式化文件与 in 或 out 选项一起使用。 如果没有 -f 选项,则在未指定 -n、-c、-w 或 -N 时,该命令将提示输入格式信息,并允许你将响应保存在格式化文件(默认文件名为 bcp.fmt)中。

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

-F first_row

指定要从表中导出或从数据文件导入的第一行的编号。 此参数的值应大于 (>) 0,但小于 () 0,小于 (



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3