Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

wstaw plik XML do SQL przez SSIS

Istnieją dwa różne podejścia, które możesz zrobić.

Pierwszy jest opisany jako user569711 i użyj modułu wyliczającego ForEach i wywołaj istniejącą procedurę składowaną. Zaletą tego jest to, że twoje zachowanie powinno być dokładnie takie, jakiego obecnie doświadczasz, a twoje testy powinny skupiać się tylko na upewnieniu się, że pakiet SSIS pobiera właściwe pliki.

Drugim jest wykorzystanie gotowych możliwości SSIS do radzenia sobie z importowaniem typów BLOB.

Przepływ sterowania

Będziesz potrzebował od 1 do 2 zmiennych zdefiniowanych w zależności od twojego podejścia. Oba będą typami danych typu string. Utworzyłem SourceFolder i CurrentFileName . Pierwsza określa, skąd będą pochodzić pliki i jest używana w obu podejściach. Ten ostatni jest używany w kontenerze pętli ForEach do przechwytywania „bieżącego” pliku.

Przepływ danych

Aby przepływ danych działał poprawnie, musisz dodać do potoku w pełni kwalifikowaną listę nazw plików. Najprostszym sposobem jest użycie transformacji skryptu, działającej jako źródło i dodanie wszystkich plików spełniających twój warunek (*.xml).

Kontener pętli foreach

Skonfiguruj jako taki

Kolekcja

Mapowania zmiennych

Wykonaj zadanie SQL

Skonfiguruj w ten sposób

Źródło skryptu

To zadanie doda dostępne pliki do przepływu danych. Drobna uwaga, spowoduje to przechodzenie przez podfoldery, które różnią się od konfiguracji Foreach. Jest to prosta zmiana trzeciego parametru (lub pominięcia), aby ustawić go tylko na najwyższym poziomie.

Zidentyfikuj swoją zmienną, aby była dostępna w zadaniu skryptu

Dodaj odpowiednie kolumny wyjściowe. Twoje długości mogą się różnić w zależności od środowiska.

Skrypt tutaj

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";
        }
    }
}

Importuj przekształcenie kolumny

Skonfiguruj w ten sposób

Zapisz tutaj swój identyfikator

Przywiąż ten identyfikator z powrotem do kolumny z nazwą

Miejsce docelowe OLE DB

Konfiguruj. Nie obsługuje opcji szybkiego ładowania.

Odniesienie

Miły post na temat korzystania z Importuj transformację kolumny




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przestrzeń wykorzystywana przez wartości null w bazie danych

  2. Naturalne łączenie w SQL Server

  3. Jakie są różnice między indeksem klastrowym a nieklastrowym?

  4. Jak uzyskać listę dostępnych serwerów SQL za pomocą kodu C#?

  5. Jak zainstalować sqlcmd i bcp na Ubuntu?