Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

masukkan file XML dalam SQL melalui SSIS

Ada dua pendekatan berbeda yang dapat Anda lakukan.

Yang pertama adalah seperti yang diuraikan user569711 dan menggunakan ForEach Enumerator dan memanggil prosedur tersimpan yang ada. Keuntungannya adalah perilaku Anda harus persis seperti yang Anda alami saat ini dan pengujian Anda hanya perlu fokus untuk memastikan paket SSIS mengambil file yang tepat.

Yang kedua adalah menggunakan kemampuan luar biasa dari SSIS untuk menangani pengimporan jenis BLOB.

Alur Kontrol

Anda akan menginginkan 1 hingga 2 variabel ditentukan tergantung pada pendekatan Anda. Keduanya akan menjadi tipe data string. Saya membuat SourceFolder dan CurrentFileName . Yang pertama menentukan dari mana file akan berasal dan digunakan dalam kedua pendekatan. Yang terakhir digunakan dalam ForEach Loop Container untuk menangkap file "saat ini".

Alur Data

Untuk membuat aliran data berfungsi, Anda perlu mendapatkan daftar nama file yang sepenuhnya memenuhi syarat yang ditambahkan ke dalam pipa. Cara termudah adalah dengan menggunakan Transformasi Skrip, bertindak sebagai sumber dan menambahkan semua file yang memenuhi kondisi Anda (*.xml).

Foreach Loop Container

Konfigurasi seperti itu

Koleksi

Pemetaan Variabel

Jalankan Tugas SQL

Konfigurasikan demikian

Sumber Skrip

Tugas ini akan menambahkan file yang tersedia ke dalam aliran data. Catatan kecil, ini akan melintasi subfolder yang berbeda dari cara kita mengkonfigurasi Foreach. Ini adalah perubahan sederhana pada parameter ketiga (atau penghilangan) untuk menjadikannya level teratas saja.

Identifikasi variabel Anda sehingga tersedia di tugas skrip

Tambahkan kolom output yang sesuai. Panjang Anda dapat bervariasi berdasarkan lingkungan Anda.

Skrip di sini

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

Impor Transformasi Kolom

Konfigurasi seperti ini

Catat IDnya di sini

Ikat ID itu kembali ke kolom dengan nama

Tujuan OLE DB

Konfigurasi. Tidak mendukung opsi Fast Load.

Referensi

Pos yang bagus tentang menggunakan Impor Transformasi Kolom




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak sama dengan <> !=operator pada NULL

  2. Tipe data untuk menyimpan alamat ip di SQL Server

  3. Bagaimana saya bisa menyusun kueri untuk memberi saya hanya baris yang cocok dengan SEMUA nilai dalam daftar ID CSV di T-SQL

  4. Format kolom tanggal server sql

  5. Apakah Perubahan Data Capture Performance Loss Dibatasi ke Tabel yang Diaktifkan CDC?