Решение
Въз основа на вашия коментар вие работите с плоски файлове. За да разрешите този проблем, трябва да прочетете всички колони като една колона и да извлечете структурата в движение.
Подробности
- Първо добавете диспечера за връзки с плоски файлове.
- В диспечера на връзките с плоски файлове отидете в раздела Разширени, премахнете всички колони и запазете само една колона (Колона0) .
- Променете типа на колоната на DT_WSTR и дължината на 4000.
- Добавяне на
Dataflow task
- В
Dataflow task
добавете източник на плосък файл, компонент на скрипт и OLEDB дестинация. - Отворете компонента на скрипта, отидете на раздела Input/Output и добавете 8 изходни колони (Distributer_Code,Cust_code,cust_name,cust_add,zip,tel,dl_number,gstin)
- Променете скриптовия език на Visual Basic.
-
Вътре в скрипта напишете следния код.
Dim Distributer_Code as integer = -1 Dim Cust_code as integer = -1 Dim cust_name as integer = -1 Dim cust_add as integer = -1 Dim zip as integer = -1 Dim tel as integer = -1 Dim dl_number as integer = -1 Dim gstin as integer = -1 Dim intRowIndex as integer = 0 Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) If intRowIndex = 0 then Dim strfields() as string = Row.Column0.split(CChar("|")) Dim idx as integer = 0 For idx = 0 To strFields.length - 1 Select case str Case "Distributer_Code" Distributer_Code = idx Case "Cust_code" Cust_code = idx Case "cust_name" cust_name = idx Case "cust_add" cust_add = idx Case "zip" zip = idx Case "tel" tel = idx Case "dl_number" dl_number = idx Case "gstin" gstin = idx End Select Next Else Dim strfields() as string = Row.Column0.split(CChar("|")) If Distributer_Code > -1 Then Row.DistributerCode = strfields(Distributer_Code) If Cust_code > -1 Then Row.Custcode = strfields(Cust_code) If cust_name > -1 Then Row.custname = strfields(cust_name) If cust_add > -1 Then Row.custadd = strfields(cust_add) If zip > -1 Then Row.zip = strfields(zip) If tel > -1 Then Row.tel = strfields(tel) If dl_number > -1 Then Row.dlnumber = strfields(dl_number) If gstin > -1 Then Row.gstin = strfields(gstin) End If intRowIndex += 1 End Sub
-
Съпоставете изходните колони с местоназначението на OLEDB