Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

вмъкнете XML файл в SQL чрез SSIS

Има два различни подхода, които можете да направите.

Първият е както е описано от user569711 и използвайте ForEach Enumerator и извикайте вашата съществуваща съхранена процедура. Предимството на това е, че вашето поведение трябва да бъде точно като това, което изпитвате в момента и вашето тестване трябва да се съсредоточи само върху това, че пакетът SSIS избира правилните файлове.

Второто е да се използват възможностите на SSIS извън кутията за справяне с импортирането на BLOB типове.

Поток на управление

Вие ще искате 1 до 2 променливи, дефинирани в зависимост от вашия подход. И двата ще бъдат низови типове данни. Създадох SourceFolder и CurrentFileName . Първият определя откъде ще идват файловете и се използва и в двата подхода. Последният се използва в ForEach Loop Container за улавяне на „текущия“ файл.

Поток от данни

За да накарате потока от данни да работи, ще трябва да получите напълно квалифицирания списък с имена на файлове, добавени в конвейера. Най-лесният начин е да използвате трансформация на скрипт, действаща като източник и добавяйки това във всички файлове, отговарящи на вашето условие (*.xml).

Контейнер за цикъл Foreach

Конфигурирайте като такъв

Колекция

Съответствия на променливи

Изпълнете SQL задача

Конфигурирайте по този начин

Източник на скрипт

Тази задача ще добави наличните файлове в потока от данни. Малка забележка, това ще премине през подпапки, което се различава от начина, по който сме конфигурирали Foreach. Това е проста промяна на третия параметър (или пропуск), за да го направите само от най-високо ниво.

Идентифицирайте вашата променлива, така че да е достъпна в задачата на скрипта

Добавете съответните изходни колони. Вашите дължини може да варират в зависимост от вашата среда.

Скрипт тук

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

Импортиране на трансформация на колона

Конфигурирайте така

Отбележете ID тук

Свържете този идентификатор обратно към колоната с името

Дестинация на OLE DB

Конфигуриране. Не поддържа опция за бързо зареждане.

Справка

Хубава публикация относно използването на Импортиране на трансформация на колони




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преместете файловете на базата данни на SQL Server 2008 в ново местоположение на папка

  2. Какво не е наред с sp_rename с колона?

  3. Не мога да вляза в SQL Server с удостоверяване на Windows

  4. Установяване на връзката от Script Task(VB) към OLEDB Connection Manager на SSIS Package

  5. SQL Server:Разделена операция