Mit CSV-Daten kann der Import nach i-doit automatisiert werden

Häufig existieren im Unternehmen viele Daten, die Sie in die CMDB übernehmen sollten. Dies können vorhandene Excel-Tabellen sein, die kontinuierlich gepflegt wurden. Verschiedene Applikationen und Dienste verfügen ebenfalls über wichtige Informationen. Denken Sie dabei z. B. an Wiki-Systeme (Knowledgebase) oder Inventarisierungstools. Auch diese bieten meist eine Funktion für den Export der Daten. Liegen diese Daten als CSV-Dateien vor, lässt sich der Import in i-doit ganz schnell automatisieren.

Sollte es keine API oder andere Exportmöglichkeiten geben, müssen Sie direkt auf die Datenbasis zugreifen. Häufig werden die Daten in einer Datenbank wie z. B. Postgresql, MySQL, MariaDb oder MongoDB gespeichert. Aus den Datenbanken können Sie Informationen einfach als SQL-Query gemäß Ihren Anforderungen zusammenstellen und regelmäßig (z.B. als Cronjob) extrahieren.

Datenquellen für den CSV Export

Was müssen Sie im Vorfeld beachten? Sie müssen geeignete Datenquellen identifizieren.

Was aus dem einen System automatisch extrahiert werden kann, können wir auch über das i-doit CLI (Command Line Interface) regelmäßig und automatisiert importieren. Dadurch erreichen wir eine automatisierte Aktualisierung der Daten und senken gleichzeitig den Dokumentationsaufwand der Mitarbeiter.

Export von Daten aus der Datenbank und Transfer nach i-doit

Den automatisierten Datenimport realisieren

Im ersten Schritt müssen Sie Ihre Datenquellen identifizieren. Welche Daten wollen Sie importieren und wo sind diese aktuell gespeichert? Werden diese regelmäßig durch einen Mitarbeiter oder eine andere Abteilung aktualisiert? Sollen diese Daten regelmäßig aus einer Datenbank oder Applikation exportiert werden?

Prüfen Sie die Möglichkeiten und erstellen Sie ggf. einen Testdurchlauf Ihres Querys. Es kann vorkommen das Sie Informationen nicht in der gewünschten Form extrahieren können. Dies könnte z.B. dann der Fall sein, wenn Sie nur den Hostname aber nicht den FQDN extrahieren können. In diesem Fall empfehlen wir den Export einfach noch über ein Script für die geeignete Form anzupassen.

Ein Beispiel hierzu:

Beispiel einer CSV-Datei

Wir exportieren aus einem Inventarisierungstool Hostname, Hersteller, Modell und Seriennummer unserer Clients. Wir möchten allerdings nicht nur den Hostnamen, sondern den vollständigen FQDN später importieren.

Für diesen Fall erstellen wir ein kleines Powershell-Script das die vorhandene CSV-Datei einliest und erweitert. Dieses Script nehmen wir entweder lokal oder auf unserem Windows Server in die Aufgabenplanung (Task Scheduler) für die automatische Ausführung auf.

$Data = Import-Csv -Path "C:\data\Clients.csv" -Delimiter ';' | ForEach-Object { $_.Hostname = $_.Hostname + '.i-doit.com'; $_ } | ConvertTo-Csv -NoTypeInformation -Delimiter ';' Out-File "C:\data\Clients-erweitert.csv" -InputObject $Data

Beispiel einer CSV-Datei, automatisiert erweitert

Nachdem unsere CSV-Datei nun im gewünschten Format vorliegt, starten wir einen Testlauf und erstellen dabei auch gleich unser notwendiges CSV-Profil für den Import. Dazu laden wir die erweiterte CSV-Datei unter Extras -> Import -> CSV-Import hoch und konfigurieren das Mapping.

Wichtig: Unbedingt das konfigurierte Mapping als Profil für den Import speichern.

Anlegen eines CSV-Import Profils in i-doit

Nachdem der Importvorgang gestartet wurde, werden die Objekte erstellt bzw. diese aktualisiert. Danach wechseln wir auf die Konsole. Um nun den automatischen CSV-Import zu konfigurieren, müssen wir im ersten Schritt die ID unseres CSV-Profiles kennen.

Dazu geben wir folgendes Kommando in die Konsole ein:

sudo -u www-data php /var/www/html/console.php csv-profiles --user admin --password admin --tenantId 1
Die Konsole nach Eingabe des Import-Befehls idoit

In diesem Beispiel hat unser Profil die ID 9. Je nachdem wie viele verschiedene CSV-Dateien importiert werden sollen, kann es ggf. hilfreich sein, diese in verschiedenen Dateien zu organisieren. Dazu erstellen wir z.B. einen neuen Cron mit sudo nano csv-clients und legen einen neuen Cronjob an. Hier müssen wir nun unbedingt das korrekte Importprofil angeben und den Pfad zu unserer CSV-Datei.

* * * * * www-data /usr/bin/php /var/www/html/console.php import-csv --user admin --password admin --tenantId 1 --importFile /var/www/html/imports/1/clients-erweitert.csv --importProfileId 9 --csvSeparator ";" --multiValueMode column

Zum Abschluss müssen wir nun nur noch die notwendigen Dateien regelmäßig zum oben angelegten Pfad per cURL kopieren. 

Der automatische Import von CSV-Daten ist somit eine schnelle und kostengünstige Alternative, da keine zusätzliche Schnittstelle benötigt wird. 

Pattrick Bluhm - Mit-Autor des i-doit Blogs

Der Autor

Pattrick Bluhm ist zertifizierter IT-Projektmanager im Bereich ITSM, IT-Dokumentation und CMDB. Er konzipiert und realisiert Dokumentationsprojekte mit i-doit für mittelständische Unternehmen in der DACH-Region. Im Jahr 2020 veröffentlichte er das Buch "IT-Dokumentation - Projekte erfolgreich umsetzen".

Senden Sie eine E-Mail an i-doit

Haben Sie Fragen zu diesem Artikel oder zur i-doit Software? Senden Sie uns eine E-Mail. Wir freuen uns auf Ihre Nachricht.

Laden Sie die Testversion von i-doit herunter

Probieren Sie die Tipps aus diesem Artikel direkt aus. Laden Sie sich die kostenfreie i-doit 30 Tage Testversion herunter.

doITbetter Conference 2021 Banner