Man Linux: Main Page and Category List


       dbf2mysql, mysql2dbf - convert between xBase and MySQL databases


       dbf2mysql  [-v[v]] [-f] [-u|-l] [-n] [-o field[,field]] [-e conversion-
       file] [-s old-name=new-name[,old-name=new-name]] [-i field[,field]] [-d
       database] [-t table] [-c[c]] [-p primary] [-h host] [-F] [-q] [-r] [-x]
       [-P password] [-U user] dbf-file

       mysql2dbf [-v[v]] [-u|-l] -d database -t table [-h host] [-q query] [-P
       password] [-U user] dbf-file


       dbf2mysql  takes  an xBase file and sends queries to an MySQL server to
       insert it into an MySQL table.

       mysql2dbf dumps a MySQL table to a dbf file.


       -v     Produce some status output.

       -vv    More verbose.

       -vvv   Even more verbose: produce a progress report.

       -f     Translate all field names in the xBase file to lowercase.

       -u     Translate all text in the xBase file to uppercase.

       -l     Translate all text in the xBase file to lowercase.

       -n     Allow NULL fields:  ’NOT  NULL’  will  be  not  added  in  table
              creation statement.

       -o field[,field[,...]]
              List  fields  to  insert into MySQL database.  Primary use is to
              ease import of complex dbf files where we want only few  fields.
              NOTE:  -o  is processed before substitution (-s), so you have to
              use dbf field names here.

       -e conversion-file
              Specify file for CHAR fields conversion.  File  format  is:  1st
              line:  number  of  characters  to  convert  (number  of  lines).
              Further lines: <char_to_convert> <char_after_conversion>.

       -s old-name=new-name[,old-name=new-name[,...]]
              Takes a list of field name/new field name pairs.  Primary use is
              to  avoid  conflicts  between  field  names  and  MySQL reserved
              keywords.  When the new  field  name  is  empty,  the  field  is
              skipped  in  both the CREATE clause and the INSERT clauses, i.e.
              it will not be present in the MySQL table.  For example:


       -i field[,field[,...]]
              List fields to be indexed.  MySQL field  names  should  be  used

       -d database
              Select the database to insert into.  Default is ’test’.

       -t table
              Select the table to insert into.  Default is ’test’.

       -c[c]  Create table if one doesn’t exist already.  If the table already
              exists, drop it and build a new one.  The default is  to  insert
              all  data into the named table.  If -cc is specified, no records
              will be inserted.

       -p  primary
              Select the primary key.  You have to give the exact field  name.

       -h host
              Select the host to insert into.  Untested.

       -F     Fixed length records.  (By default CHAR is saved as VARCHAR.)

       -q     dbf2mysql:  "Quick" mode.  Inserts data via temporary file using
              ’LOAD DATA INFILE’ MySQL statement.   This  increased  insertion
              speed  on  my PC 2-2.5 times.  Also note that during whole ’LOAD
              DATA’ affected table is locked.

              mysql2dbf: Specify custom query to use.

       -r     Trim trailing and leading whitespace from CHAR type fields data.

       -x     Start each table with _rec and _timestamp fields.

       -P password
              Specify password on the MySQL server.

       -U user
              Specify user on the MySQL server.


       mysql2dbf can’t write MEMO files at this time.

       Possibly incorrect field lengths for REAL numbers.


       Originally  written by Maarten Boekhold <>,
       Oct 1995.

       Patched for MySQL by Michael Widenius  <>,  3  Nov

       Manual   page  written  for  Debian  GNU/Linux  from  README  by  Heiko
       Schlittermann <>, Aug 1997;  updated  by  Matej  Vela
       <>, Nov 2001.


       Use  this  piece of software as you want, modify it to suit your needs,
       but please leave my name in place ok? :)


       The authors do not accept any responsibility for  possible  damage  you
       get as result of using this program.