/* Tell MySQL Client to use our own local_infile functions. * This is both due to bugginess in the default handlers, * and to improve the Rubyness of the handlers here. */ void mysql2_set_local_infile(MYSQL *mysql, void *userdata) { mysql_set_local_infile_handler(mysql, mysql2_local_infile_init, mysql2_local_infile_read, mysql2_local_infile_end, mysql2_local_infile_error, userdata); }
int main(int argc, char **argv) { MYSQL *mysql = NULL; int opt_local_infile = 1; int stat; mysql = mysql_init(mysql); if (!mysql) { puts("Init faild, out of memory?"); return EXIT_FAILURE; } mysql_options(mysql, MYSQL_OPT_LOCAL_INFILE, (char*) &opt_local_infile); if (!mysql_real_connect(mysql, /* MYSQL structure to use */ MYSQL_HOST, /* server hostname or IP address */ MYSQL_USER, /* mysql user */ MYSQL_PWD, /* password */ MYSQL_DB, /* default database to use, NULL for none */ 0, /* port number, 0 for default */ NULL, /* socket file or named pipe name */ 0 /* client flags */ )) { fprintf(stderr, "Connect failed: %s\n", mysql_error(mysql)); exit(EXIT_FAILURE); } else { puts("Connect OK\n"); } mysql_set_local_infile_handler(mysql, local_infile_init, local_infile_read, local_infile_end, local_infile_error, NULL); stat = mysql_query(mysql, "LOAD DATA LOCAL INFILE '-' INTO TABLE test.foo FIELDS TERMINATED BY ','"); if (stat) { fprintf(stderr, "stat: %d %d %s\n", stat, mysql_errno(mysql), mysql_error(mysql)); } mysql_close(mysql); return EXIT_SUCCESS; }