bcp_readfmt

从指定的格式文件中读取数据文件格式定义。

语法

RETCODE bcp_readfmt ( 
        HDBC hdbc, 
        LPCTSTR szFormatFile);

参数

  • hdbc
    支持大容量复制的 ODBC 连接句柄。

  • szFormatFile
    包含数据文件的格式值的文件的路径和文件名。

返回值

SUCCEED 或 FAIL。

注释

bcp_readfmt 在读取格式值之后,会对 bcp_columnsbcp_colfmt进行相应的调用。 您无需分析格式文件和进行这些调用。

若要保存格式文件,请调用 bcp_writefmt。 对 bcp_readfmt 的调用可以引用保存的格式。 有关详细信息,请参阅 bcp_init

另外,也可使用大容量复制实用工具 (bcp) 将用户定义数据格式保存在可由 bcp_readfmt 引用的文件中。 有关 bcp 实用工具和 bcp 数据格式文件的结构的详细信息,请参阅大容量导入和导出数据 (SQL Server)

bcp_control 的 eOption 参数的 BCPDELAYREADFMT 值修改 bcp_readfmt 的行为。

注意注意

格式文件必须是使用 bcp 实用工具的 4.2 版或更高版本生成的。

示例

// Variables like henv not specified.
HDBC      hdbc;
DBINT      nRowsProcessed;

// Application initiation, get an ODBC environment handle, allocate the
// hdbc, and so on.
... 

// Enable bulk copy prior to connecting on allocated hdbc.
SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP, (SQLPOINTER) SQL_BCP_ON,
   SQL_IS_INTEGER);

// Connect to the data source, return on error.
if (!SQL_SUCCEEDED(SQLConnect(hdbc, _T("myDSN"), SQL_NTS,
   _T("myUser"), SQL_NTS, _T("myPwd"), SQL_NTS)))
   {
   // Raise error and return.
   return;
   }

// Initialize bulk copy. 
if (bcp_init(hdbc, _T("myTable"), _T("myData.csv"),
   _T("myErrors"),    DB_IN) == FAIL)
   {
   // Raise error and return.
   return;
   }

if (bcp_readfmt(hdbc, _T("myFmtFile.fmt")) == FAIL)
   {
   // Raise error and return.
   return;
   }

if (bcp_exec(hdbc, &nRowsProcessed) == SUCCEED)
   {
   cout << nRowsProcessed << " rows copied to SQL Server\n";
   }

// Carry on.

请参阅

参考

大容量复制函数