<!-- This comment will put IE 6, 7 and 8 in quirks mode --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>FreeTDS API: /home/jklowden/releases/freetds-0.91/src/dblib/bcp.c File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javaScript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body onload='searchBox.OnSelectItem(0);'> <!-- Generated by Doxygen 1.6.3 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <img id="MSearchSelect" src="search/search.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </div> </li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>File Members</span></a></li> </ul> </div> </div> <div class="contents"> <h1>/home/jklowden/releases/freetds-0.91/src/dblib/bcp.c File Reference</h1> <p>Implementation of <code>db-lib</code> bulk copy functions. <a href="#_details">More...</a></p> <code>#include <stdarg.h></code><br/> <code>#include <stdio.h></code><br/> <code>#include <assert.h></code><br/> <code>#include <<a class="el" href="a00159_source.html">tds.h</a>></code><br/> <code>#include <tdsiconv.h></code><br/> <code>#include <tdsconvert.h></code><br/> <code>#include <replacements.h></code><br/> <code>#include <sybfront.h></code><br/> <code>#include <<a class="el" href="a00156_source.html">sybdb.h</a>></code><br/> <code>#include <syberror.h></code><br/> <code>#include <dblib.h></code><br/> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7fe12c6938ac39e706a7fe5d204becb5"></a><!-- doxytag: member="bcp.c::fseeko" ref="a7fe12c6938ac39e706a7fe5d204becb5" args="(f, o, w)" --> #define </td><td class="memItemRight" valign="bottom"><b>fseeko</b>(f, o, w) fseek(f,o,w)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a166933163821a02b19c87befb8c752b0"></a><!-- doxytag: member="bcp.c::ftello" ref="a166933163821a02b19c87befb8c752b0" args="(f)" --> #define </td><td class="memItemRight" valign="bottom"><b>ftello</b>(f) ftell(f)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a752642bb991c6c0ed0766b5ff589c578"></a><!-- doxytag: member="bcp.c::HOST_COL_CONV_ERROR" ref="a752642bb991c6c0ed0766b5ff589c578" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>HOST_COL_CONV_ERROR</b> 1</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55e8e20b98d68066f9ade04a6211ef8a"></a><!-- doxytag: member="bcp.c::HOST_COL_NULL_ERROR" ref="a55e8e20b98d68066f9ade04a6211ef8a" args="" --> #define </td><td class="memItemRight" valign="bottom"><b>HOST_COL_NULL_ERROR</b> 2</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa99ec4acc4ecb2dc3c2d05da15d0e3f"></a><!-- doxytag: member="bcp.c::MAX" ref="afa99ec4acc4ecb2dc3c2d05da15d0e3f" args="(a, b)" --> #define </td><td class="memItemRight" valign="bottom"><b>MAX</b>(a, b) ( (a) > (b) ? (a) : (b) )</td></tr> <tr><td colspan="2"><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40defe83f98e793eca0860cfe55904e6"></a><!-- doxytag: member="bcp.c::offset_type" ref="a40defe83f98e793eca0860cfe55904e6" args="" --> typedef long </td><td class="memItemRight" valign="bottom"><b>offset_type</b></td></tr> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36400fd49c8585010dc89b00bd1a789e"></a><!-- doxytag: member="bcp.c::_bcp_check_eof" ref="a36400fd49c8585010dc89b00bd1a789e" args="(DBPROCESS *dbproc, FILE *file, int icol)" --> static RETCODE </td><td class="memItemRight" valign="bottom"><b>_bcp_check_eof</b> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, FILE *file, int icol)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html#ga7370f1223f13510d6b33e98f2de09fb5">_bcp_exec_in</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, DBINT *rows_copied)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html#gae67546338cb9542a4902aa914f57f314">_bcp_exec_out</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, DBINT *rows_copied)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html#gaf4e2c59203f2af21bb2803ef4a69bfa8">_bcp_fgets</a> (char *buffer, int size, FILE *f)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html#gacf69ac4cbe8e3c3e6ea665e31e5e85b8">_bcp_free_columns</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html#gaa134c1c3ccc4326e693adb8357272f1d">_bcp_free_storage</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html#ga452c66e8e42628176ef00842c20c2c3f">_bcp_get_col_data</a> (<a class="el" href="a00090.html">TDSBCPINFO</a> *bcpinfo, <a class="el" href="a00092.html">TDSCOLUMN</a> *bindcol, int offset)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">For a bcp in from program variables, get the data from the host variable. <a href="a00289.html#ga452c66e8e42628176ef00842c20c2c3f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html#gac82ffc5c1f71cbf453d81d1057004f1e">_bcp_get_term_var</a> (BYTE *pdata, BYTE *term, int term_len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the data for bcp-in from program variables, where the program data have been identified as character terminated, This is a low-level, internal function. <a href="a00289.html#gac82ffc5c1f71cbf453d81d1057004f1e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static offset_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html#ga5bdfff94543faf573c5d8b9a27d0098d">_bcp_measure_terminated_field</a> (FILE *hostfile, BYTE *terminator, int term_len)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea91f6b960e7cea36081349db6119213"></a><!-- doxytag: member="bcp.c::_bcp_no_get_col_data" ref="aea91f6b960e7cea36081349db6119213" args="(TDSBCPINFO *bcpinfo, TDSCOLUMN *bindcol, int offset)" --> static int </td><td class="memItemRight" valign="bottom"><b>_bcp_no_get_col_data</b> (<a class="el" href="a00090.html">TDSBCPINFO</a> *bcpinfo, <a class="el" href="a00092.html">TDSCOLUMN</a> *bindcol, int offset)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4aecf840771c827863c785a91e9f8a53"></a><!-- doxytag: member="bcp.c::_bcp_null_error" ref="a4aecf840771c827863c785a91e9f8a53" args="(TDSBCPINFO *bcpinfo, int index, int offset)" --> static void </td><td class="memItemRight" valign="bottom"><b>_bcp_null_error</b> (<a class="el" href="a00090.html">TDSBCPINFO</a> *bcpinfo, int index, int offset)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html#ga1c0c494e4b75fd88176a3ae4b5acc2c5">_bcp_read_hostfile</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, FILE *hostfile, int *row_error)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html#gafc23d62bc86b38fb757e3ac4aadca0a4">_bcp_readfmt_colinfo</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, char *buf, <a class="el" href="a00045.html">BCP_HOSTCOLINFO</a> *ci)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">DBINT </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gaa23f8e5c7f437a94746c90292dd1cb01">bcp_batch</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Commit a set of rows to the table. <a href="a00288.html#gaa23f8e5c7f437a94746c90292dd1cb01"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gaf08c7f8e74ddf23b83800bc378821b35">bcp_bind</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, BYTE *terminator, int termlen, int vartype, int table_column)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Bind a program host variable to a database column. <a href="a00288.html#gaf08c7f8e74ddf23b83800bc378821b35"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga0ed03c69e698336d015bb315ad755fd5">bcp_colfmt</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, int host_colnum, int host_type, int host_prefixlen, DBINT host_collen, const BYTE *host_term, int host_termlen, int table_colnum)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specify the format of a datafile prior to writing to a table. <a href="a00288.html#ga0ed03c69e698336d015bb315ad755fd5"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gaf13b2bb12b4200752718f3a3face3870">bcp_colfmt_ps</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, int host_colnum, int host_type, int host_prefixlen, DBINT host_collen, BYTE *host_term, int host_termlen, int table_colnum, <a class="el" href="a00064.html">DBTYPEINFO</a> *typeinfo)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specify the format of a host file for bulk copy purposes, with precision and scale support for numeric and decimal columns. <a href="a00288.html#gaf13b2bb12b4200752718f3a3face3870"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gae41d196a22c544d66212dacc5b555791">bcp_collen</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, DBINT varlen, int table_column)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the length of a host variable to be written to a table. <a href="a00288.html#gae41d196a22c544d66212dacc5b555791"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga6498235e4ef8e41ea43b01494b28998d">bcp_colptr</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, BYTE *colptr, int table_column)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Override <a class="el" href="a00288.html#gaf08c7f8e74ddf23b83800bc378821b35" title="Bind a program host variable to a database column.">bcp_bind()</a> by pointing to a different host variable. <a href="a00288.html#ga6498235e4ef8e41ea43b01494b28998d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga330b9f1028f856a9eec5115550bcb4f7">bcp_columns</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, int host_colcount)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Indicate how many columns are to be found in the datafile. <a href="a00288.html#ga330b9f1028f856a9eec5115550bcb4f7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga244547855b41788fa3a67756956fbc81">bcp_control</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, int field, DBINT value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set BCP options for uploading a datafile. <a href="a00288.html#ga244547855b41788fa3a67756956fbc81"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">DBINT </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga8b85f79f53a62ac7a728fe626d609b65">bcp_done</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Conclude the transfer of data from program variables. <a href="a00288.html#ga8b85f79f53a62ac7a728fe626d609b65"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga7a184158b27a50f713e9cfae3b746209">bcp_exec</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, DBINT *rows_copied)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Write a datafile to a table. <a href="a00288.html#ga7a184158b27a50f713e9cfae3b746209"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0833443ba646bc07c0960370b923930"></a><!-- doxytag: member="bcp.c::bcp_getbatchsize" ref="aa0833443ba646bc07c0960370b923930" args="(DBPROCESS *dbproc)" --> int </td><td class="memItemRight" valign="bottom"><b>bcp_getbatchsize</b> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">DBBOOL </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga220f6b043602da1028f98dacb2fd00c0">bcp_getl</a> (<a class="el" href="a00070.html">LOGINREC</a> *login)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">See if <a class="el" href="a00285.html#ga5a626d228e82be0af8449d2b8c278241" title="Enable (or prevent) bcp operations for connections made with a login.">BCP_SETL()</a> was used to set the <a class="el" href="a00070.html">LOGINREC</a> for BCP work. <a href="a00288.html#ga220f6b043602da1028f98dacb2fd00c0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gada8e987c4a6225b9276c05ba3a4f47a0">bcp_init</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, const char *tblname, const char *hfile, const char *errfile, int direction)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Prepare for bulk copy operation on a table. <a href="a00288.html#gada8e987c4a6225b9276c05ba3a4f47a0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gafec3feb5bac1cb33545ba01efb0a67b8">bcp_options</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, int option, BYTE *value, int valuelen)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set "hints" for uploading a file. <a href="a00288.html#gafec3feb5bac1cb33545ba01efb0a67b8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga963c5e38bca7668afc57f5cc123d10fb">bcp_readfmt</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, const char filename[])</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Read a format definition file. <a href="a00288.html#ga963c5e38bca7668afc57f5cc123d10fb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">RETCODE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gaf1130ac97f6af55e86ec70b0aa4f5b40">bcp_sendrow</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Write data in host variables to the table. <a href="a00288.html#gaf1130ac97f6af55e86ec70b0aa4f5b40"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15cd3cd88aa83e739d861f390e7c3cba"></a><!-- doxytag: member="bcp.c::init_hostfile_columns" ref="a15cd3cd88aa83e739d861f390e7c3cba" args="(DBPROCESS *dbproc)" --> static void </td><td class="memItemRight" valign="bottom"><b>init_hostfile_columns</b> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html#ga4d5be57b25a0654e2170fd656dc35489">rtrim</a> (char *str, int len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">trim a string of trailing blanks <a href="a00289.html#ga4d5be57b25a0654e2170fd656dc35489"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea5b2646dca24ca1acb47672275bd6e1"></a><!-- doxytag: member="bcp.c::TDS_RCSID" ref="aea5b2646dca24ca1acb47672275bd6e1" args="(var,"$Id: bcp.c,v 1.197.2.8 2011/06/07 08:52:29 freddy77 Exp $")" --> </td><td class="memItemRight" valign="bottom"><b>TDS_RCSID</b> (var,"$Id: bcp.c,v 1.197.2.8 2011/06/07 08:52:29 freddy77 Exp $")</td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Implementation of <code>db-lib</code> bulk copy functions. </p> </div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Aug 17 22:22:31 2011 for FreeTDS API by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>