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

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

  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,读取该格式文件。

bcp_control 函数控制从某一数据文件大容量复制到 SQL Server 中时可采用的若干选项。 bcp_control 设置一些选项,如终止前的最大错误数、文件中要开始大容量复制的具体行、要停止的具体行以及批处理大小。

请参阅

概念

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