Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!

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.

MS Access CSV Batch ImportMS Access CSV Batch Import

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"

Hinweis: Falls bei Ihnen der forfiles Befehl nicht vorhanden ist, (Windows Version kleiner Vista oder Windows 2003) können Sie sich den forfiles Befehl auch von ftp://ftp.microsoft.com/ResKit/y2kfix/x86 herunterladen.

Leider ist dann hier die Syntax des Aufrufes etwas anders :-(

@echo off
forfiles -mbatch-import*.csv -c "cmd /c ..\..\..\Bin\FHBatch.exe /ReadFileName @FILE 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).

 

Automatisieren über einen Windows Task

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.

Unter Windows 2000, (2003 Server), bzw. XP finden Sie den Taskplaner unter Windows Explorer->Systemsteuerung->geplante Tasks
Unter Windows Vista finden Sie den Taskplaner unter Programme->Zubehör->Systemprogramme->Aufgabenplanung
Ab Windows 2008 Server bzw. Windows 7 finden Sie den Taskplaner und unter Systemsteuerung->Verwaltung->Aufgabenplanung

 

Microsoft®, Windows®, Access® sind eingetragene Markenzeichen der Microsoft Corporation