|
FreeTDS API
|
Handle bulk copy. More...
#include <config.h>#include <assert.h>#include <freetds/tds.h>#include <freetds/checks.h>#include <freetds/bytes.h>#include <freetds/iconv.h>#include <freetds/stream.h>#include <freetds/convert.h>#include <freetds/utils/string.h>#include <freetds/replacements.h>Classes | |
| struct | tds_file_stream |
| input stream to read a file More... | |
| struct | tds_pbcb |
| Holds clause buffer. More... | |
Macros | |
| #define | BULKCOL(n) |
Typedefs | |
| typedef struct tds_file_stream | TDSFILESTREAM |
| input stream to read a file | |
| typedef struct tds_pbcb | TDSPBCB |
| Holds clause buffer. | |
Enumerations | |
| enum | { BULKCOL_colcnt , BULKCOL_colid , BULKCOL_type , BULKCOL_length , BULKCOL_status , BULKCOL_offset , BULKCOL_COUNT , BULKCOL_ALL = (1 << BULKCOL_COUNT) -1 } |
Functions | |
| static int | tds5_bcp_add_fixed_columns (TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset, unsigned char *rowbuffer, int start) |
| Add fixed size columns to the row. | |
| static int | tds5_bcp_add_variable_columns (TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset, TDS_UCHAR *rowbuffer, int start, int *pncols) |
| Add variable size columns to the row. | |
| static int | tds5_bulk_insert_column (const char *name) |
| static TDSRET | tds5_process_insert_bulk_reply (TDSSOCKET *tds, TDSBCPINFO *bcpinfo) |
| static TDSRET | tds5_send_record (TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset) |
| static void | tds5_swap_data (const TDSCOLUMN *col TDS_UNUSED, void *p TDS_UNUSED) |
| static TDSRET | tds7_bcp_send_colmetadata (TDSSOCKET *tds, TDSBCPINFO *bcpinfo) |
| Send BCP metadata to server. | |
| static TDSRET | tds7_build_bulk_insert_stmt (TDSSOCKET *tds, TDSPBCB *clause, TDSCOLUMN *bcpcol, int first) |
| Help to build query to be sent to server. | |
| static TDSRET | tds7_send_record (TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, int offset) |
| TDSRET | tds_bcp_done (TDSSOCKET *tds, int *rows_copied) |
| Tell we finished sending BCP data to server. | |
| TDSRET | tds_bcp_fread (TDSSOCKET *tds, TDSICONV *char_conv, FILE *stream, const char *terminator, size_t term_len, char **outbuf, size_t *outbytes) |
| Read a data file, passing the data through iconv(). | |
| TDSRET | tds_bcp_init (TDSSOCKET *tds, TDSBCPINFO *bcpinfo) |
| Initialize BCP information. | |
| static void | tds_bcp_row_free (TDSRESULTINFO *result, unsigned char *row TDS_UNUSED) |
| Free row data allocated in the result set. | |
| static void | tds_bcp_row_free (TDSRESULTINFO *result, unsigned char *row) |
| TDSRET | tds_bcp_send_record (TDSSOCKET *tds, TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset) |
| Send one row of data to server. | |
| TDSRET | tds_bcp_start (TDSSOCKET *tds, TDSBCPINFO *bcpinfo) |
| Start sending BCP data to server. | |
| TDSRET | tds_bcp_start_copy_in (TDSSOCKET *tds, TDSBCPINFO *bcpinfo) |
| Start bulk copy to server. | |
| static TDSRET | tds_bcp_start_insert_stmt (TDSSOCKET *tds, TDSBCPINFO *bcpinfo) |
| Prepare the query to be sent to server to request BCP information. | |
| static int | tds_file_stream_read (TDSINSTREAM *stream, void *ptr, size_t len) |
| Reads a chunk of data from file stream checking for terminator. | |
| TDSRET | tds_writetext_continue (TDSSOCKET *tds, const TDS_UCHAR *text, TDS_UINT size) |
| Send some data in the writetext request started by tds_writetext_start. | |
| TDSRET | tds_writetext_end (TDSSOCKET *tds) |
| Finish sending writetext data. | |
| TDSRET | tds_writetext_start (TDSSOCKET *tds, const char *objname, const char *textptr, const char *timestamp, int with_log, TDS_UINT size) |
| Start writing writetext request. | |
Handle bulk copy.
| #define BULKCOL | ( | n | ) |
|
static |
Add fixed size columns to the row.
| bcpinfo | BCP information |
| get_col_data | function to call to retrieve data to be sent |
| ignored | function to call if we try to send NULL if not allowed (not used) |
| offset | passed to get_col_data and null_error to specify the row to get |
| rowbuffer | row buffer to write to |
| start | row buffer last end position |
|
static |
Add variable size columns to the row.
| bcpinfo | BCP information already prepared |
| get_col_data | function to call to retrieve data to be sent |
| null_error | function to call if we try to send NULL if not allowed |
| offset | passed to get_col_data and null_error to specify the row to get |
| rowbuffer | The row image that will be sent to the server. |
| start | Where to begin copying data into the rowbuffer. |
| pncols | Address of output variable holding the count of columns added to the rowbuffer. |
|
static |
Send BCP metadata to server.
Only for TDS 7.0+.
| tds | A pointer to the TDSSOCKET structure managing a client/server operation. |
| bcpinfo | BCP information |
|
static |
Help to build query to be sent to server.
Append column declaration to the query. Only for TDS 7.0+.
| tds | A pointer to the TDSSOCKET structure managing a client/server operation. | |
| [out] | clause | output string |
| bcpcol | column to append | |
| first | true if column is the first |
| TDSRET tds_bcp_done | ( | TDSSOCKET * | tds, |
| int * | rows_copied | ||
| ) |
Tell we finished sending BCP data to server.
| tds | A pointer to the TDSSOCKET structure managing a client/server operation. | |
| [out] | rows_copied | number of rows copied to server |
| TDSRET tds_bcp_fread | ( | TDSSOCKET * | tds, |
| TDSICONV * | char_conv, | ||
| FILE * | stream, | ||
| const char * | terminator, | ||
| size_t | term_len, | ||
| char ** | outbuf, | ||
| size_t * | outbytes | ||
| ) |
Read a data file, passing the data through iconv().
| TDS_SUCCESS | success |
| TDS_FAIL | error reading the column |
| TDS_NO_MORE_RESULTS | end of file detected |
| TDSRET tds_bcp_init | ( | TDSSOCKET * | tds, |
| TDSBCPINFO * | bcpinfo | ||
| ) |
Initialize BCP information.
Query structure of the table to server.
| tds | A pointer to the TDSSOCKET structure managing a client/server operation. |
| bcpinfo | BCP information to initialize. Structure should be allocate and table name and direction should be already set. |
| TDSRET tds_bcp_send_record | ( | TDSSOCKET * | tds, |
| TDSBCPINFO * | bcpinfo, | ||
| tds_bcp_get_col_data | get_col_data, | ||
| tds_bcp_null_error | null_error, | ||
| int | offset | ||
| ) |
Send one row of data to server.
| tds | A pointer to the TDSSOCKET structure managing a client/server operation. |
| bcpinfo | BCP information |
| get_col_data | function to call to retrieve data to be sent |
| ignored | function to call if we try to send NULL if not allowed (not used) |
| offset | passed to get_col_data and null_error to specify the row to get |
| TDSRET tds_bcp_start | ( | TDSSOCKET * | tds, |
| TDSBCPINFO * | bcpinfo | ||
| ) |
Start sending BCP data to server.
Initialize stream to accept data.
| tds | A pointer to the TDSSOCKET structure managing a client/server operation. |
| bcpinfo | BCP information already prepared |
| TDSRET tds_bcp_start_copy_in | ( | TDSSOCKET * | tds, |
| TDSBCPINFO * | bcpinfo | ||
| ) |
Start bulk copy to server.
| tds | A pointer to the TDSSOCKET structure managing a client/server operation. |
| bcpinfo | BCP information already prepared |
|
static |
Prepare the query to be sent to server to request BCP information.
| tds | A pointer to the TDSSOCKET structure managing a client/server operation. |
| bcpinfo | BCP information |
|
static |
Reads a chunk of data from file stream checking for terminator.
| stream | file stream |
| ptr | buffer where to read data |
| len | length of buffer |
| TDSRET tds_writetext_continue | ( | TDSSOCKET * | tds, |
| const TDS_UCHAR * | text, | ||
| TDS_UINT | size | ||
| ) |
Send some data in the writetext request started by tds_writetext_start.
You should write in total (with multiple calls to this function) all bytes declared calling tds_writetext_start.
| tds | A pointer to the TDSSOCKET structure managing a client/server operation. |
| text | data to write |
| size | data size in bytes |
| TDSRET tds_writetext_end | ( | TDSSOCKET * | tds | ) |
Finish sending writetext data.
| tds | A pointer to the TDSSOCKET structure managing a client/server operation. |
| TDSRET tds_writetext_start | ( | TDSSOCKET * | tds, |
| const char * | objname, | ||
| const char * | textptr, | ||
| const char * | timestamp, | ||
| int | with_log, | ||
| TDS_UINT | size | ||
| ) |
Start writing writetext request.
This request start a bulk session.
| tds | A pointer to the TDSSOCKET structure managing a client/server operation. |
| objname | table name |
| textptr | TEXTPTR (see sql documentation) |
| timestamp | data timestamp |
| with_log | is log is enabled during insert |
| size | bytes to be inserted |