如何在不使用格式化文件的情况下进行大容量复制 (ODBC)

一个完整的示例显示了如何使用大容量复制函数创建本机模式数据文件。完整的示例代码位于文件 BulkCopyNativeMode.cpp 中,可以在 MSDN 上从 SQL Server Downloads(SQL Server 下载)页下载此文件。此示例是使用 Microsoft Visual C++ 2005 开发的,并且是针对 ODBC 版本 3.0 或更高版本开发的。

安全说明安全说明

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

在不使用格式化文件的情况下进行大容量复制

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

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

  3. 连接到 SQL Server。

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

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

    • 包含要复制到数据库中的数据的数据文件的名称,或者当从数据库中复制时接收数据的数据文件的名称。

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

    • 复制的方向:如果是从文件到视图或表则为 DB_IN,如果是从表或视图到文件则为 DB_OUT。

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

用这些步骤设置 DB_OUT 时,将以本机格式创建该文件。然后,可以通过执行上述相同步骤(不过设置的是 DB_OUT 而不是 DB_IN),将该文件大容量复制到服务器中。这只有在源表和目标表的结构完全相同时才可实现。