mksqlite
mksqlite ist ein Open-Source Projekt, mit dem eine Schnittstelle von MATLAB Skripten
zu der SQL Datenbank SQLite als MATLAB als MEX-Dll realisiert wurde.
Über den Befehl "mksqlite" können alle Features von SQLite in MATLAB Skripten
verwendet werden. Die Aufrageergebnisse werden als ein array von strukturen an das aufrufende
skript zurück gegeben. Der Einsatz von der MATLAB Kommandozeile aus ist ebenso möglich.
Versionen
mksqlite arbeitet auf Grundlage von SQLite (www.sqlite.org).
Als MATLAB Versionen wurden R13SP1, R14SP2, 2006a, 2008b, 2009a, 2011a und 2011b eingesetzt.
mksqlite läuft auf Windows, Linux und MAC OS-X.
Installation
Das Binärpacket für Windows Systeme befindet sich auf https://sourceforge.net/projects/mksqlite/files/
Einfach den Inhalt der ZIP-Datei in einem Verzeichnis im Suchpfad von MATLAB
installieren oder ein neues Verzeichnis in den Suchpfad aufehmen.
Weitere Binärversionen können einfach über das Quelltextpaket erstelt werden.
Quelltexte verwenden
Die Quelltexte befindet sich auf https://sourceforge.net/projects/mksqlite/files/
Für die Übersetzung der Quelltexte wird MATLAB und unter Windows der
Microsoft Visual C++ Compiler in der Version 2003, 2005, 2010 oder 2014 benötigt.
Bei Linux und MAC OS-X Systeme kann der dort vorhandene GCC-Compiler verwendet werden.
Die Übersetzung wird aus MATLAB durch ausführen des skriptes "buildit.m" gestartet.
Online Hilfe
Die Onlinehilfe kann MATLAB typisch mit "help mksqlite" aufgerufen werden.
Benutzung
Genereller Aufruf:
dbid = mksqlite([dbid, ] SQLBefehl [, Argument]) |
Der Parameter dbid ist optional und wird nur dann benötigt, wenn mit
mehreren Datenbanken gleichzeitig gearbeitet werden soll. Wird dbid
weggelassen, so wird automatisch die Datenbank Nr. 1 verwendet.
Funktionsaufrufe:
mksqlite('open', 'datenbankdatei' [,'ro'|'rw'|'rwc'] [,'single'|'multi'|'serial']) |
oder
dbid = mksqlite(0, 'open', 'datenbankdatei' [,...]) |
Öffnet die Datenbankdatei mit dem Dateinamen "datenbankdatei". Wenn eine
solche Datei nicht existiert wird sie angelegt.
Wenn eine dbid angegeben wird und diese sich auf eine bereits geöffnete
Datenbank bezieht, so wird diese vor Befehlsausführung geschlossen. Bei
Angabe der dbid 0 wird die nächste freie dbid zurück geliefert.
mksqlite('close') |
oder
mksqlite(dbid, 'close') |
oder
mksqlite(0, 'close') |
Schliesst eine Datenbankdatei. Bei Angabe einer dbid wird diese Datenbank
geschlossen. Bei Angabe der dbid 0 werden alle offenen Datenbanken
geschlossen.
mksqlite('SQL-Befehl') |
oder
mksqlite(dbid, 'SQL-Befehl') |
Führt "SQL-Befehl" aus.
FAQ
Mein Windows MATLAB findet mksqlite nicht.
Stellen Sie sicher das sich mksqlit.mexw32 im MATLAB Suchpfad
oder im aktuellen Verzeichnis vefindet.
MATLAB meldet "Attempt to execute SCRIPT mksqlite as a function"
Dabei scheint es sich um eine ältere MATLAB Version zu halten.
Versuchen Sie einmal die Datei "mksqlite.mexw32" in "mksqlite.dll"
umzubenennen. Wenn das nicht hilft müssen Sie sich eine eigene
Version von mksqlite mit Hilfe der Quelltexte erstellen.
Funktioniert mksqlite auch mit einem 64Bit MATLAB oder mit einer
anderen Version von MATLAB unter Linux, Solaris, OS-X, ...
Ja, das Paket enthält auch 64Bit Versionen
(mksqlite.mexw64, mksqlite.mexa64)
Wie kann ich mir eine eigene Version von mksqlite übersetzen?
Sie benötigen dazu MATLAB und einen Compiler der eine MEX-Erweiterung
erstellen kann. Bei Windows Systemen bietet sich einer der Microsoft
Compiler an, bei anderen Systemen ist in der Regel ein GNU Compiler vorhanden.
Dann benötigen Sie die Quelltexte von mksqlite, diese befinden sich im
Source-Paket. In diesem Paket befindet sich das Skript "buildit" welches
einfach von der MATLAB Kommandozeile aus aufgerufen werden muss.
Das einfügen von Daten ist sehr langsam. Geht das auch schneller?
SQLite legt bei jeder Schreiboperation eine Journaldatei an. Das einfügen
von Daten kann erheblich beschleunigt werden indem mehrere Daten in einer
Transaktion auf einmal eingefügt werden oder indem die Journalfunktionen
für die Datenbank über pragma Anweisungen geändert werden.
Weitere Infos dazu finden sich in der SQLite Dokumentation.
Wie kann ich Fehler bei den Datenoperationen bearbeiten?
mksqlite unterstützt den normalen MATLAB try ... catch Mechanismus.
Was kostet mksqlite?
Die Benutzung von mksqlite ist kostenlos.
Wer aber der Meinung ist das so eine Software jede Unterstützung Wert
ist kann mich gerne anschreiben und mir einen Vorschlag unterbreiten.
Ich benötige die Funktion xyz, Wie sieht es mit weiteren Funktionen aus?
Wenn Sie eine neue Funktion implementiert oder eine Idee dazu haben, dann
können Sie mich gerne darüber informieren. Ich werde das dann entweder
übernehmen oder Ihnen einen anderen Weg zur Lösung Ihres Problems vorschlagen.
Kann ich irgendwie bei der Entwicklung von mksqlite helfen?
Klar, dokumentieren, übersetzen, erweitern, fehler melden, ...
Oder mir einfach nur mitteilen wofür Sie mksqlite einsetzen.
Unter welcher Lizenz wird mksqlite vertrieben?
Für mksqlite gilt die LGPLv3
eMail Contact:
Martin Kortmann, mail@kortmann.de
Andreas Martin, andimartin@users.sourceforge.net