mysql_set_local_infile_handler() - mysql/mysql.h
This function installs callbacks to be used during the execution
of LOAD DATA LOCAL
INFILE statements. It enables application programs to
exert control over local (client-side) data file reading. The
arguments are the connection handler, a set of pointers to
callback functions, and a pointer to a data area that the
callbacks can use to share information.LOAD DATA LOCAL
INFILELOAD DATA LOCAL
INFILETo use
mysql_set_local_infile_handler(),
you must write the following callback functions:mysql_set_local_infile_handler()mysql_set_local_infile_handler()int
local_infile_init(void **ptr, const char *filename, void *userdata);The initialization function. This is called once to do any setup
necessary, open the data file, allocate data structures, and so
forth. The first void** argument is a pointer
to a pointer. You can set the pointer (that is,
*ptr) to a value that will be passed to each
of the other callbacks (as a void*). The
callbacks can use this pointed-to value to maintain state
information. The userdata argument is the
same value that is passed to
mysql_set_local_infile_handler().void***ptrvoid*userdatamysql_set_local_infile_handler()mysql_set_local_infile_handler()Make the initialization function return zero for success,
nonzero for an error.int
local_infile_read(void *ptr, char *buf, unsigned int buf_len);The data-reading function. This is called repeatedly to read the
data file. buf points to the buffer where the
read data is stored, and buf_len is the
maximum number of bytes that the callback can read and store in
the buffer. (It can read fewer bytes, but should not read more.)bufbuf_lenThe return value is the number of bytes read, or zero when no
more data could be read (this indicates EOF). Return a value
less than zero if an error occurs.void
local_infile_end(void *ptr)The termination function. This is called once after
local_infile_read() has returned zero (EOF)
or an error. Within this function, deallocate any memory
allocated by local_infile_init() and perform
any other cleanup necessary. It is invoked even if the
initialization function returns an error.local_infile_read()local_infile_init()int
local_infile_error(void *ptr,
char *error_msg,
unsigned int error_msg_len);The error-handling function. This is called to get a textual
error message to return to the user in case any of your other
functions returns an error. error_msg points
to the buffer into which the message is written, and
error_msg_len is the length of the buffer.
Write the message as a null-terminated string, at most
error_msg_len−1 bytes long.error_msgerror_msg_lenerror_msg_lenThe return value is the error number.Typically, the other callbacks store the error message in the
data structure pointed to by ptr, so that
local_infile_error() can copy the message
from there into error_msg.ptrlocal_infile_error()error_msgAfter calling
mysql_set_local_infile_handler()
in your C code and passing pointers to your callback functions,
you can then issue a
LOAD DATA LOCAL
INFILE statement (for example, by using
mysql_query()). The client
library automatically invokes your callbacks. The file name
specified in LOAD
DATA LOCAL INFILE will be passed as the second
parameter to the local_infile_init()
callback.mysql_set_local_infile_handler()mysql_set_local_infile_handler()LOAD DATA LOCAL
INFILELOAD DATA LOCAL
INFILEmysql_query()mysql_query()LOAD
DATA LOCAL INFILELOAD
DATA LOCAL INFILElocal_infile_init()
Syntax
void mysql_set_local_infile_handler(MYSQL *mysql, int
(*local_infile_init)(void **, const char *, void *), int
(*local_infile_read)(void *, char *, unsigned int), void
(*local_infile_end)(void *), int (*local_infile_error)(void *,
char*, unsigned int), void *userdata);
Example
int
local_infile_init(void **ptr, const char *filename, void *userdata);
Output / Return Value
None.
Limitations
Alternatives / See Also
Reference