• Авторизация


ПЛАГИН -xBASEVIEW- ДЛЯ -TOTAL COMMANDER-. ВВЕДЕНИЕ 05-05-2018 02:42 к комментариям - к полной версии - понравилось!


По долгу службы я занят сейчас конвертацией данных из таблиц базы данных "FoxPro" в таблицы базы данных "IBM DB 2".

Это не лобовая конвертация из атрибутов одной базы в такие же атрибуты другой базы, потому всё это делается ещё и через "Java". SQL'ем единым проблему не решить. С учётом того, что я не умею работать с "FoxPro" вообще никак, выбор приведённых ниже обходных манёвров не обсуждается и не критикуется. Мы всегда платим за незнание чего-либо временем, потраченным на то, чтобы обойти это незнание, либо на то, чтобы это незнание устранить. Я не захотел специально изучать "FoxPro" для решения частной задачи. Вероятно, кто-то тоже пойдёт по столь же извилистому пути.

С точки зрения наращивания навыков программирования выбранный мною путь интересен и практически полезен, потому я не стал отказываться от него. В рамках задачи я впервые использовал перечисляемый тип enum и понял, что это удобно. До того же, как стал решать эту задачу, в enum'ах не видел вообще никакого смысла для решения прикладных инженерных задач. Но об enum'ах в этой статье уж точно рассказывать долго не буду - они требуют отдельного рассмотрения и... Мне кажется, при решении я забивал гвозди микроскопом, но то, какими получился конвертер, меня полностью устраивает. Код кажется читаемым, прозрачным, а самое главное - удобным. То есть если где-то вдруг в моей задаче поменяется порядок следования столбцов с наименованиями атрибутов, то мне не нужно будет переписывать массивные конструкции, инициализирующие данные. Потребуется только слегка подправить enum'ы. С этой точки зрения, да, получилось очень гибко.

Сперва изложу план своих действий, чтобы вам стало понятно: читать или не читать данную статью дальше:

1. Найден плагин "Apache.POI" для "Java".
2. Общий вид таблицы базы данных "FoxPro" - это директория с файлами: "*.CDX + *.DBF + *.FPT".
3. Неудача с "DBF Converter 3.97".
4. Неудача с "DBF - SQL Expert".
5. Хорошо быть пользователем "Total Commander".
6. Вся жизнь - череда удач и неудач.
7. Обнаружение "xBaseView" в пакетной сборке "Total Commander 8.0 TechAdmin RC3".
8. Подключение "xBaseView" к "Total Commander 7.03" и "Total Commander 9.0а".
9. Конвертация по схеме "FoxPro -> xBaseView -> HTML -> Excel -> Java -> IBM DB2".

Как видите, получается больше обзор сложившейся ситуации. Но если идея вас захватила и захочется узнать подробности, то я потружусь над тем, чтобы представить конкретные инструкции и реализации.

А в чём, собственно, проблема конвертации? Проблема существует и кроется она в том, что я не нашёл прямого плагина для "Java", который вскрывает файлы базы "FoxPro". Вероятно, это моя личная проблема - не более. Но я её решил - я нашёл плагин "Apache.POI". Он прекрасно дружит с офисными приложениями "Microsoft Word" и "Microsoft Excel". Очень удобно и дружественно пишет и читает "XLS", "XLSX", "DOC" и "DOCX". Потому я и решил всё свести к автоматизации конвертации "Excel -> IBM DB 2" через "Java". А исходные данные, то есть "Excel" из "FoxPro" подготовить вручную. И речь абсолютно не идёт о том, чтобы вбивать сотни тысяч строк вручную, а имею в виду использование сторонних средств лобовой, универсальной конвертации, которые кто-то и когда-то до меня уже написал.

Сперва я нашёл онлайновый конвертер "DBF" в "XLS". И данный путь казался прекрасным ровно до момента, пока я не наткнулся на таблицы с так называемыми Memo-полями. Агрх!... Это была моя некоторая головная боль. Многие-многие часы биения головой об стену. А всё потому, что некоторые таблицы базы данных "FoxPro" надо рассматривать в совокупности из трёх файлов "*.CDX + *.DBF + *.FPT". FPT как раз содержит контент Мемо-полей. Загрузить в онлайновый конвертер несколько файлов оказалось невозможно. Стал искать другие решения.

И нашёл клиент-конвертер ("DBF Converter 3.97"), который позволяет работать с директориями, в которых лежат три файла. Он прекрасно работает, но только для 50 строк любой таблицы базы данных бесплатно. Хотите большего - платите денежку. И я уже готов был купить серийный номер для этого продукта... Купил бы, если бы это стоило, скажем, 600 - 1 500 рублей. Правда. Это то, что мне не жалко отдать за условно бесплатное ПО. Я же увидел цену в 2 700 рублей и резко передумал платить разработчикам, тем более, забугорным. Снова стал искать иные пути решения проблемы.

Много статей перерыл, знаю, что можно написать свой собственный, такой же конвертер, но надо уметь работать с файлами через их шестнадцатеричное представление, высчитывать байты, флаги и... Нет, не силён я в Ассемблере, потому на этом этапе я снова сломался...

