diff options
author | Pav Lucistnik <pav@FreeBSD.org> | 2005-09-17 16:28:44 +0000 |
---|---|---|
committer | Pav Lucistnik <pav@FreeBSD.org> | 2005-09-17 16:28:44 +0000 |
commit | 76caa61312734776e5412fc04b24740e9ca4be30 (patch) | |
tree | 2a101b745e8329a30206deaf9750e8e058bd0701 /databases/dbf2mysql | |
parent | 27f7a68e104304080df07b00e8ad9079b3cb3951 (diff) | |
download | ports-76caa61312734776e5412fc04b24740e9ca4be30.tar.gz ports-76caa61312734776e5412fc04b24740e9ca4be30.zip |
- Add -L option to enable fast local inserts
PR: ports/64305
Submitted by: Travis Whitton <twhitton@ppb-envlabs.com>
Approved by: maintainer timeout (jedgar; 1 year)
Obtained from: debian
Notes
Notes:
svn path=/head/; revision=143010
Diffstat (limited to 'databases/dbf2mysql')
-rw-r--r-- | databases/dbf2mysql/Makefile | 2 | ||||
-rw-r--r-- | databases/dbf2mysql/files/patch-ab | 163 |
2 files changed, 159 insertions, 6 deletions
diff --git a/databases/dbf2mysql/Makefile b/databases/dbf2mysql/Makefile index 486257b2b615..157e3dd34fb2 100644 --- a/databases/dbf2mysql/Makefile +++ b/databases/dbf2mysql/Makefile @@ -7,7 +7,7 @@ PORTNAME= dbf2mysql PORTVERSION= 1.14 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= databases MASTER_SITES= http://mysql.tsuren.net/Downloads/Contrib/ \ ftp://ftp.us.es/Mirror/www.mysql.org/Downloads/Contrib/ \ diff --git a/databases/dbf2mysql/files/patch-ab b/databases/dbf2mysql/files/patch-ab index c005452471e8..8dce31cac340 100644 --- a/databases/dbf2mysql/files/patch-ab +++ b/databases/dbf2mysql/files/patch-ab @@ -1,6 +1,19 @@ --- dbf2mysql.c.orig Fri Jul 7 04:55:02 2000 -+++ dbf2mysql.c Wed Feb 7 13:19:42 2001 -@@ -17,8 +17,13 @@ ++++ dbf2mysql.c Mon Mar 15 16:46:17 2004 +@@ -9,6 +9,12 @@ + Fixxed Quick mode insert for blank Numeric fields + Modified to use -x flag to add _rec and _timestamp fields to start of record. + ( only those lines immediately affect by if(express) (and getopt) ) ++ ++ Bart Friederichs (bart@friesoft.nl) feb 2003 ++ Added MYSQL_OPT_LOCAL_INFILE to options for compatibility with ++ MySQL >3.23.49 and >4.0.2, new option -L enables it ++ Replaced mysql_connect with mysql_real_connect, SQLsock isn't used anymore ++ + */ + #include <stdio.h> + #include <fcntl.h> +@@ -17,10 +23,15 @@ #include <string.h> #include <ctype.h> #include <mysql.h> @@ -12,9 +25,21 @@ +#endif + int verbose=0, upper=0, lower=0, create=0, fieldlow=0, var_chars=1; - int express=0; +-int express=0; ++int express=0, enable_local=0; int null_fields=0, trim=0, quick=0; -@@ -319,7 +324,7 @@ + char primary[11]; + char *host = NULL; +@@ -79,7 +90,7 @@ + printf("dbf2mysql %s\n", VERSION); + printf("usage: dbf2mysql [-h hostname] [-d dbase] [-t table] [-p primary key]\n"); + printf(" [-o field[,field]] [-s oldname=newname[,oldname=newname]]\n"); +- printf(" [-i field[,field]] [-c] [-f] [-F] [-n] [-r] [-u|-l] \n"); ++ printf(" [-i field[,field]] [-c] [-f] [-F] [-n] [-r] [-u|-l] [-L]\n"); + printf(" [-v[v]] [-x] [-q] [-P password] [-U user] dbf-file\n"); + } + +@@ -319,7 +330,7 @@ /* Patched by GLC to fix quick mode Numeric fields */ void do_inserts(MYSQL *SQLsock, char *table, dbhead *dbh) { @@ -23,7 +48,7 @@ field *fields; char *query, *vpos, *pos; char str[257], *cvt = NULL, *s; -@@ -395,9 +400,17 @@ +@@ -395,9 +406,17 @@ strcat(query, "NULL,NULL,"); else /* if specified -q create file for 'LOAD DATA' */ { @@ -44,3 +69,131 @@ { fprintf (stderr, "Cannot open file '%s' for writing\n", datafile); return; +@@ -575,7 +594,7 @@ + } + if (mysql_query(SQLsock, query) == -1) { + fprintf(stderr, +- "Error sending LOAD DATA INFILE from file '%s'\n", datafile); ++ "Error sending LOAD DATA LOCAL INFILE from file '%s'\n", datafile); + fprintf(stderr, + "Detailed report: %s\n", + mysql_error(SQLsock)); +@@ -591,7 +610,7 @@ + int main(int argc, char **argv) + { + int i; +- MYSQL *SQLsock,mysql; ++ MYSQL mysql; + extern int optind; + extern char *optarg; + char *query; +@@ -599,7 +618,7 @@ + + primary[0] = '\0'; + +- while ((i = getopt(argc, argv, "xqfFrne:lucvi:h:p:d:t:s:o:U:P:")) != EOF) { ++ while ((i = getopt(argc, argv, "xqLfFrne:lucvi:h:p:d:t:s:o:U:P:")) != EOF) { + switch (i) { + case 'P': + pass = (char *)strdup(optarg); +@@ -666,6 +685,9 @@ + case 'o': + flist = (char *)strdup(optarg); + break; ++ case 'L': ++ enable_local = 1; ++ break; + case ':': + usage(); + printf("missing argument!\n"); +@@ -704,6 +726,7 @@ + table); + printf("Number of records: %ld\n", dbh->db_records); + } ++ + if (verbose > 1) { + printf("Name\t\t Length\tDisplay\t Type\n"); + printf("-------------------------------------\n"); +@@ -720,7 +743,20 @@ + printf("Making connection to MySQL-server\n"); + } + +- if (!(SQLsock = mysql_connect(&mysql,host,user,pass))) { ++ mysql_init(&mysql); ++ ++ if (enable_local == 1) { ++ if (verbose) { ++ printf("Setting MySQL option MYSQL_OPT_LOCAL_INFILE\n"); ++ } ++ ++ if (mysql_options(&mysql, MYSQL_OPT_LOCAL_INFILE, 0)) { ++ printf("Setting options failed."); ++ exit(1); ++ } ++ } ++ ++ if (!mysql_real_connect(&mysql,host,user,pass, dbase, 0, NULL,0)) { + fprintf(stderr, "Couldn't get a connection with the "); + fprintf(stderr, "designated host!\n"); + fprintf(stderr, "Detailed report: %s\n", mysql_error(&mysql)); +@@ -728,23 +764,12 @@ + exit(1); + } + +- if (verbose > 2) { +- printf("Selecting database '%s'\n", dbase); +- } +- +- if ((mysql_select_db(SQLsock, dbase)) == -1) { +- fprintf(stderr, "Couldn't select database %s.\n", dbase); +- fprintf(stderr, "Detailed report: %s\n", mysql_error(SQLsock)); +- mysql_close(SQLsock); +- dbf_close(&dbh); +- exit(1); +- } + /* Substitute field names */ + do_onlyfields(flist, dbh); + do_substitute(subarg, dbh); + + if (!create) { +- if (!check_table(SQLsock, table)) { ++ if (!check_table(&mysql, table)) { + printf("Table does not exist!\n"); + exit(1); + } +@@ -755,30 +780,30 @@ + + if (!(query = (char *)malloc(12 + strlen(table)))) { + printf("Memory-allocation error in main (drop)!\n"); +- mysql_close(SQLsock); ++ mysql_close(&mysql); + dbf_close(&dbh); + exit(1); + } + + sprintf(query, "DROP TABLE %s", table); +- mysql_query(SQLsock, query); ++ mysql_query(&mysql, query); + free(query); + + /* Build a CREATE-clause + */ +- do_create(SQLsock, table, dbh); ++ do_create(&mysql, table, dbh); + } + + /* Build an INSERT-clause + */ + if (create < 2) +- do_inserts(SQLsock, table, dbh); ++ do_inserts(&mysql, table, dbh); + + if (verbose > 2) { + printf("Closing up....\n"); + } + +- mysql_close(SQLsock); ++ mysql_close(&mysql); + dbf_close(&dbh); + exit(0); + } |