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

cara melewati baris yang buruk di sumber file datar ssis

Ringkasan Solusi

Anda dapat melakukannya dengan menambahkan satu Flat File Connection Manager tambahkan hanya satu kolom dengan Tipe data DT_WSTR dan panjang 4000 (dengan asumsi namanya adalah Column0 ) - Jadi semua kolom dianggap sebagai satu kolom besar

  • Dalam Dataflow task tambahkan Script Component setelah Flat File Source
  • Dalam tanda Column0 sebagai Kolom Input dan Tambahkan 17 Kolom Output
  • Dalam Input0_ProcessInputRow pemisahan metode Column0 oleh pembatas, Kemudian periksa apakah panjang larik =17 lalu tetapkan nilai ke kolom keluaran, Jika tidak abaikan baris.

Solusi Detail

  1. Tambahkan pengelola koneksi file datar, Pilih file teks
  2. Buka Tab Lanjutan , Hapus semua Kolom kecuali satu Kolom
  3. Ubah tipe data Kolom remianing menjadi DT_WSTR dan panjang =4000

  1. Tambahkan Tugas DataFlow
  2. Di dalam Tugas Aliran Data, tambahkan Sumber File Datar, Komponen Skrip, dan Tujuan OLEDB

  1. Pada Komponen Script Pilih Column0 sebagai Kolom Masukan

  1. Tambahkan 17 Kolom Keluaran (kolom keluaran optimal)
  2. Ubah OutputBuffer SynchronousInput properti ke None

  1. Pilih Bahasa Script untuk Visual Basic

  1. Di Script Editor tulis Script berikut

    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. Petakan Kolom Keluaran ke Kolom Tujuan



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah format Tanggal menjadi format DD/MMM/YYYY di SQL Server

  2. Kirim Email dengan Lampiran di SQL Server (T-SQL)

  3. bagaimana cara mendeklarasikan variabel global di SQL Server ..?

  4. ISDATE() Contoh di SQL Server

  5. Bagaimana cara memasukkan catatan dan mengembalikan ID yang baru dibuat menggunakan SqlCommand tunggal?