Example #1
0
/* 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;
}