Announcement

Collapse
No announcement yet.

SQL-Server 2005 Flatfile automatisiert einlesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL-Server 2005 Flatfile automatisiert einlesen

    Hallo Allen im Forum,

    bin auf der Suche nach Denkanstößen und Lösungen für folgende Problemstellung:

    Unter System SQL-Server 2005 EP soll ein SSIS Paket erstellt werden, welches
    a) prüft ob ein/das Flatfile vorhanden ist
    b) das Flatfile einliest
    c) ein Datumsfeld im Format "2008-12-31" in "31.12.2008" konvertiert
    d) soll sichergestellt werden, das das Flatfile 1:1 eingelesen wird, und bei etwaigen Fehlern anhand einer Datensatz oder Zeilen-Nr. der Fehler eindeutig identifiziert werden kann.
    e) nach erfolgreicher Abarbeitung soll das ursprüngliche Flatfile in einen BackUp-Ordner verschoben werden.

    Die Punkte: b) und c) habe ich über einen Datenfluss-Task realisiert, komme jedoch bei den anderen Punkten noch nicht weiter.

    Versuche mit SQL-Task sind bisher gescheitert, auch die Protokollierung des Paket's, entspricht nicht den Vorstellungen, zwecks Fehlererkennung

    Fragen:
    a) Kann die Lösung in einem Script-Task liegen, um alle notwendigen Schritte in einem Durchgang realisieren zu können ?

    b) Und wie müsste ein solcher Script-Task in etwa aufgebaut sein ?


    Bin für jeden hilfreichen Ansatz dankbar.

  • #2
    Hallo Robert,

    was Du erreichen willst, geht über Scripting. Allerdings kannst Du nicht alles in ein Skript packen.

    Zu a) Du kannst z. B. die Prüfung, ob eine Datei vorhanden ist oder nicht nur in der Aublaufsteuerung durchführen, da dies pro Import ein einmaliger Vorgang ist. Eine Anregung findest Du hier:

    http://pragmaticworks.com/community/...ript-task.aspx

    Besser gehts über die File Watcher Task von Konesans. Wird diese Task an den Anfang der Ablaufsteuerung gestellt und das Paket gestartet, pausiert dieses so lange, bis eine Datei im Verzeichnis auftaucht.

    Zu b) Wie man eine FF-Quelle konfiguriert, sollte klar sein.

    zu c) Die Umwandlung des Datumsformates findet dann im Datenfluss statt. Hierzu gibt es das, was Du suchst genau hier:

    http://sqlblogcasts.com/blogs/jorg/a...ript-task.aspx

    Zu d) Wenn Du nicht bereits im FF eine eindeutige Zeilennummer übergeben willst/kannst, dann kannst Du Dir zur Paketlaufzeit über ein Skript einen "Surrogate Key" erstellen. Mit ein wenig gegoogle findest Du dies hier:

    http://www.ssistalk.com/2007/02/20/g...urrogate-keys/

    Fehlerhafte Datensätze können dann über die Fehlerausgabe einer Datenfluss-Komponente vom normalen Datenstrom getrennt werden und so in ein Error-Logging wandern. (also kein Skript)

    Zu e) Natürlich könnte man über eine Script-Komponente die WMI ansprechen und so auf das Dateisystem zugreifen, um die Datei in ein anderes Verzeichnis zu verschieben. Viel einfacher geht es aber natürlich über eine Dateisystem-Task in der Ablaufsteuerung. Damit kannst Du alles mit einer Datei machen. Über Expressions kannst Du der Datei dann z. B. auch gleich noch eine Timestamp mitgeben, sodass diese dann hübsch geordnet im BackupOrdner erscheinen.

    Also, Du siehst schon. Es geht sehr viel mit Script-Tasks und Script Components. Allerdings gibt es für bestimmte Aufgaben einfachere Werkzeuge im SSIS.

    Gruß, Alexander

    Comment

    Working...
    X