# Lotus Domino Datenbanken auslesen und in eine SQL Datenbank schreiben (Linux)



## sdh (13. Januar 2004)

Hallo,

ich möchte aus einer bestehenden Lotus Domino Datenbank (V.5, unter Windows 2000) Daten auslesen und in eine MySQL Datenbank (auf Linux) schreiben. 
Der Zweck ist die Daten aus der Dominodatenbank für diverse Reports per Web und auch übernahmen in Excel (per ODBC auf die MySQL) verfügbar zu machen.
Derzeit wird per Dominoagent zeitgesteuert ein CSV File geschrieben, was aber immer eine gewisse zeitliche Verzögerung mit sich bringt.

Das eigentliche Problem ist derzeit die ACL der Dominodatenbank.

Meine bisherige Idee war eine Ansicht in der Datenbank zu erstellen, welche die einzelnen Datensätze (Werte mit einem Trenner z.B. ~ getrennt) Zeilenweise ausgibt. Diese Ansicht könnte ich mit  
	
	
	



```
$fp = fopen("http://server/db.nsf/ansicht?OpenView","r");
```
  auslesen und dann weiterverarbeiten.
Das ganze funktioniert auch solange die Datenbank Anonymen Zugriff erlaubt.
Ein Zugriff auf die Datenbank mit http://user:pass@server/db.nsf...  ist leider nicht Möglich. Auch eine gehoffte Variante, das ich z.B. anonymen Zugriff von einer besimmten IP aus zulasse wird von Lotus Domino nicht unterstützt und hat sich somit in Luft aufgelöst.

Ich habe einige Sachen in diversen Foran gefunden, aber nichts was mich weiter gebracht hat (was sicher auch an meinen fehlenden Java Script Kenntnissen liegt).

Wenn jemand eine Idee , eine ähnliche Lösung bereits anwendet, eine komplett andere Idee hat... oder aber auch an einem ähnlichen Problem sitzt. Ich bin da für alles offen. Ich habe sowohl auf dem Linux als auch auf dem Dominoserver incl. der Datenbank volle Administationrechte, was die Sache ggf. vereinfacht.

Gruß und viele Dank im voraus...
Sascha


----------



## zeromancer (15. Januar 2004)

Hi!

Ich nehme mal an, dass der Anonyme Benutzer keinen Zugriff aud die Domino-DB hat?
Wie auch immer, ist es ja möglich, einem Anonymen Benutzer per ACL das sogen. "Öffentliche Lese- und/oder Schreibrecht" zu geben. 
Entsprechend muss in der Lesezugriffskontrollliste der Ansicht(letzter Tab in den Eigenschaften der Ansicht im Designmodus) "verfügbar für Benutzer mit öffentlichem Lesezugriff" aktiviert sein.
Das dürfte erst mal Dein Vorhaben wieder in Gang bringen


----------



## sdh (15. Januar 2004)

Hi,
das ist richtig, die Datenbank hat keinen Anonymen Zugriff in der ACL. Das muß aber auch so bleiben. Auch die Ansicht mit den Daten, welche ich in die SQL Tabelle importieren will darf nicht öffentlich lesbar sein. Von daher komme ich um eine Authentifizierung nicht herum


----------



## zeromancer (15. Januar 2004)

Ich erkenne aus Deinen Worten, dass Du die Daten in die SQL-DB importieren willst.... Wie wärs umgekehrt? Du hattest auch von einem Agenten geschrieben, der eine CSV Datei anlegt. Stattdessen könnte ein anderer Agent eine direkte Verbindung zu Deiner DB vornehmen (mittels ODBC) und dort die Datenablegen.
Über welche Datenmenge reden wir hier? ODBC ist bekanntlich nicht das schnellste...
Der Zugriff auf eine ODBC Quelle erfolgt prinzipiell per Lotusscript - falls es da Probleme geben sollte, einfach nochmal fragen.


----------



## sdh (15. Januar 2004)

Das ist richtig, derzeit wird eine CSV erzeugt welche dann per Script (auf dem Linux) wieder in die SQL importiert wird.
Das Problem ist aber, wenn ich nun per Web auf die SQL Daten zugreifen will, dann ist der Datenstand immer abhängig vom letzte export durch den Notes Agenten.

Wenn ich direkt auf die Ansicht zugreifen könnte, dann hätte ich ja mehr oder weniger "Realtime" Daten.

Aber das mit dem ODBC ist nen guter Ansatz, damit kann ich mir den Schritt des importierens von der CSV in die SQL ersparen.

Also vom Grunde her müßte ich den vorhandene CSV Export Agenten doch nur umschreiben, anstatt in eine Datei die Daten in die SQL schreiben lassen.
Oder sollte man da besser DECS nutzen? Da hätt ich nämlich das nächste Problem, aber gehört hier nicht her (evtl. kommt ja mal nen Notes/Domino Forum hier

Gut, werde mir dann mal ein wenig die Domino SQL Geschichte anschaun'. Aber schonmal vielen Dank für den Denkanstoß!


----------



## sdh (15. Januar 2004)

zur Ergänzung...

Es sind keine sehr großen Datenmengen. Geht um ca. 400 Dokumente und je 30 Felder. Nicht Speicherfressendes, alles nur Zahlen und ein wenig Kommentartexte. Das sollte per ODBC schon klappen, das exportieren in eine CSV ist ja sicher auch nicht gerade nen PErformancekünstler


----------



## zeromancer (15. Januar 2004)

DECS wird benutzt, um auf externe Daten in fast-realtime zuzugreifen (von der Notesseite aus), nützt Dir also bei dem Problem nur eingeschränkt.
Das sind zwar nicht viele Daten, aber man beachte folgendes:

Das analysieren der vorhandenen Daten (in Extern) und das Abgleichen derselben mit dem Agenten dauert länger, als sie immer wieder neu zu schreiben. 
Hatte das mal bei einem Kunden, der allerdings jeden Tag fast 70000 Dokumente aus einer Access-DB erzeugen musste, inkl. Fieldtranslation und Fieldmapping - alles ohne LEI & Co. (aktiv per Notesagent). Da stellte sich heraus, dass lieber die Daten erst gekillt und dann neu geschrieben wurden - das ging schneller, dauerte aber immer noch etwa 8 Stunden!

400 Dokumente in eine ODBC Quelle schreiben dürfte etwa 10 Sekunden dauern, d.h. Dein Agent könnte doch alle sagen wir mal 5 Minuten laufen? So wäre es zwar nicht Echtzeit, aber doch relativ aktuelle. Ich weiss ja nicht, inwiefern Deine Daten aktualisiert werden dass man mit 5 Minuten schon ausserhalb des Zeitfensters ist !?

Dein Resumee war allerdings richtig - kleiner Tipp: schreibe einen neuen Agenten, das geht ebenfalls schneller, als einen vorhandenen umzubauen, da der Aufbau eines ODBC-Scripts total anders ist, das der des CSV-Agenten.

Viel Erfolg!


----------



## joe_the_quick (13. Februar 2005)

hallo,

Dafür könnte für Dich folgendes Produkt interessant sein:
http://www.easymda.org/notesdb/de/default.htm

Dieses ermöglicht den Export von kompletten Notes-Datenbanken in eine SQL-Datenbank ohne Programmierung! Die Basisversion ist gratis und Open Source, für Richtext-Items gibt e s eine kommerzielle Version.

lg
joe


----------

