Portál AbcLinuxu, 2. května 2025 05:47
Byl bych se vůbec nezlobil, kdyby byl Bill býval sám zdokumentoval a otevřel MS Access širšímu okruhu uživatelů a vývojářů, zejména pak nám tučňákům linuxovitým. Opět to ale musel udělat někdo jiný...
Projekt MDB Tools se snaží zdokumentovat souborový formát MDB používaný v databázích Access z dílny společnosti Microsoft a snaží se také poskytnout sadu nástrojů a aplikací, které zpřístupní data uložená v tomto proprietárním formátu i uživatelům non-windows platforem. Obecně umožňují tyto nástroje exportovat schéma databáze a data do DDL a souborů importovatelných do MS SQL Server, MS Access, MySQL, PostgreSQL, Oracle, Sybase a dalších. Balíček obsahuje i engine vykonávající jednoduché dotazovací příkazy SQL. MDB Tools umí data ze souboru .mdb pouze číst a exportovat, a to ještě s omezením (Jet 3 a 4), nicméně v další verzích je avizována i možnost zápisu do databáze. Poslední verze 0.5 obsahuje grafické uživatelské rozhraní a ODBC ovladač. Motto projektu zní "Odemkni svá data", vezměme tedy onen pomyslný klíč a pojďme se podívat, kde všude si odemkneme.
Než začnete vůbec instalovat MDB Tools, je nutno splňovat určité požadavky, které jsou specifikované na stránkách projektu i s odkazy na související stránky. Potřebné jsou tyto technické předpoklady: glib2.0, readline bison, flex, unixODBC, Gnome 2.0, libglade a wordexp.
MDB Tools je možné instalovat jako balíček RPM, DEB, jiný binární balíček nebo ze zdrojáků. U RPM a DEB balíčku je instalace triviální. Zastavme se tedy až u instalace ze zdrojových kódů. Nemine nás trojice - konfigurace, sestavení a instalace. Konfiguraci je možné udělat dvěma způsoby. Konfigurace přímo z tarballu výpadá následovně:
$ zcat mdbtools-0.5.tgz | tar xvf -
|
Chcete-li instalovat MDB Tools s podporou ODBC, je nutné použít argument
--with-unixodbc
s uvedením adresáře, ve kterém máte unixODBC nainstalován.
$ zcat mdbtools-0.5.tgz | tar xvf -
|
Hledáte-li tu nejaktuálnější verzi MDB Tools, použijte CVS. Tento krok
využívá skript autogen.sh
, tudíž je konfigurace trochu odlišná. Opět zde
platí - nechcete-li podporu ODBC odstraňte argument --with-unixodbc
.
$ cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mdbtools login
|
Sestavení a instalace jsou již standardní příkazy:
$ make
|
Databáze MDB jsou soubory vytvořené pomocí MS Jet Database Engine. Tyto soubory jsou používány nejen v databázích MS Access, ale také například v produktech MS, jakými jsou webový server IIS, poštovní server Exchange, Money či Project. Setkal jsem se s nimi ale i u produktů třetích stran - příkladem budiž databáze sekundárních informací vztahujících se k audio nahrávkám telefonních hovorů v zařízení Racal Mirra. Tyto .mdb soubory umožňují klientské aplikaci indexovat hovory a přiřadit nahrávce .wav data typu počátek a konec hovoru, trvání, tel. linka a podobně.
MDB Tools je především knihovna pro přístup k datům z databázových souborů .mdb - knihovna má název LibMDB. Dále pak utility příkazového řádku pro získání schéma a dat ze souboru, tyto utility se nám hodí ke skriptování. Dále pak LibMDBSQL - vrstva nad LibMDB umožňující provádět nad daty v souboru dotazy SQL. LibMDBODBC je databázový ovladač, který využijeme ve spolupráci s programovacími jazyky jako Perl a PHP pomocí DBD:ODBC. K nativnímu ovladači je však nutno doinstalovat unixODBC, jelikož potřebuje ke své práci unixový ODBC driver manager. Konečně Gmdb2, což je GUI nad LibMDB a command line utilities, zobrazující objekty uložené v databázovém souboru a umožňující tak v grafickém rozhraní prohlížet schéma tabulek nebo dotazovaní se pomocí SQL - prostředí je docela zdařilé a přehledné.
Do budoucna se dle roadmapy chystají samá pěkná vylepšení a nové funkce jako například práce s indexy, možnost přidat nový záznam do tabulek, plná podpora zápisu pro LibMDB a LibMDBSQL, možnost extrahovat dotazy, VBA skripty, formuláře či vlastnosti tabulek, kontrola konzistence databáze, recovery tool, možnost přidávat vlastní tabulky do souboru a další. Z mého pohledu a díky testování těchto nástrojů bych však nejprve doporučoval pečlivě sledovat a řešit primárně bug reporty od uživatelů, jelikož chyb má zejména GUI stále dost a dost - příklad je na obrázku. Dalším nešvarem, jak už to tak bývá, je špatné zobrazování a vůbec práce s českými znaky. Myslím, že MDB Tools mají ambice být dobrou alternativou MS Accessu v prostředí Unixu a Linuxu - proto by jim slušela i lokalizace do vícero světových jazyků ;o).
Silným nástrojem unixu byly, jsou a budou programy pro příkazový řádek.
MDB Tools nám nabízí několik utilit pro práci s databázovým souborem .mdb
v linuxovém shellu. Většina dále jmenovaných programů má po instalaci své
vlastní manuálové stránky s podrobným popisem a syntaxí. Prvním z nich je
mdb-tables
, který nedělá nic jiného, než vypíše tabulky z dané databáze.
Dalším příkazem je mdb-schema
, který dokáže produkovat DDL výstup z MDB.
Jazyk DDL (Data Definition Language) je standard a tudíž je možné pomocí
schéma Access databáze následně vytvořit stejnou databázi v alternativním
databázovém prostředí. Podporovány jsou aktuálně MS SQL Server, MS Access,
Sybase, Oracle, PostgreSQL a MySQL. Exportovat je možné buď jednu tabulku
nebo obsah databázového souboru MDB. Příkaz posílá výstup na obrazovku -
doporučuji přesměrovat výstup pomocí roury do textového souboru s DDL.
mdb-schema soubor.mdb oracle > ddl_soubor.sql
|
mdb-export
umí generovat CSV výstup pro určenou tabulku. Pomocí
parametrů je možné nezobrazit v CSV hlavičku, určit si vlastní oddělovač,
nezabalovat pole typu text, memo a date do uvozovek. Takový výstup je pak
možné snadno importovat do jiných databázových prostředí a tabulkových
procesorů typu OpenOffice.org Calc.
mdb-ver
určí verzi databázového stroje, ve kterém byla databáze vytvořená. Výstup je buďto JET3 (Access 97) nebo JET4 (Access 2000/XP).
Prográmátoři a vývojáři databázových aplikací uvítají utility, které jim
vygenerují hlavičkové soubory pro práci s databází v jazyce C. Jedná se o
programy mdb-header
a mdb-parsecsv
.
Posledním, avšak velmi silným nástrojem command utilities, je samotné SQL
rozhraní pro shell. Příkazem mdb-sql
si tak můžete vaše data osahat tak,
jak jste zvyklí. Díky několika parametrům je možné poslat na vstup mdb-sql
příkazy ze souboru nebo naopak místo na STDOUT poslat výstup samotného
mdb-sql
do souboru pro pozdější použití. Opět je možné hrát si s hlavičkou,
a tentokráte i s patičkou, vypínat a zapínat pretty printing dle vašich
potřeb nebo použít vlastní oddělovače.
Nutno podotknout, že SQL je v Access
značně osobité a znalci SQL Serveru nebo Oracle a jeho PL/SQL si asi na své
zrovna nepřijdou. Navíc mdb-sql
obsahuje jen malou podmnožinu příkazů
jazyka SQL, kterou blíže definují manuálové stránky. Po zadání základního
příkazu s jeho možnými parametry se dostanete do interaktivního režimu
(tak jak je tomu napřiklad v utilitě isql)
a můžeme začít s laborováním.
Příkazem connect to
s názvem databáze se připojíte a můžete zadávat SQL
příkazy. Nápomocné vám budou list tables
a describe table
. Příkazy SQL se spustí pomocí go
, z databáze se odpojíte standardně pomocí příkazu disconnect
.
LibMDBODBC je ovladač, který pracuje s manažerem ovladačů unixODBC. Umožňuje MDB Tools přistupovat k datům z programovacích jazyků PHP či Perl pomocí DBD::ODBC. V aktuální chvíli je implementace ODBC v MDB Tools spíš experimentální záležitostí. Ovladač je postaven nad knihovnou LibMDB a LibMDBSQL.
Projekt "unixODBC" je samostatný a zcela nezávislý na MDB Tools a jeho cíl je vyvíjet a propagovat unixODBC jakožto standard ODBC na non-windows platformách a poskytovat vývojářům API pro přístup ke zdrojům dat, které v sobě zahrnují různé SQL servery a jiné zdroje dat, jež mají k dispozici ODBC ovladače. unixODBC je vcelku dobře zdokumentován. Zejména pak uživatelský manuál je přehledný, názorný a přitom stručný.
Ve druhém díle se dočtete o grafických nadstavbách, dalších pomocných nástrojích a také o konkrétních situacích, ve kterých by se MDB Tools mohly hodit - případové studie.
Tebe vadi, ze mozes viac, ako si mohol predtym?
Jediny, komu nezverejnenie formatu mdb vyhovuje, je Microsoft. A vyhovuje mu to preto, ze tym sa posilnuje jeho monopolne postavenie na trhu - co, ako vsetci vieme, Microsoft s oblubou zneuziva.
Ak vsak ja natypujem nejake data do mdb, tak tie data su moje. A ako sa k nim dostanem ja, alebo moj zakaznik, je cisto moja (resp. zakaznikova) vec a nevidim dovod preco by mal Microsoft na tom profitovat.
Microsoft isn't interested in interoperating with some Linux technology. Reiterating a point he made at the LinuxWorld Conference and Expo in January, Taylor [Microsoft's general manager for platform strategies] said it's the open-source community's responsibility to make sure Linux can share files properly with Windows systems. He likened the situation to the mid-1990s, when Microsoft took on the job of reverse-engineering Novell's IPX/SPX communication technology so Windows machines could easily fit into Novell networks.ZDNET
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.