如何从程序变量大容量复制数据 (ODBC)

提供了一个示例,用于演示如何通过 bcp_bind 和 bcp_sendrow 使用大容量复制函数将数据从程序变量大容量复制到 SQL Server。(为简化此示例,已删除错误检查代码。)

完整的示例代码位于 BulkCopyFromVariables.cpp 文件中,可以从 SQL Server Code Samples(SQL Server 示例代码)页下载此文件。此示例是使用 Microsoft Visual C++ 2005 开发的,并且是针对 ODBC 版本 3.0 或更高版本开发的。

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

直接在程序变量上使用大容量复制函数

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

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

  3. 连接到 SQL Server。

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

    • 作为大容量复制的源或目标的表或视图的名称。

    • 将数据文件的名称指定为 NULL。

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

    • 副本的方向:DB_IN 从应用程序到视图或表,或 DB_OUT 从表或视图到应用程序。

  5. 在大容量复制中针对每一列调用 bcp_bind,以将该列绑定到程序变量。

  6. 用数据填充程序变量,并调用 bcp_sendrow 以发送一行数据。

  7. 在发送几行之后,调用 bcp_batch 以标识已发送的行。最好每 1000 行至少调用一次 bcp_batch

  8. 发送完所有行之后,调用 bcp_done 以完成操作。

通过调用 bcp_colptrbcp_collen,可以在大容量复制操作期间更改程序变量的位置和长度。使用 bcp_control 可以设置多个大容量复制选项。使用 bcp_moretext 可以将 text、ntext 和 image 数据分段发送到服务器。