Как показывает опыт, при конвертировании баз данных могут возникнуть еще две трудности:
• несовпадение кодов словарей;
• различие между форматами полей даты и времени в разных БД.
Первая проблема носит чисто технический характер. Она вызвана тем, что в разных БД могут использоваться различные словари для одних и тех же понятий или объектов. Это, как правило, неизбежно, если для данного класса понятий отсутствуют словари, утвержденные на федеральном уровне. Здесь возможен простой выход: переводите все файлы, где используются «спорные» понятия, на единые коды (либо перекодируйте словари, либо оставьте для этих понятий только один словарь).
Вторая трудность связана с тем, что в СУБД разных семейств установлены различные временные точки отсчета и разные форматы даты и времени, поэтому вам придется дополнительно форматировать соответствующие поля. Более подробно такие ситуации рассматриваются ниже.
Процесс конвертирования баз данных
Итак, перед началом конвертирования мы имеем:
• базу данных Контрольно-измерительные приборы, созданную в программной среде Access 2002;
• базу данных БД ЧЭС, сформированную в среде Clarion 3.0;
• базу данных Контроль ЧС, разработанную в программной среде FoxPro 2.5.
Наша цель – объединить все эти базы данных в одну, расположенную в программной среде Access 2002. Вся дальнейшая обработка информации будет происходить в этой новой БД. Чтобы решить поставленную задачу, мы будем импортировать базы данных в Access 2002, одновременно преобразуя их из исходных форматов в новый.
Существуют ли какие-либо альтернативы такому решению? Да, теоретически их две:
• если структуры файлов двух или нескольких баз данных совпадают, можно свободно переносить информацию из одной БД в другую. Однако, как уже говорилось, такая ситуация крайне маловероятна;
• можно не импортировать нужные файлы в БД, а связать их с таблицей Access. Отметим, что файлы являются источниками информации, а в таблице Access содержатся только ссылки на соответствующие сведения. Тогда база данных Access останется в своем первоначальном виде, а все изменения будут происходить в связанных файлах. Однако в таком случае усложняется ведение комплексной БД: если файл данных был перемещен, то вы не сможете просматривать и редактировать его, пока не обновите информацию о местоположении этого файла.
Технология импорта для каждой из двух конвертируемых баз данных несколько различается.
Импорт БД ЧЭС по необходимости состоит из двух этапов. Clarion 3.0 – довольно старая программная система, поэтому она содержит очень небогатый набор конвертеров. Из них практическую ценность имеет лишь конвертер данных из формата DAT в формат программы dBase3 – DBF. Именно этим инструментом мы и воспользуемся. Следующим шагом будет импорт файлов с их одновременным конвертированием из базы данных формата dBase3 в БД Контрольно-измерительные приборы в формате Access 2002 – MDB. Конечно, указанное имя этой базы данных уже не будет соответствовать ее содержанию, и его придется изменить.
Двухэтапным будет также и перевод базы данных Контроль ЧС из формата в формат, но по другим причинам. Дело в том, что при всей мощности и гибкости Access 2002 из этой версии (по сравнению с Access 97) исчез конвертер форматов данных FoxPro. В результате, даже несмотря на родственный формат (.DBF), с которым работают СУБД семейства dBase, при попытке прямого импорта файлов из FoxPro в Access 2002 с помощью конвертеров возникают трудности с преобразованием текстовых файлов: во-первых, не конвертируются файлы типа Memo, во-вторых, текстовые строки преобразуются с искажениями, так что понять эти тексты нельзя. Поэтому порядок работы будет таким: первый шаг – переносим данные из FoxPro в Access 97, второй – из Access 97 в Access 2002.
Импорт базы данных БД ЧЭС
Начнем с краткой характеристики базы данных БД ЧЭС.
Первый этап: импорт данных из среды Clarion в dBase
Сначала посмотрим, как выглядит фрагмент этой базы данных. На рис. 7.1 представлена часть окна базы данных – ответ на запрос об авариях на магистральных трубопроводах, которые произошли на территории Российской Федерации в 1995 г. По каждой из чрезвычайных ситуаций, содержащихся в этом списке, можно получить (в электронном или печатном виде) более подробную информацию.
Рис. 7.1
Для импорта базы данных используем конвертер Ccvt, который входит в состав программного обеспечения среды Clarion (см. рис. 7.2). Как видно из рисунка, конвертер предоставляет не слишком широкие возможности преобразования форматов: либо в текстовый файл на языке Basic, либо в универсальный обменный формат DIF, либо в один из форматов языка dBase. Однако Basic нам в данном случае не нужен, а DIF не получил широкого распространения. Значит, остается, как мы уже договорились, преобразовывать данные в формат DBF.
Рис. 7.2
Как и раньше, мы будем рассматривать конвертацию данных на примере одного файла. Возьмем самый представительный в базе данных БД ЧЭС файл – File1.dat, показанный на рис. 7.2. В сущности, формальное преобразование происходит предельно просто. Выберите с помощью клавиатуры (а не мыши, так как MS DOS вполне может обходиться и без нее) выходной формат (Output Type) и имя выходного файла (Output File), который назовите Fiie1.dbf. Теперь нажмите клавишу Enter. Указывать файл-источник (Source File) не надо: имя этого системного файла Clarion введет самостоятельно. На данном этапе и произойдет преобразование: появится требуемый файл Fiie1.dbf. Если, вводя имя этого файла, вы не указали его расположение, то он будет помещен в ту же директорию, в которой находится конвертер Ccvt. Казалось бы, дело сделано, и можно переходить к следующему этапу конвертирования.
Однако не все так просто. В dBase действует ограничение на длину имени поля – оно не может превышать 10 символов. Кроме того, при конвертации в название включается префикс. Например, имя поля PEREDAL после преобразования превратится в FIL_PEREDA. Но в результате конвертации точно так же будет выглядеть и имя другого поля – PEREDAB. Тогда окажется, что в файле File1.dbf содержатся два поля с одинаковыми именами, что недопустимо. Конечно, такая проблема разрешается относительно легко: войдите в систему dBase и там исправьте имя файла. Поскольку данная ситуация является частной, здесь она подробно не рассматривается. Но очень важно помнить, что при переносе файлов из одной СУБД в другую (даже если речь идет о реляционных СУБД) необходимы повышенные осторожность и внимание. В следующем разделе будет показано, что описанный выше эпизод – не единственный случай, когда могут возникнуть проблемы.
Так или иначе, первый этап импорта файлов завершен (как вы помните, остальные файлы конвертируются аналогичным образом). Можно переходить ко второму шагу.
Второй этап: импорт данных из dBase в Access 2002
Теперь нам нужно импортировать в базу данных Контрольно-измерительные приборы файлы из базы данных БД ЧЭС, конвертировав их при этом из формата dBase.
Импорт файлов
Снова откройте окно базы данных. Напомним, что необходимо выполнить следующие действия:
1. Из окна Access 2002 открыть базу данных по ее имени (БД ЧЭС).
2. Щелкните по кнопке
на панели инструментов базы данных. На экране появится окно базы данных (см. рис. 3.1).
3. Если начальная форма вам почему-либо мешает, уберите ее, щелкнув по кнопке закрытия окна.
Теперь в меню базы данных выберите опцию Файл, а в открывшемся подменю – Внешние данные. Затем активизируйте опцию Импорт, после чего на экране появится одноименное окно (рис. 7.3).
Рис. 7.3
Вам придется пройти по дереву файлов в поисках базы данных в формате DBF, которую вы получили в результате первого этапа работы (см. предыдущий раздел). Как и раньше, возьмем в качестве примера файл File1.dbf. Чтобы увидеть его либо другие файлы этой базы данных в формате DBF, надо в поле Тип файла активизировать или какую-либо модификацию dBase (например, dBaseIII), или опцию Все файлы. В противном случае файлы формата DBF будут невидимы. Найдя нужный файл и пометив его, щелкните по кнопке
Если все прошло нормально, то Access 2002 выдаст сообщение об успешном импортировании файла (рис. 7.4). Щелкните по кнопке ОК.
Рис. 7.4
Теперь надо закрыть окно Импорт, и тогда вы увидите, что в окне базы данных появилась новая таблица Fiie1 (см. рис. 7.5).
Рис. 7.5
Поля даты и времени
Итак, второй этап импорта прошел успешно, и кажется, что с базой данных все в порядке. Однако приглядимся повнимательнее к импортированной таблице (см. рис. 7.6), особенно к полям даты и времени FIL_DATAY, FIL_TIMECH, FIL_DATAS, FIL_TIMESO. (Вы помните, как образовались эти имена? К исходным названиям полей файла File1.dat при преобразовании его в формат DBF слева добавляются префиксы FIL, а общее имя поля «обрезается» до 10 символов.)