dbf to mysql

Потребовалось сделать скрипт, прогружающий данные из таблиц dbf в базу MySQL

первым ходом был поиск соответствующей программки. Программка для российского пользователя оказалась не самым лучшим вариантом, потому как не корректно работала с кириллической кодировкой.
Тем не менее решение всегда можно найти

1 преобразование файла из DBF в cvs файл.
2 перекодировка 866 -> 1251
3 загрузка cvs в mysql
преобразование DBF->cvs можно выполнить утилиткой dbf2csv.py
Для работы утилитки потребуется модуль dbfpy
 Usage: dbf2csv.py —file=DBFfile —out=CSVfile —header=False|True —delim=DELIM —cols=COLLIST
Options:
  -h, —help            show this help message and exit
  -f DBFFILE, —file=DBFFILE
                        dbf file
  -o CSVFILE, —out=CSVFILE
                        csv file
  -d DELIM, —delim=DELIM
                        delimiter
  —header=HEADER       header (True|False)
  —cols=COLS           list of columns. Exp: 1,2,6,9,11
в общем из хелпа все понятно
перекодировка выполняется линуксовой утилиткой iconv

далее загрузка в mysql
загрузка делается следующим оператором:
LOAD DATA INFILE ‘/var/lib/mysql-files/file.csv’
INTO TABLE name_table
FIELDS TERMINATED BY ‘;’
ENCLOSED BY ‘»‘
LINES TERMINATED BY ‘\n’
IGNORE 1 ROWS
(field1,field2,field3);
У mysql с точки зрения безопасности могут быть ограничения — откуда можно загружать файлы в бд
обычно это папка /var/lib/mysql-files/
загружает довольно быстро, явно быстрее чем dbf2mysql
если требуется загрузка из xlsx файла — потребуется другая утилитка для преобразования — xlsx2csv

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