Найти тему
Заметки БыдлоКодера

Тупые Идеи - > DBF to SQL Converter

Всем привет! Первая статья, интересна для меня тем, что я получил опыт работы с графикой, System.Drawing и опыт, который можно пропить на следующий день (◕‿◕)

Вчера на работе, я получил выгрузку базы в DBF формате, заливать я её собирался в MySQL. Писать обычную обработку - скучно. Искать готовое решение - быстро, но не красиво.

Почему бы не написать свой DBF to SQL Converter? Сказано - Сделано.

Да можно использовать и сам DBF, как базу, но нам не интересно же так работать?
Да можно использовать и сам DBF, как базу, но нам не интересно же так работать?

И так, с fias.nalog я качаю полностью всю базу данных, она в DBF формате и мне требуется её перевести в таблицы MySQL. Для этого мне и нужен конвертер. Google выдал уже готовые конвертеры, но отдавать деньги жалко, а самому этот конвертер может и пригодиться в будущем.

Создаем проект и накидываем XAML, рисунок 1,2.

XAML Code
XAML Code
MainForm
MainForm

Отлично, компоненты накидали, теперь переходим к коду.

Переменные, которые нам нужны, рисунок 3.

Переменные
Переменные

По ходу дела, будет понятно на кой черт столько переменных, далее, нам нужно реализовать функционал получение пути до файла DBF, рисунок 4.

Получаем доступ к DBF
Получаем доступ к DBF

Отлично, сразу же пропишем код для сохранения полученного файла, рисунок 5.

Сохранение файла
Сохранение файла

Имеется теперь возможность обратиться к DBF, нужно его вскрыть, подключение к DBF файлу такое же, как к тому же Access, все тоже самое почти. Листинг кода, рисунок 6.

Все просто же :)
Все просто же :)

Далее мы получаем данные и записываем их в файл.

Полный листинг кода
Полный листинг кода

Отлично, подключились, получили то, что нужно для формирование новой таблицы в SQL, а именно схему колонок. Для получение типа, используется метод ConvertType из класса Operation. В данном классе мы храним нужны методы, что бы не нагружать класс MainWindow кодом. Рисунок 7.

Класс Operation
Класс Operation

В классе была создана структура _type для того, что бы в switch не было волшебных строк. Метод принимает строку и прогоняет её через switch. Таким образом, мы из DBF типов приводим к SQL типам. В ходе изучения, что возвращает схема, я пришел к такой структуре. Double => Int; String = varchar(255); DateTime = datetime;

В принципе все, программа готова, все оказалось не так сложно и страшно. Да программу надо дорабатывать для массовой раздачи людям, а так же добавить возможность сразу загружать готовый SQL в базу после конвертации.

Благо все работает :) 421 тысячи строк я смог конвертировать этой программой.

Fias база
Fias база

Ссылка на скачивание исходников: тут

Финиш

Не плохой опыт, полезная программа из жанра - Когда-нибудь пригодится :)

Ссылка на скачивание исходников: тут

И помните! Лайк + подписка, мотивируют лучше чем найденная ";"

взято с propostuplenie.ru
взято с propostuplenie.ru