如何大容量复制 SELECT 结果集 (ODBC)

本文提供了一个完整的示例,说明如何使用大容量复制函数向外大容量复制 SELECT 语句的结果集。完整示例代码位于 BulkCopySelectResult.cpp 文件中,您可以从 MSDN 上的 SQL Server Downloads(SQL Server 下载)页下载该文件。此示例是使用 Microsoft Visual C++ 2005 开发的,并且是针对 ODBC 版本 3.0 或更高版本开发的。

安全说明安全说明

请尽可能使用 Windows 身份验证。如果 Windows 身份验证不可用,请在运行时提示用户输入其凭据。不要将凭据存储在一个文件中。如果必须保存凭据,则应当用 Win32 crypto API(Win32 加密 API)进行加密。

向外大容量复制 SELECT 语句的结果集

  1. 分配环境句柄和连接句柄。

  2. 设置 SQL_COPT_SS_BCP 和 SQL_BCP_ON 以启用大容量复制操作。

  3. 连接到 SQL Server。

  4. 调用 bcp_init 以设置以下信息:

    • 为 szTable 参数指定 NULL。

    • 接收结果集数据的数据文件的名称。

    • 接收任何大容量复制错误消息的数据文件的名称(如果不需要消息文件,请指定 NULL)。

    • 复制方向:DB_OUT。

  5. 调用 bcp_control,将 eOption 设置为 BCPHINTS,并在 iValue 中放入一个指向包含该 SELECT 语句的 SQLTCHAR 数组的指针。

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

按以上步骤操作时文件是以本机格式创建的。您可以使用 bcp_colfmt 将数据值转换为其他数据类型。有关详细信息,请参阅如何创建大容量复制格式化文件 (ODBC)