27.8.7.69 mysql_set_local_infile_handler()

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);

说明

此 function 安装在加载数据本地 statements 执行期间使用的回调。它使 application 程序能够控制本地(client-side)数据文件的读取。 arguments 是连接处理程序,一组指向回调函数的指针,以及指向回调可用于共享信息的数据区域的指针。

要使用mysql_set_local_infile_handler(),您必须编写以下回调函数:

int
local_infile_init(void **ptr, const char *filename, void *userdata);

初始化 function。这被称为一次进行必要的设置,打开数据文件,分配数据结构等等。第一个void**参数是指向指针的指针。您可以将指针(即*ptr)设置为 value,该值将传递给其他每个回调(作为void*)。回调可以使用此 pointed-to value 来维护 state 信息。 userdata参数与传递给mysql_set_local_infile_handler()的 value 相同。

初始化 function return 为零表示成功,非零表示错误。

int
local_infile_read(void *ptr, char *buf, unsigned int buf_len);

data-reading 功能。重复调用此方法以读取数据文件。 buf指向存储读取数据的缓冲区,buf_len是回调可以在缓冲区中读取和存储的最大字节数。 (它可以读取更少的字节,但不应该读取 more.)

return value 是读取的字节数,或者当无法读取更多数据时为零(这表示 EOF)。 如果发生错误,则返回小于零的 value。

void
local_infile_end(void *ptr)

终止功能。在local_infile_read()返回零(EOF)或错误后调用此方法。在此 function 中,释放由local_infile_init()分配的任何 memory 并执行任何其他必要的清理。即使初始化 function 返回错误,也会调用它。

int
local_infile_error(void *ptr,
                   char *error_msg,
                   unsigned int error_msg_len);

error-handling 功能。如果您的任何其他函数返回错误,则调用此方法以获取文本错误消息以回显给用户。 error_msg指向写入消息的缓冲区,error_msg_len是缓冲区的长度。将消息写为 null-terminated string,最多error_msg_len -1 个字节 long。

return value 是错误编号。

通常,其他回调存储ptr指向的数据结构中的错误消息,以便local_infile_error()可以将消息从那里复制到error_msg

在 C code 中调用mysql_set_local_infile_handler()并将指针传递给回调函数后,可以发出加载数据本地语句(对于 example,使用mysql_query())。 client library 会自动调用您的回调。 加载数据本地中指定的文件 name 将作为第二个参数传递给local_infile_init()回调。

Return 值

没有。

错误

没有。

Updated at: 7 months ago
mysql_set_local_infile_default()Table of contentmysql_set_server_option()