使用数据文件和格式化文件

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics 平台系统(PDW)

最简单的大容量复制程序执行以下操作:

  1. 调用 bcp_init 以指定从表或视图中批量复制(设置BCP_OUT)到数据文件。

  2. 调用 bcp_exec 以执行大容量复制操作。

数据文件以本机模式创建;因此,来自表或视图中所有列的数据都采用与数据库中相同的格式存储于数据文件中。 然后,通过使用与上述相同的步骤并设置 DB_IN(而非 DB_OUT),将该文件大容量复制到某一服务器中。 只有在源表和目标表都具有完全相同的结构时,这一功能才适用。 生成的数据文件也可以通过使用 /n (本机模式) 开关输入到 bcp 实用工具。

若要批量复制 Transact-SQL 语句的结果集,而不是直接从表或视图中复制:

  1. 调用 bcp_init 以指定大容量复制,但为表名称指定 NULL。

  2. 调用 eOption 设置为 BCPHINTS 且 iValue 设置为指向包含 Transact-SQL 语句的 SQLTCHAR 字符串的指针的bcp_control。

  3. 调用 bcp_exec 以执行大容量复制操作。

Transact-SQL 语句可以是生成结果集的任何语句。 创建数据文件,其中包含 Transact-SQL 语句的第一个结果集。 如果 Transact-SQL 语句生成多个结果集,则大容量复制将忽略第一个结果集之后的任何结果集。

若要创建以与表不同的格式存储列数据的数据文件,请调用 bcp_columns 以指定要更改的列数,然后针对要更改其格式的每个列调用 bcp_colfmt 。 这是在调用 bcp_init 之后,但在调用 bcp_exec之前完成的。 bcp_colfmt 指定列数据存储在数据文件中的格式。 在批量复制或传出时,可以使用它。还可以使用 bcp_colfmt 设置行终止符和列终止符。 例如,如果数据不包含制表符,则可以通过使用 bcp_colfmt 将制表符设置为每列的终止符来创建制表符分隔的文件。

批量复制和使用bcp_colfmt时,可以轻松地创建一个格式化文件,描述在上次调用bcp_colfmt后调用bcp_writefmt创建的数据文件。

从格式化文件描述的数据文件批量复制时,请在bcp_init之后、bcp_exec之前调用bcp_readfmt来读取格式化文件。

数据文件批量复制到 SQL Server 时,bcp_control 函数控制多个选项。 bcp_control设置选项,例如终止前的最大错误数、启动大容量复制的文件中的行、要停止的行以及批大小。

另请参阅

执行大容量复制操作 (ODBC)