Můžete použít dva různé přístupy.
První je tak, jak je nastíněno user569711 a používá ForEach Enumerator a volá vaši existující uloženou proceduru. Výhodou je, že vaše chování by mělo být přesně takové, jaké právě zažíváte, a vaše testování by se mělo soustředit pouze na zajištění toho, aby balíček SSIS sbíral správné soubory.
Druhým je použití možností SSIS po vybalení k řešení importu typů BLOB.
Řízení toku
Budete chtít definovat 1 až 2 proměnné v závislosti na vašem přístupu. Oba budou řetězcové datové typy. Vytvořil jsem SourceFolder
a CurrentFileName
. První definuje, odkud budou soubory pocházet, a používá se v obou přístupech. Ten se používá v kontejneru ForEach Loop Container k zachycení "aktuálního" souboru.
Datový tok
Aby tok dat fungoval, budete muset do kanálu přidat úplný seznam názvů souborů. Nejjednodušší způsob je použít transformaci skriptu, která funguje jako zdroj a nechat přidat všechny soubory splňující vaši podmínku (*.xml).
Kontejner Foreach Loop
Konfigurovat jako takové
Kolekce
Mapování proměnných
Spustit úlohu SQL
Nakonfigurujte takto
Zdroj skriptu
Tato úloha přidá dostupné soubory do datového toku. Drobná poznámka, toto bude procházet podsložky, které se liší od toho, jak máme nakonfigurovaný Foreach. Je to jednoduchá změna třetího parametru (nebo vynechání), aby se stal pouze nejvyšší úrovní.
Identifikujte svou proměnnou, aby byla dostupná v úloze skriptu
Přidejte příslušné výstupní sloupce. Vaše délky se mohou lišit v závislosti na vašem prostředí.
Skript zde
using System;
using System.Data;
using System.IO;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
public override void CreateNewOutputRows()
{
string fileMask = string.Empty;
string sourceFolder = string.Empty;
fileMask = @"*.xml";
sourceFolder = this.Variables.SourceFolder;
foreach (string fileName in Directory.GetFiles(sourceFolder, fileMask, SearchOption.AllDirectories))
{
Output0Buffer.AddRow();
Output0Buffer.FileName = fileName;
Output0Buffer.SourceName = "Dataflow";
}
}
}
Importovat transformaci sloupců
Nakonfigurujte takto
Poznamenejte si ID zde
Přivažte toto ID zpět ke sloupci s názvem
Cíl OLE DB
Konfigurovat. Nepodporuje možnost rychlého načítání.
Odkaz
Pěkný příspěvek o použití Importní transformace sloupců