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

как да пропуснете лош ред в ssis плосък файлов източник

Общ преглед на решението

можете да направите това, като добавите един Flat File Connection Manager добавете само една колона с тип данни DT_WSTR и дължина от 4000 (ако приемем, че името му е Column0 ) – Така че всички колони се считат за една голяма колона

  • В Dataflow task добавете Script Component след Flat File Source
  • В знак Column0 като входна колона и добавете 17 изходни колони
  • В Input0_ProcessInputRow метод разделяне Column0 чрез разделител, След това проверете дали дължината на масива е =17, след което задайте стойности на изходните колони, В противен случай игнорирайте реда.

Подробно решение

  1. Добавете мениджър на връзки с плосък файл, изберете текстовия файл
  2. Отидете в раздела Разширени , Изтрийте всички колони с изключение на една колона
  3. Променете типа данни на останалата колона на DT_WSTR и дължина =4000

  1. Добавяне на задача за поток от данни
  2. Вътре в задачата за поток от данни добавете източник на плосък файл, компонент на скрипт и местоназначение на OLEDB

  1. В компонента на скрипта изберете Column0 като входна колона

  1. Добавете 17 изходни колони (оптималните изходни колони)
  2. Променете OutputBuffer SynchronousInput свойство на None

  1. Изберете езика на скрипта за Visual Basic

  1. В редактора на скриптове напишете следния скрипт

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    
        If Not Row.Column0_IsNull AndAlso
                Not String.IsNullOrEmpty(Row.Column0.Trim) Then
    
    
            Dim strColumns As String() = Row.Column0.Split(CChar(";"))
    
            If strColumns.Length <> 17 Then Exit Sub
    
    
            Output0Buffer.AddRow()
            Output0Buffer.Column = strColumns(0)
            Output0Buffer.Column1 = strColumns(1)
            Output0Buffer.Column2 = strColumns(2)
            Output0Buffer.Column3 = strColumns(3)
            Output0Buffer.Column4 = strColumns(4)
            Output0Buffer.Column5 = strColumns(5)
            Output0Buffer.Column6 = strColumns(6)
            Output0Buffer.Column7 = strColumns(7)
            Output0Buffer.Column8 = strColumns(8)
            Output0Buffer.Column9 = strColumns(9)
            Output0Buffer.Column10 = strColumns(10)
            Output0Buffer.Column11 = strColumns(11)
            Output0Buffer.Column12 = strColumns(12)
            Output0Buffer.Column13 = strColumns(13)
            Output0Buffer.Column14 = strColumns(14)
            Output0Buffer.Column15 = strColumns(15)
            Output0Buffer.Column16 = strColumns(16)
    
        End If
    
    End Sub
    
  2. Съпоставете изходните колони с целевите колони



  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

  2. Проактивни проверки на състоянието на SQL Server, част 3:Настройки на инстанция и база данни

  3. CRUD операции на SQL Server

  4. Как да се справяме с грешки в вложените транзакции на SQL Server

  5. Как да създадем свързания сървър за SQL Server 2008, където имаме база данни от 2000 и 2005 г.