2017-01-23 2 views
1

In meinem DFT habe ich eine OLE DB Quelle, die einen großen Datensatz in mein Paket lädt. Der Datensatz hat eine ganzzahlige Spalte mit dem Namen TYPE, deren Wert zwischen 1 und 200 liegt. Jeder Typ muss in eine separate Textdatei mit seinem Namen (1.text bis 200.txt, insgesamt 200 Textdateien) geladen werden.Verwenden von Skriptkomponente in SSIS zum Teilen von Daten

Zum Beispiel wird für alle Datensätze mit dem Typ 125 eine Textdatei mit dem Namen "125.text" erstellt und alle Zeilen mit dem Typ 125 gehen dorthin. Ich weiß, dass dies mit Conditional Split gemacht werden könnte, aber es wird lächerlich schwer sein. Also muss ich einfach einen besseren Weg finden.

+1

Ja, dies kann in einer Skriptumwandlung erfolgen. Sie müssen die gewünschten Ausgaben und Spalten im Designer erstellen und Zeilen im Skript nach Bedarf umleiten. Siehe https://msdn.microsoft.com/en-us/library/ms136114.aspx. –

+0

Anstatt 200 Ausgabeports zu erstellen, warum nicht die Skriptkomponente als Ziel verwenden? Haben alle Dateien das gleiche Layout? – Joost

+0

Ja, sie haben alle das gleiche Layout. Ich möchte keine 200 FF-Ziele haben. Deshalb suche ich nach einer Script Component-Lösung. – TheEsnSiavashi

Antwort

0

Ich habe den folgenden Code in C# in Script Component verwendet und es funktioniert.

public override void Input0_ProcessInputRow(Input0Buffer Row) 
{ 
    string path = Path.Combine("C:\\", Row.TYPE + ".txt"); 
    if (File.Exists(path)) 
     { 
      using (StreamWriter file = new StreamWriter(@path, true)) 
        { file.WriteLine(Row.Record);} 
     } 
    else 
     { 
      File.WriteAllText(@path, "File HEADER "); 
      using (StreamWriter file = new StreamWriter(@path, true)) 
        { file.WriteLine("\n");} 
     } 
} 
Verwandte Themen