dbf2mysql

dbf2mysql — утилитка для загрузки dbf файлов в mysql базу

Устанавливается из репозиториев ubuntu

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

параметры:

-v-vv

-vvv
различные уровни вывода отладочной информации
-f  field-lowercase — перевести все поля из dbf файла в нижний регистр (заголовки)
-u  uppercase: — перевести весь текст из dbf файла в верхний регистр
-l  lowercase: — перевести весь текст из dbf файла в нижний регистр
-n Разрешить NULL в записях. NOT NULL не будет добавлен при создании таблицы.
-o field[,field[,…]]
          Список полей для вставки в БД. Предназначен для использования для импорта сложных dbf, из которых мы хотим использовать только некоторые поля.
          примечание ключ -o обрабатывается до ключа -s, так что здесь надо использовать ключи dbf таблицы.
-e conversion-file
Указать файл для преобразования полей. Формат файла: певая строка — количество символов для преобразования (сколько строк будет в файле). Дальнейшие строки:  <char_to_convert> <char_after_conversion>. (видимо перекодировка)
-s old-name=new-name[,old-name=new-name[,…]]
Меняет заголовки полей. старые на новые. Например для устранения конфликта вносимых полей с зарезервированными словами Mysql.Если новое поле пустое — пропускается, то есть это поле не будет присутствовать в таблице MysqlНапример:
-s ORDER=HORDER,REMARKS=,STAT1=STATUS1
REMARKS будет пропущено.
 -i field[,field[,…]]
Индексируемые поля. Используются поля mysql
-d database
Выбор базы данных. По умолчанию «test»
-t table
Выбор таблицы для вставки. По умолчанию — test
-c Создать таблицу, если не существует. Если таблица существует — будет пересоздана. Если написать -cc  — будет создана только структура, данные не будут вставлены.
-p  primary. Выберите первичный ключ. Вы должны дать точное имя поля.
-h host Выберите хост для вставки. Нетестировано.
-F Записи фиксированной длины. По умолчанию CHAR сохраняется как VARCHAR
-q Быстрый режим dbf2mysql. Вставка данных через временный файл используя выражение Mysql  ‘LOAD  DATA  INFILE’. Это увеличивает скорость вставки в 2-2,5 раза. Также можно отметить что в течении всего процесса загрузки данных затрагиваемая таблица заблокирована.
mysql2dbf:
-r Удаление начальных и конечных пробелов из полей типа CHAR
-x запускать каждую таблицу с with _rec и _timestamp полями.
-P пароль к Mysql серверу.
-U user Пользователь Mysql
BUGSmysql2dbf не может на текущий момент записывать MEMO поля.
некорректный длины полей для вещественных чисел

AUTHORS

       Originally  written by Maarten Boekhold <boekhold@cindy.et.tudelft.nl>,
       Oct 1995.

       Patched for MySQL by Michael Widenius  <monty@analytikerna.se>,  3  Nov
       1996.

       Manual   page  written  for  Debian  GNU/Linux  from  README  by  Heiko
       Schlittermann <heiko@lotte.sax.de>, Aug 1997;  updated  by  Matej  Vela
       <vela@debian.org>, Nov 2001.

  ТЕСТЫ:

 1 для начала — так и загружаем 
dbf2mysql dbf_file.dbf -U root -P password -d databasename -c
-c — это чтоб новую создать
шерудила довольно долго на таблице в 65тыс позиций, но завершилась без ошибок
проверяем:
mysql -u root -ppassword
mysql> use database databasename;
таблица будет создана с дефолтным именем test
mysql> SELECT * from test;
выдала всю таблу, однако кодировка как была в 866 так в ней и осталась, так что на выходе — кракозябры
почитать про кодировки в mysql — здесь https://wiki.linux.by/index.php/FAQ_PHP_MySQL_charset
ВЫВОД:
после долгих экспериментов все-таки отказался от применения данной программы. 
При установке в таблице MySQL кириллической кодировки программа отказывается загружать данные, по крайней мере мне это не удалось. 
Грузить в БД данные в неверной кодировке и потом перекодировать — дурное занятие. 
Более простым решением может быть применения утилитки dbf2csv с последующей перекодировкой и загрузкой cvs файла в MySQL

Добавить комментарий