LinuxBegin.ru - offline-версия от 26.04.2004
Главная | Все темы | Все статьи | Ссылки | Аналоги Windows-программ в Linux | Top 20

Подводим базу под пингвинов
(Программное обеспечение, работа в Linux)


- Сергей А.ЯРЕМЧУК, 05.01.2004, Мой Компьютер Weekly, оригинал -

С выходом первой версии OpenOffice.org 1 в распоряжении пользователей оказался хороший и к тому же совершенно бесплатный офисный продукт. Его возможностей, казалось бы, вполне достаточно для удовлетворения большинства потребностей рынка SOHO. Вот только был замечен один существенный недостаток, сужавший сферу использования данного продукта - в нем не было компонента, аналогичного MS Access, т.е. своей встроенной базы данных, что сразу же вызвало критику в адрес разработчиков. Но оказалось, не все так запущенно.

Просто разработчики решили не создавать в сотый раз велосипед (отдав это на откуп мелкомягким), а предоставить возможность доступа к уже имеющимся свободным СУБД. И действительно, вскоре в одной из конференций, посвященных OpenOffice, раздалось радостное "Эврика!" Сначала был найден метод подключения довольно популярной СУБД MySQL, а затем уже и очередь других подоспела. Мне недавно удалось увидеть в одной организации довольно странный на мой взгляд симбиоз из Windows 98, Microsoft Office 2000 и SQL Server - все это с такими глюками работало, что смотреть было страшно. Так что давайте разбираться и не повторять чужих ошибок.