Нашёл статью, в которой товарищ, спасибо ему, порекомендовал скачать и воспользоваться бесплатной программой "DBF - SQL Expert". Он пояснил, что сей продукт в первых строчках поисковиков не светится, потому искать дистрибутив следует прицельно. У меня получилось. Увы, далее поплыл... Вооружившись его инструкцией, запустить базу и подключение к ней мне так и не удалось. Вероятно, он какие-то настройки и шаги пропустил из серии: "Это и ёжику понятно". Ну, у меня с полпинка не получилось. Плюс на каждый чих программа реагировала либо ошибкой, либо предупреждением. Вы же знаете, как это раздражает? На этой почве у меня сложилось впечатление, что, элементарно, с совместимостью ПО и ОС беда. Там же крайняя версия датирована то ли 2005, то ли 2006 годом. Что ещё я мог подумать? Именно это заставило усомниться в возможности дальнейшего использования программы "DBF - SQL Expert". Хотя, судя по скриншотам, если бы всё заработало, то я бы получил нужный мне результат от неё.

Я уже порывался сам сесть и написать программу в обход шестнадцатеричного представления. Планировал разбирать FPT-файлы построчно и раскидывать значения по соответствующим Memo-полям. Ознакомившись с текстовым представлением FPT-файла и сопоставив его с содержимым таблицы базы данных, я не нашёл прямой закономерности для строкового разбора файла. С одной стороны, данные лежать прозрачно, но с другой - разделительные признаки у каждой из строк различны. Регулярными выражениями беде не помочь.

Далее случилась большая удача. Словно луч солнца пробился средь непроглядные тучи. Я случайно открыл в "Total Commander" не FPT-файл, а DBF-файл и... он открылся ровно так же, как открывался в "FoxPro" на компьютерах моих коллег по "производственному цеху". И в меню, на счастье, я нашёл "Экспорт"! Там даже был прямой экспорт в "Excel", но тот ломался на слишком длинных строках - не конвертировал таблицу целиком. Фигня вопрос! Не даром же я студентов учу на лабораторных работах по "Информационному обеспечению систем управления" через HTML-документы переносить данные сначала в "Excel", а затем импортировать их в "Access". Сам пошёл тем же путём. Оболочка прекрасно, безошибочно выгрузила мне в HTML-данные, я перебросил их проверенным способом, исключающим искажение информации, в "Excel" и получил нормальный набор исходных данных, которые не стыдно передавать на обработку посредством "Java".

Теперь самое интересное - каждый ли "Total Commander" обладает такой классной штукой, позволяющей просматривать таблицы базы данных "FoxPro"? Вот тут нюанс и снова для меня удача. Проверено - не каждый. Я проверил на нетбуке, где установлен "Total Commander 7.03" и фокус не удался. Всё дело было именно в "Total Commander 8.0 TechAdmin RC3". Он случайно попал ко мне на компьютер много лет назад. Товарищ был в гостях и увидел, что я пользуюсь "Total Commander"'ом. Состоялся диалог:

- А ты что, пользуешься "Total Commander"'ом?
- Да, привык уже, нравится мне, не могу уже без него.
- Ты что, серьёзно?
- Ну да, хорошая программа, аналогов для работы с файлами я не вижу.
- Всё-всё, ты меня убедил, более ничего говорить не надо. Вижу, что являешься настоящим пользователем "Total Commander"'а - наша секта. *Посмеялся* Позволь поделюсь с тобой пакетом, который полностью перевернёт твоё представление о коммандере? Уверяю, ты больше не захочешь пользоваться базовой версией после этого.

Я возразить не успел, что меня и базовая версия вполне устраивает, как тот установил флэшку и начал распаковывать дистрибутив: "Не понравится - удалишь. Но уверяю тебя, не было ещё ни одного человека, кому бы не понравилась эта сборка". Я был зол тогда на своего товарища, который столь вольно повёл себя с моим компьютером, но сейчас, спустя время, я безмерно ему благодарен за этот навороченный, админский "Total Commander". Именно в нём нашёлся плагин "xBaseView". В нём и только в нём. Дистрибутив-то он мне, увы, не оставил. Я поискал аналогичную сборку, более новую. Нашёл. Но в ней плагина нужного не оказалось. И такое бывает.

Снова пришлось химичить и проводить эксперименты. И если в пакетной сборке все плагины предустановлены и корректно ссылаются на свои источники (я без проблем сумел найти правильную директорию, да выцепить его), то в базовую сборку его не достаточно просто положить в такую же папку, чтобы он заработал. Его и подключить суметь надо. Он же плагин, то есть "plug-in", примочка, которая подключается извне. Благо, с этим моментом я оперативно разобрался и сумел из двух базовых версий "Total Commander"'а (7.03 и 9.0а) соорудить ту, которая понадобится мне для конвертации данных в дальнейшем. Да, мне же нужно было воспроизвести точно такую же ситуацию и на работе. Да, я мог всё сделать и дома, но я так же понимал, что сейчас я работаю с данными 2017 года, точно такие же манипуляции потребуется провести позже над данными 2018 года, а потом, даст Бог, всё уже будет вариться в новой системе, где подобные свистопляски не потребуются. Смысл писать конвертер только на два года, безусловно, есть. Уж больно велик накопившийся объём данных а "FoxPro". Просто так нескольких девочек-студенток вбивать не посадишь - нужно отвечать за безошибочность переноса. Так что путь один - автоматизация, не иначе.

вверх^ к полной версии понравилось! в evernote
Комментарии (4):
14-07-2018-15:03 удалить
the best way to merge pdf: https://freeonlinepdfconverter.com files ">


Комментарии (4): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник ПЛАГИН -xBASEVIEW- ДЛЯ -TOTAL COMMANDER-. ВВЕДЕНИЕ | Flash_A - Каждый день не без метро | Лента друзей Flash_A / Полная версия Добавить в друзья Страницы: раньше»