Automatisierter Batch CSV Import mit MS Access
Das Beispiel zeigt wie mit Hilfe des Access Adapters und dem Batch Modul mehrere CSV Textdateien automatisiert in eine MS Access Datenbank Tabelle importiert werden können.
Die fertige Definition können Sie sich im Verzeichnis Examples\DE\AccessAdapter\csv-batch-import-ms-access.fhd ansehen. Alle Beispiele sind im ZIP Archiv zum FlowHeater enthalten. Das Beispiel kann für die Access Versionen 97 bis Office/Access 2016 verwendet werden. Es werden die Datenbankformate MDB, MDE, ACCDB und ACCDE unterstützt.
Die Aufgabenstellung
Wir wollen mehrere (1 - n) CSV Textdateien, die in einem Verzeichnis vorhanden sind, automatisiert in eine MS Access Datenbank Tabelle importieren. Um diese Problemstellung lösen zu können, benötigen wir zwingend das Batch Modul (FHBatch.exe) sowie ein kleines CMD Shell Skript mit dem wir das ganze steuern.
Die Umsetzung
Da der FlowHeater in der Definition keine Wildcards, o.ä. zulässt, müssen wir für dieses Vorhaben einen kleinen Trick anwenden. Wir legen uns zuerst eine FlowHeater Definition an, mit der wir eine CSV Textdatei problemlos von Hand importieren könnten. Nachdem wir den CSV Import getestet haben speichern wir die Definition unter den Namen CSV-Batch-Import-MS-Access.fhd ab. Dann erzeugen wir eine CMD Shell Skript Datei batch-import.cmd mit folgenden Inhalt.
Das CMD Shell Skript (batch-import.cmd)
@echo off
REM Hier ggf. den Installationspfad zur FHBatch.exe anpassen!
set FHBATCH="C:\Program Files\FlowHeater V4\BIN\FHBatch.exe"
%FHBATCH% /ReadFileName C:\Temp\*.csv import.fhd
Hiermit verarbeitet das Batchmodul alle CSV Dateien die im Order C:\Temp vorhanden sind.
Hinweis: Alle vorhandenen CSV Dateien müssen den gleichen Aufbau haben, so wie es in der FlowHeater Definition import.fhd angegeben wurde!
Ältere FlowHeater Versionen unterstützen Wildcards über den Parameter /ReadFileName noch nicht. Hier müssen Sie folgendermaßen vorgehen.
Das CMD Shell Skript (batch-import.cmd) - Version 1.x
@echo off
forfiles /M batch-import*.csv /C "cmd /c ..\..\..\Bin\FHBatch.exe /ReadFileName @path csv-batch-import-ms-access.fhd"
Der Befehl forfiles (klicken Sie hier um mehr Informationen zum forfiles Befehl zu erhalten) ermittelt als erstes alle CSV Textdateien im aktuellen Verzeichnis die dem Muster batch-import*.csv entsprechen. Dies geschieht mit der Option /M und dem nachfolgenden Muster. Für jede gefundene CSV Textdatei wird dann das Batch Modul (FHBatch.exe) mit folgenden Parametern aufgerufen.
FHBatch.exe /ReadFileName @path csv-batch-import-ms-access.fhd
Die Option /ReadFileName überschreibt die in der FlowHeater Defintion (csv-batch-import-ms-access.fhd ) angegebene CSV Textdatei mit der gerade aktuelle zu verarbeiteten Datei (= @path).
Import/Export Aufgaben automatisieren
Automatisieren mit Hilfe des FlowHeater Servers
Mit dem FlowHeater Server können sehr leicht solche Import/Export Aufgaben geplant und in regelmäßigen Zyklen ausgeführt werden. Mit dem FlowHeater Server ist es außerdem möglich Verzeichnisse zu überwachen und neue CSV Dateien unverzüglich nach der Erstellung automatisiert verarbeiten zu lassen. Der FlowHeater Server bietet zudem die Möglichkeit Email Benachrichtigungen inkl. der generierten Dateien zu verschicken.
Automatisieren über den Windows Aufgabenplaner
Das CMD Shell Skript können wir, so wie es ist, manuell über einen Doppelklick ausführen. Wenn Sie das ganze z.B. auf einen Windows Server automatisch ausführen lassen wollen dann können Sie dieses CMD Shell Skript über einen Windows Task zeitgesteuert aufrufen.
Den Windows Aufgabenplaner finden Sie unter Systemsteuerung->Verwaltung->Aufgabenplanung
Microsoft®, Windows®, Access® sind eingetragene Markenzeichen der Microsoft Corporation