Старый добрый ODBC как прокладка для 1С из-под Wine в Linux
В 90-е, когда IT-специалисты получили возможность легко обмениваться информацией благодаря Интернету, мир пребывал в эйфории. Еще бы, столько полезных концепций ринулись в общий котел, превращаясь на глазах в могущественный сплав, позволявший решить (как тогда казалось) любые проблемы. Вот и реляционные базы данных повыползли из полузакрытых корпоративных лабораторий и превратились в повседневное средство решения программистских проблем. Только вот баз данных много, форматы данных и соединений с ними у всех производителей разные… В воздухе витала идея о том, что хорошо бы сделать нечто, позволяющее абстрагироваться от частностей и обращаться к любым базам данных одинаковым способом. Ведь в конечном итоге все они поддерживают SQL-запросы.
И тут самое время вспомнить цитату из "Компьютерной Библии": «Билл был хитрее всех зверей полевых»…
Да, именно Microsoft первой внедрила в свою ОС концепцию ODBC — универсального способа связи с базами данных, когда настроив один раз доступ к источнику данных и запомнив его имя, программист может сосредоточиться на работе именно с данными, а не въезжать в особенности той или иной платформы. Тут справедливости ради нужно сказать, что даже Sun выпустила аналогичный стандарт — JDBC — несколько позднее. Как говорится, не всё то «не золото», что Microsoft.
Со временем поклонники Linux тоже захотели обзавестись таким удобным механизмом. Так появился проект unixODBC, который и по сей день себя неплохо чувствует. Я этот проект знаю примерно с 2001 года и до сих пор этим механизмом пользуются многие разработчики, хотя к настоящему времени появилась масса альтернатив (ADO, например).
К чему весь этот высокохудожественный исторический экскурс? Да к тому, что сейчас, когда приложения для Windows активно переносятся на Linux, ODBC может стать «прокладкой», через которую, например, программа 1С может синхронизировать свои данные с какой-то другой, производственной базой данных, причем в реальном времени: внесли изменения в форму 1С — они сразу же попали в другую базу (добавились или обновились).
Особенно приятно то, что Wine умеет представлять Windows-приложениям юниксовый ODBC как виндовый, так что никакой дополнительный огород городить не надо. Итак, как настроить ODBC на Linux-компьютере, на котором через Wine будет запускаться, скажем, 1С и обращаться через ODBC к другим базам.
Во-первых, нужно скачать и установить из исходников тарбол unixODBC (не знаю, как это ставится из пакетов). Проблем здесь никаких — типичные
разве что архив нужно распаковывать «по-старинному»:
а то MC его раскрывать отказался.
Затем нужно установить ODBC-драйвер для нужной базы данных. Возьмем для примера тот же PostgreSQL. Его ODBC-драйвер можно взять здесь. Собирается и устанавливается всё так же:
Итак, платформа готова. Нужно соединиться с конкретной базой данных, точнее говоря настроить один раз соединение (логин, пароль, хост и т.п.), чтобы потом к нему обращаться просто по имени. У ODBC есть общесистемные настройки и пользовательские. Имена файлов, в которых они хранятся, разнятся от системы к системе. Чтобы их выяснить нужно ввести команду:
Её вывод будет примерно таким:
Нас интересует здесь /usr/local/etc/odbcinst.ini, где прописываются имеющиеся драйвера, и /home/username/.odbc.ini, где лежат настройки для баз, с которыми дозволено соединяться пользователю. Неплохое руководство по настройке ini-файлов находится здесь. Пример файла odbcinst.ini:
Пример файла ~/.odbc.ini
Всё, можно пользоваться. Для проверки прилагается утилита isql:
Теперь попробуем убедиться, что ODBC работает из-под Wine. Для этого скачаем проверочную программку TestConn. Распакуем и запустим ее под Wine:
Как видите, Windows-программа видит соединение с базой данных, установленное через связку Wine/Linux/ODBC.
«А дальше? Как писать обработки для 1С, использующие такое соединение?», — спросит иной йуный падаван. А дальше, ребятушки, бубен вам в руки — и вперед, на танки с саперными лопатками. Я, чай, всё описанное тоже не во сне увидел.
И тут самое время вспомнить цитату из "Компьютерной Библии": «Билл был хитрее всех зверей полевых»…
Да, именно Microsoft первой внедрила в свою ОС концепцию ODBC — универсального способа связи с базами данных, когда настроив один раз доступ к источнику данных и запомнив его имя, программист может сосредоточиться на работе именно с данными, а не въезжать в особенности той или иной платформы. Тут справедливости ради нужно сказать, что даже Sun выпустила аналогичный стандарт — JDBC — несколько позднее. Как говорится, не всё то «не золото», что Microsoft.
Со временем поклонники Linux тоже захотели обзавестись таким удобным механизмом. Так появился проект unixODBC, который и по сей день себя неплохо чувствует. Я этот проект знаю примерно с 2001 года и до сих пор этим механизмом пользуются многие разработчики, хотя к настоящему времени появилась масса альтернатив (ADO, например).
К чему весь этот высокохудожественный исторический экскурс? Да к тому, что сейчас, когда приложения для Windows активно переносятся на Linux, ODBC может стать «прокладкой», через которую, например, программа 1С может синхронизировать свои данные с какой-то другой, производственной базой данных, причем в реальном времени: внесли изменения в форму 1С — они сразу же попали в другую базу (добавились или обновились).
Особенно приятно то, что Wine умеет представлять Windows-приложениям юниксовый ODBC как виндовый, так что никакой дополнительный огород городить не надо. Итак, как настроить ODBC на Linux-компьютере, на котором через Wine будет запускаться, скажем, 1С и обращаться через ODBC к другим базам.
Во-первых, нужно скачать и установить из исходников тарбол unixODBC (не знаю, как это ставится из пакетов). Проблем здесь никаких — типичные
./configure ; make ; make install
разве что архив нужно распаковывать «по-старинному»:
gunzip unixODBC*.tar.gz
tar xvf unixODBC*.tar
а то MC его раскрывать отказался.
Затем нужно установить ODBC-драйвер для нужной базы данных. Возьмем для примера тот же PostgreSQL. Его ODBC-драйвер можно взять здесь. Собирается и устанавливается всё так же:
./configure ; make ; make install
Итак, платформа готова. Нужно соединиться с конкретной базой данных, точнее говоря настроить один раз соединение (логин, пароль, хост и т.п.), чтобы потом к нему обращаться просто по имени. У ODBC есть общесистемные настройки и пользовательские. Имена файлов, в которых они хранятся, разнятся от системы к системе. Чтобы их выяснить нужно ввести команду:
odbcinst -j
Её вывод будет примерно таким:
unixODBC 2.3.0
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /home/belka/.odbc.ini
SQLULEN Size.......: 4
SQLLEN Size........: 4
SQLSETPOSIROW Size.: 2
Нас интересует здесь /usr/local/etc/odbcinst.ini, где прописываются имеющиеся драйвера, и /home/username/.odbc.ini, где лежат настройки для баз, с которыми дозволено соединяться пользователю. Неплохое руководство по настройке ini-файлов находится здесь. Пример файла odbcinst.ini:
[PostgreSQL]
Driver=/usr/lib/psqlodbcw.so
Description=Slonyatko
UsageCount=1
Пример файла ~/.odbc.ini
[PupkinsData]
Debug=1
CommLog=1
ReadOnly=no
Driver=PostgreSQL
Servername=127.0.0.1
FetchBufferSize=99
Username=pupkin
Password=neskazu
Port=5432
Database=pupkinsdatadase
Всё, можно пользоваться. Для проверки прилагается утилита isql:
bash-4.1$ isql PupkinsData
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select id from pupkinfrends;
+------------+
| id |
+------------+
| 10087 |
| 10007 |
| 10075 |
| 10024 |
| 10092 |
Теперь попробуем убедиться, что ODBC работает из-под Wine. Для этого скачаем проверочную программку TestConn. Распакуем и запустим ее под Wine:
wine TectConn
Как видите, Windows-программа видит соединение с базой данных, установленное через связку Wine/Linux/ODBC.
«А дальше? Как писать обработки для 1С, использующие такое соединение?», — спросит иной йуный падаван. А дальше, ребятушки, бубен вам в руки — и вперед, на танки с саперными лопатками. Я, чай, всё описанное тоже не во сне увидел.
Комментарии (3)
RSS свернуть / развернутьБуду ставить!
Sergei_T
Sergei_T
Markony
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.