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

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

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

  1. 调用 bcp_init 以指定大容量复制 (将BCP_OUT) 从表或视图设置为数据文件。

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

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

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

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

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

  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)