Всем привет! Первая статья, интересна для меня тем, что я получил опыт работы с графикой, System.Drawing и опыт, который можно пропить на следующий день (◕‿◕)
Вчера на работе, я получил выгрузку базы в DBF формате, заливать я её собирался в MySQL. Писать обычную обработку - скучно. Искать готовое решение - быстро, но не красиво.
Почему бы не написать свой DBF to SQL Converter? Сказано - Сделано.
И так, с fias.nalog я качаю полностью всю базу данных, она в DBF формате и мне требуется её перевести в таблицы MySQL. Для этого мне и нужен конвертер. Google выдал уже готовые конвертеры, но отдавать деньги жалко, а самому этот конвертер может и пригодиться в будущем.
Создаем проект и накидываем XAML, рисунок 1,2.
Отлично, компоненты накидали, теперь переходим к коду.
Переменные, которые нам нужны, рисунок 3.
По ходу дела, будет понятно на кой черт столько переменных, далее, нам нужно реализовать функционал получение пути до файла DBF, рисунок 4.
Отлично, сразу же пропишем код для сохранения полученного файла, рисунок 5.
Имеется теперь возможность обратиться к DBF, нужно его вскрыть, подключение к DBF файлу такое же, как к тому же Access, все тоже самое почти. Листинг кода, рисунок 6.
Далее мы получаем данные и записываем их в файл.
Отлично, подключились, получили то, что нужно для формирование новой таблицы в SQL, а именно схему колонок. Для получение типа, используется метод ConvertType из класса Operation. В данном классе мы храним нужны методы, что бы не нагружать класс MainWindow кодом. Рисунок 7.
В классе была создана структура _type для того, что бы в switch не было волшебных строк. Метод принимает строку и прогоняет её через switch. Таким образом, мы из DBF типов приводим к SQL типам. В ходе изучения, что возвращает схема, я пришел к такой структуре. Double => Int; String = varchar(255); DateTime = datetime;
В принципе все, программа готова, все оказалось не так сложно и страшно. Да программу надо дорабатывать для массовой раздачи людям, а так же добавить возможность сразу загружать готовый SQL в базу после конвертации.
Благо все работает :) 421 тысячи строк я смог конвертировать этой программой.
Ссылка на скачивание исходников: тут
Финиш
Не плохой опыт, полезная программа из жанра - Когда-нибудь пригодится :)
Ссылка на скачивание исходников: тут
И помните! Лайк + подписка, мотивируют лучше чем найденная ";"