FreeTDS API: src/dblib/bcp.c File Reference

- Main Page
- Modules
- Classes
- Files
- Related Pages

# src/dblib/bcp.c File Reference

Implementation of `db-lib` bulk copy functions. More...

`#include <stdarg.h>`
`#include <stdio.h>`
`#include <assert.h>`
`#include "tds.h"`
`#include "tdsiconv.h"`
`#include "tdsconvert.h"`
`#include "replacements.h"`
`#include "sybfront.h"`
`#include "sybdb.h"`
`#include "syberror.h"`
`#include "dblib.h"`

## Classes
struct | _pbcb
## Defines
#define | fseeko(f, o, w) fseek(f,o,w)
#define | ftello(f) ftell(f)
#define | HOST_COL_CONV_ERROR 1
#define | HOST_COL_NULL_ERROR 2
#define | MAX(a, b) ( (a) > (b) ? (a) : (b) )
## Typedefs
typedef long | offset_type
typedef struct _pbcb | TDS_PBCB
## Enumerations
enum | BEHAVIOUR { BCP_REC_NOFETCH_DATA = 0, BCP_REC_FETCH_DATA = 1 }
## Functions
static int | _bcp_add_fixed_columns (DBPROCESS *dbproc, BEHAVIOUR behaviour, BYTE *rowbuffer, int start)
| Add fixed size columns to the row.
static int | _bcp_add_variable_columns (DBPROCESS *dbproc, BEHAVIOUR behaviour, BYTE *rowbuffer, int start, int *pncols)
  | Parameters:
  | dbproc | contains all information needed by db-lib to manage communications with the server.
static RETCODE | _bcp_build_bulk_insert_stmt (TDSSOCKET *tds, TDS_PBCB *clause, TDSCOLUMN *bcpcol, int first)
  | Parameters:
  | tds |
static RETCODE | _bcp_check_eof (DBPROCESS *dbproc, FILE *file, int icol)
static RETCODE | _bcp_exec_in (DBPROCESS *dbproc, DBINT *rows_copied)
  | Parameters:
  | dbproc | contains all information needed by db-lib to manage communications with the server.
static RETCODE | _bcp_exec_out (DBPROCESS *dbproc, DBINT *rows_copied)
  | Parameters:
  | dbproc | contains all information needed by db-lib to manage communications with the server.
static char * | _bcp_fgets (char *buffer, size_t size, FILE *f)
  | Parameters:
  | buffer |
static void | _bcp_free_columns (DBPROCESS *dbproc)
  | Parameters:
  | dbproc | contains all information needed by db-lib to manage communications with the server.
static void | _bcp_free_storage (DBPROCESS *dbproc)
  | Parameters:
  | dbproc | contains all information needed by db-lib to manage communications with the server.
static RETCODE | _bcp_get_col_data (DBPROCESS *dbproc, TDSCOLUMN *bindcol)
| For a bcp in from program variables, get the data from the host variable.
static RETCODE | _bcp_get_term_var (BYTE *pdata, BYTE *term, int term_len)
| 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.
static offset_type | _bcp_measure_terminated_field (FILE *hostfile, BYTE *terminator, int term_len)
  | Parameters:
  | hostfile |
static RETCODE | _bcp_read_hostfile (DBPROCESS *dbproc, FILE *hostfile, int *row_error)
  | Parameters:
  | dbproc | contains all information needed by db-lib to manage communications with the server.
static int | _bcp_readfmt_colinfo (DBPROCESS *dbproc, char *buf, BCP_HOSTCOLINFO *ci)
  | Parameters:
  | dbproc | contains all information needed by db-lib to manage communications with the server.
static RETCODE | _bcp_send_bcp_record (DBPROCESS *dbproc, BEHAVIOUR behaviour)
  | Parameters:
  | dbproc | contains all information needed by db-lib to manage communications with the server.
static RETCODE | _bcp_send_colmetadata (DBPROCESS *dbproc)
  | Parameters:
  | dbproc | contains all information needed by db-lib to manage communications with the server.
static RETCODE | _bcp_start_copy_in (DBPROCESS *dbproc)
  | Parameters:
  | dbproc | contains all information needed by db-lib to manage communications with the server.
static RETCODE | _bcp_start_new_batch (DBPROCESS *dbproc)
  | Parameters:
  | dbproc | contains all information needed by db-lib to manage communications with the server.
DBINT | bcp_batch (DBPROCESS *dbproc)
| Commit a set of rows to the table.
RETCODE | bcp_bind (DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, BYTE *terminator, int termlen, int vartype, int table_column)
| Bind a program host variable to a database column.
RETCODE | bcp_colfmt (DBPROCESS *dbproc, int host_colnum, int host_type, int host_prefixlen, DBINT host_collen, const BYTE *host_term, int host_termlen, int table_colnum)
| Specify the format of a datafile prior to writing to a table.
RETCODE | bcp_colfmt_ps (DBPROCESS *dbproc, int host_colnum, int host_type, int host_prefixlen, DBINT host_collen, BYTE *host_term, int host_termlen, int table_colnum, DBTYPEINFO *typeinfo)
| Specify the format of a host file for bulk copy purposes, with precision and scale support for numeric and decimal columns.
RETCODE | bcp_collen (DBPROCESS *dbproc, DBINT varlen, int table_column)
| Set the length of a host variable to be written to a table.
RETCODE | bcp_colptr (DBPROCESS *dbproc, BYTE *colptr, int table_column)
| Override bcp_bind() by pointing to a different host variable.
RETCODE | bcp_columns (DBPROCESS *dbproc, int host_colcount)
| Indicate how many columns are to be found in the datafile.
RETCODE | bcp_control (DBPROCESS *dbproc, int field, DBINT value)
| Set BCP options for uploading a datafile.
DBINT | bcp_done (DBPROCESS *dbproc)
| Conclude the transfer of data from program variables.
RETCODE | bcp_exec (DBPROCESS *dbproc, DBINT *rows_copied)
| Write a datafile to a table.
int | bcp_getbatchsize (DBPROCESS *dbproc)
DBBOOL | bcp_getl (LOGINREC *login)
| See if BCP_SETL() was used to set the LOGINREC for BCP work.
RETCODE | bcp_init (DBPROCESS *dbproc, const char *tblname, const char *hfile, const char *errfile, int direction)
| Prepare for bulk copy operation on a table.
RETCODE | bcp_moretext (DBPROCESS *dbproc, DBINT size, BYTE *text)
| Write some text or image data to the server.
RETCODE | bcp_options (DBPROCESS *dbproc, int option, BYTE *value, int valuelen)
| Set "hints" for uploading a file.
RETCODE | bcp_readfmt (DBPROCESS *dbproc, char *filename)
| Read a format definition file.
static void | bcp_row_free (TDSRESULTINFO *result, unsigned char *row)
RETCODE | bcp_sendrow (DBPROCESS *dbproc)
| Write data in host variables to the table.
RETCODE | bcp_writefmt (DBPROCESS *dbproc, char *filename)
| Write a format definition file.
static int | rtrim (char *str, int len)
| trim a string of trailing blanks
| TDS_RCSID (var,"$Id: bcp.c,v 1.171.2.1 2008/05/26 12:49:56 freddy77 Exp $")

## Detailed Description

Implementation of `db-lib` bulk copy functions.