2016-05-01 11 views
-2

Ich bekomme Dateien an einen freigegebenen Speicherort. Jede Datei hat ein anderes Meta. Dateiname, ErstellungsdatumIdentifizieren von doppelten Dateien basierend auf Dateninhalt in SSIS

Ich muss die Daten mit SSIS extrahieren, wenn und nur wenn Dateiinhalt anders als zuvor verarbeitete Dateien ist.

+0

wenn Daten zu überprüfen ist anders, ich denke, Sie müssen diese Daten sehen. Markierung unklar. –

+0

Hi ich meine, wenn Korrektor im Dateiinhalt geändert wird. –

Antwort

1

Dies sollte ziemlich geradlinig sein -

  1. einen ForEach Behälter For Each File Einstellung konfiguriert verwenden. Folder name wäre der gemeinsame Standort. File Name sollte ein Platzhalter sein (Beispiel: * .csv)
  2. Erstellen Sie eine Tabelle in SQL mit dem Namen LoadedFiles, die die Namen der geladenen Dateien enthält. Beachten Sie, dass Sie beim Erstellen des ForEach Containers auch eine Variable erstellt haben, die den Dateinamen enthält. Überprüfen Sie jetzt im Container ForEach, ob der Wert in dieser Variablen bereits in der Tabelle LoadedFiles vorhanden ist. Wenn nicht, dann erst laden.

Ich habe angenommen, dass alle Dateien die gleichen Metadaten (Spaltennamen und Datentypen) haben. Selbst wenn sie dies nicht tun, können Sie dieselbe Logik anwenden.

Wenn dies nicht offensichtlich ist, müssen Sie eine neue Zeile in die Tabelle LoadedFiles einfügen, wenn Sie sich entscheiden, eine Datei zu laden.

EDIT: Es scheint, dass der gleiche Dateiname nicht den gleichen Inhalt für das OP gleichzusetzen. In diesem Fall sollte er einfach eine MERGE in der SQL-Tabelle anstelle einer Blindeinfügung machen.

MERGE auf dem Primärschlüssel und IF MATCHED nichts anderes tun INSERT

+0

hi table Datei laden kann verwendet werden, wenn Dateiname (Meta der Datei) gleich sind. –

+0

In diesem Fall sollte der obige Ansatz gut funktionieren. – freakyhat

+0

hi denke, ich habe eine Datei a.csv Inhalt 'a' und eine andere Datei b.csv und es haben auch die gleichen Daten 'a' dann sollte ich nicht b.csv verarbeiten, aber wenn b.csv 'a' dann muss ich Prozess. –