Для соединения с базами данных OpenOffice.org использует универсальный драйвер ODBC. Этот драйвер используется как на платформах MS Windows, так и в Unix-подобных операционных системах. В статье я рассмотрю вопрос, как соединить OpenOffice.org с базой данных MySQL, используя unixODBC - ODBC для различных вариантов *nix. Однако можно добиться аналогичного результата и на других платформах, установив необходимые пакеты, или использовать пакет cygwin (http://cygwin.com/xfree), позволяющий выполнять приложения, написанные для Linux, на компьютере под управлением Windows. Особенных трудностей не предвидится. Более того, возможно применение данной методики с помощью JDBC, интерфейса для доступа к базам данных, написанного на языке Java, что автоматически подразумевает мультиплатформенность.

Дистрибутив Linux Red Hat 9, который используется мной при написании этой статьи, имеет все необходимые компоненты для работы. Если чего не хватает, то упоминаемые компоненты следует доустановить.

Установка MySQL

Для начала проверим: возможно, MySQL уже установлен на компьютере:

Если запрос ничем не аукнулся, возьмите на сайте http://www.mysql.com необходимые компоненты и установите их. Для краткости будем рассматривать вариант установки при помощи rpm-пакетов как более простую и удобную. Если же вы предпочитаете сборку из исходников, то в этом случае настройка практически ничем не отличается от рассматриваемой, за исключением некоторых моментов, на которых я буду останавливаться по ходу дела.

Прежде всего необходимо установить сервер MySQL, который запускается в фоновом режиме и выполняет запросы пользователей по доступу к данным:

Если установка прошла успешно, то запускаем сервер:

Теперь у нас есть функционирующий MySQL-сервер, и в нем по умолчанию создается пустая тестовая база данных test, допускающая пользователя test без пароля. Для того чтобы стало возможным выполнение SQL-запросов, необходимо установить клиент MySQL:

Проверяем подключение к серверу:

Если все получилось, то можно считать, что первый этап закончен. Следующим шагом будет установка драйвера ODBC, благодаря которому обеспечивается стандартный интерфейс OpenOffice.org для обращения к базам данных. Проверяем, может быть, он уже установлен:

Если этого не случилось, и в вашем дисрибутиве нет этого компонента, то идем на сайт www.unixodbc.org/download.html, получаем оттуда данные в любом удобном виде и устанавливаем их:

Дополнительно необходимо скачать с сайта http://www.mysql.com и установить программное обеспечение и набор необходимых библиотек для доступа к ODBC:

После того как все необходимые пакеты установлены, в каталоге /etc создается файл odbcinst.ini, содержащий шаблон настроек ODBC. Необходимо с помощью какого-либо текстового редактора привести содержимое этого файла в соответствие с нашими задачами - естественно, указав реальные пути к приложениям:

Файл /etc/odbc.ini определяет настройки, которые будут использоваться для доступа к базе данных. Вам придется создать его самостоятельно. У меня он имеет следующий вид:

Теперь, когда все необходимые приложения установлены и конфигурационные файлы созданы, приступаем к самой ответственной части - тестированию. Для этого используем небольшую программу isql, которая устанавливается вместе с ODBC:

Все. Теперь можно себя поздравить: главное позади. Если программа не работает, попробуйте запустить ее с опцией –v, выдающей дополнительную информацию.

Теперь надо сообщить OpenOffice о нашем ODBC. Но здесь есть одно маленькое "но". А именно, для работы OpenOffice требуется библиотека libodbc.so. Я устанавливал unixODBC из исходников, поэтому у меня оказалась более новая версия данной библиотеки - libodbc.so.1. Для решения этой задачи я просто создал символическую ссылку с файла libodbc.so.1 на требуемый программой libodbc.so:

Работа с базой данных

Теперь пора запускать OpenOffice. Находим в панели меню пункт Сервис > Исходные данные и нажимаем на кнопку Новые исходные данные в левом верхнем углу, чтобы появился новый пункт в окне Управление исходными данными. В строке Имя вводим название, под которым будет сохранен наш проект, в строке Тип базы данных - ODBC. После этого при нажатии на кнопку [...] в списке Исходные данные URL появятся доступные базы данных. Выбираем оттуда нашу - MySQL-test (обратите внимание: это название соответствующего раздела в файле /etc/odbc.ini). Теперь необходимо ввести имя пользователя во вкладке ODBC. В нашем случае это test. Нажимаем кнопку Применить и ОК.

На этом подготовительный этап можно считать законченным. Если вы устанавливали MySQL из исходных текстов, то тестовую базу данных придется создавать самостоятельно или воспользоваться базой Bibliography, которая входит в комплект и устанавливается вместе с OpenOffice. В этом случае может понадобиться экспортировать переменную LD_LIBRARY_PATH:

или, что еще лучше, сразу занести ее в файл ~/bash_profile, чтобы потом не вводить каждый раз.

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

Чтобы создать таблицу, выбираем в контекстном меню пункт Новый проект таблицы. Появляется окно Дизайнера проекта таблицы. Кстати, в OpenOffice есть довольно неплохая справка по данному вопросу - к сожалению, на английском. Вводим данные о типе таблице, длине и краткий комментарий. При вводе наименования активизируются меню Значение поля, где можно установить необходимые параметры. В разделе Тип поля появляется раскрывающийся список, из которого можно выбрать нужное значение. По окончании ввода значений необходимо выбрать первичный ключ для таблицы - щелкаем правой кнопкой мыши по самому левому полю дизайнера напротив нужного поля и выбираем в появившемся меню подпункт Первичный ключ. Теперь сохраняем таблицу и в появившемся окне вводим ее название. Для установки параметров индекса воспользуемся пунктом Сервис > Проект индекса, где устанавливается порядок сортировки, уникальность значения (для первичного обязательно), а также создаются, переименовываются и удаляются индексы в текущей таблице. Если потребуется изменить структуру полей таблицы, воспользуйтесь пунктом контекстного меню Правка таблицы. Теперь при щелчке по названию таблицы в правом поле Проводника Исходных данных появятся значения ее полей.

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

С помощью следующих двух кнопок можно отсортировать по возрастанию и убыванию данные в выбранном поле. За ними следует кнопка автофильтрации - очень мощного инструмента, позволяющего отображать только те данные, которые удовлетворяют определенным критериям. В простейшем случае достаточно щелкнуть по нужному названию в поле таблицы и нажать на кнопку. В результате будут выведены все данные, содержащие это поле. Дешево и сердито. Каждый следующий задействованный автофильтр добавляется к уже действующим, пока не будут отображены все нужные данные. чтобы отключить автофильтрацию, необходимо нажать соответствующую (девятую по счету) кнопку. Хочется отметить, что автофильтр не изменяет значения в базе данных: он просто выводит их в удобной пользователю форме, поэтому опасаться за сохранность данных не стоит.

Что меня опечалило при работе с таблицами, так это то, что назначение кнопки не сразу понятно из изображенного на ней рисунка. Однако подведя к кнопке указатель мыши, можно получить исчерпывающую информацию о ее назначении (опять-таки на английском). К тому же все кнопки удобно разбиты на группы, и к ним быстро привыкаешь - благо их не так уж много. Наконец, с помощью команды Вид > Панели символов > Правка можно изменить рисунок на кнопке или заменить его текстом.

OpenOffice позволяет работать с одной базой данных одновременно нескольким пользователям, а также одновременно открыть сразу несколько окон редактирования. Для того чтобы отобразить в выводимой таблице изменения данных, сделанные другим пользователем или в другой открытой таблице, есть специальная кнопка, которая так незатейливо и называется - Update. Как уже говорилось, редактировать данные можно прямо в окне Проводника Исходных данных, при условии, что нажата кнопка, разрешающая редактирование (с изображением блокнота с ручкой). При переходе к следующему полю все введенные данные немедленно заносятся в базу. Для того чтобы можно было занести данные вручную, необходимо нажать кнопку записи (с изображением дискеты). Расположенная рядом кнопка со стрелочкой позволяет отказаться от последних изменений, но только до занесения их в базу данных.

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

В появившемся диалоговом окне следует выбрать все таблицы, которые необходимо использовать в запросе, не забывая при этом нажимать на кнопку Добавить. Нажав по окончании выбора кнопку Закрыть, попадаем в окно Дизайнер запросов. Теперь двойным щелчком по нужному полю или перетаскиванием можно добавить его в запрос. Названия выбранных полей появляются в строке Поле таблицы. Если при создании запроса используется несколько таблиц, то, соединив нужные поля с помощью мыши, можно связать их между собой (как в Access, SQL Server и др.). Для большего удобства работы с полями предусмотрены строки Псевдоним, Сортировка, Видимый. В поле Функция определяются действия, которые необходимо выполнить в запросе - например, вычисление среднего арифметического или максимального значения поля. Поле Критерий позволяет задать дополнительные возможности отбора информации, например вывод - в том случае, если значение поля больше среднего значения или не равно нулю.

После того как все параметры введены, можно запустить запрос на выполнение (перед этим рекомендуется его сохранить). Для запуска требуется нажать самую левую кнопку на панели. Следующая по очереди кнопка удаляет созданный запрос, а та, что за ней, позволяет просмотреть его в виде SQL. Кнопка Distinct позволяет избежать дублированного вывода. Это может понадобиться, если нужно, например, просмотреть всех авторов книг, хранящихся в базе данных. Без Distinct по запросу будут выведены одни и те же фамилии по несколько раз.

После сохранения запрос можно запустить прямо из Проводника Исходных данных, просто дважды по нему щелкнув. Отсюда же запускаются и SQL-запросы. Их просто набирают вручную. В этом случае, естественно, доступны все команды MySQL, в том числе и те, которые невозможно создать в дизайнере. Отобранную информацию можно потом без проблем импортировать в виде таблицы или текста в файл.

Вот вкратце и все. Примечательно, что все настройки в OpenOffice сохраняются в файлах в формате XML, что позволяет изменять их, непосредственно редактируя нужный файл. Так, например, запросы сохраняются в файле DataAccess.xml, расположенном в каталоге ~/OpenOffice.org/share/config/registry/instance/org/openoffice/Office/.

OpenOffice может также использовать в качестве базы данных обыкновенные текстовые файлы, таблицы, форматы которых он поддерживает, а также файлы dbase.

При подготовке статьи мне очень помог документ OpenOffice.org 1.0, ODBC, and MySQL How-to, который можно найти по адресу http://www.unixodbc.org/doc/OOoMySQL.pdf.

ViVa OpenSource.

Просмотров: 1049  |  Рейтинг статьи: 4.8 (Голосов: 5).
4.8
Дата размещения статьи: 2004-02-01 13:10:29



5 последних поступлений в раздел Программное обеспечение, работа в Linux:

26.02.04: Создаем кроссворд в OpenOffice Calc (Изучаем условное форматирование и защиту ячеек.)
26.02.04: Точки Emacs (Путь линуксоида очень напоминает путь воина, главными особенностями которого являются ответственность...)
07.02.04: Файлы из будущего. (Total Commander6 - в системе Windows, по возможностям и интерфейсу, лучше и популярнее! Возможностей ...)
07.02.04: Время играть (Сразу замечу, что точной копии NFS найти не удалось, да и смысла создавать то, что уже есть, я не виж...)
02.02.04: Сохраним Linux (В статье "Пингвин на автопилоте" я говорил об автоматизации Linux. Теперь давайте рассмотрим способы ...)

Комментарии:

LinuxBegin.ru © 2003-2004 Valery V. Kachurov | Условия использования материалов | О проекте