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

Аз съм нов в SSIS, така че всяка помощ, предложения, съвети и насоки ще бъдат много оценени. Благодаря.

СЦЕНАРИЙ

Опитвам се да конвертирам DTS пакет в SSIS пакет. Моят пакет съдържа задача за поток от данни, която изпомпва данни от OLE DB връзка към дестинация за плосък файл.

ПРОБЛЕМЪТ

Данните в плоския файл трябва да бъдат подредени по определен начин (напр. интервали). Как да направя това? Има ли някакъв инструмент за преобразуване на данни, който ще ми помогне да постигна това? Ако е така, как ще бъде направено?

КОДЪТ DTS (за да поставите нещата в перспектива)

'*************************************** ' Visual Basic ActiveX скрипт ' *************** *************** ***********

DO WHILE NOT  rsGetActivations.eof OR rsGetActivations.BOF
    sLineItem = Space(10)
    sLineItem = sLineItem & Space(10)
    sLineItem = sLineItem & Space(10)
    sLineItem = sLineItem & Replace(Space(8)," ","0")
    sLineItem = sLineItem & Space(1)
    sLineItem = sLineItem & Replace(Space(8)," ","0")
    sLineItem = sLineItem & Replace(Space(3)," ","0")
    sLineItem = sLineItem & Space(2)
    sLineItem = sLineItem & rsGetActivations("Data_Date") & Space( 8 - Len(  rsGetActivations("Data_Date") ) )
    sLineItem = sLineItem & rsGetActivations("ID_Number") & Space( 16 - Len(  rsGetActivations("ID_Number") ) )
    sLineItem = sLineItem & Space(4)
    sLineItem = sLineItem & rsGetActivations("Main_Name") & Space( 25 - Len(  rsGetActivations("Main_Name") ) )
    sLineItem = sLineItem & rsGetActivations("First_Name")  &  Space( 15 - Len(  rsGetActivations("First_Name") ) )
    sLineItem = sLineItem & rsGetActivations("Middle_Name")  & Space( 15 - Len(  rsGetActivations("Middle_Name") ) ) 
    sLineItem = sLineItem & rsGetActivations("Third_Name") & Space( 15 - Len(  rsGetActivations("Third_Name") ) )  
    sLineItem = sLineItem & rsGetActivations("DOB") & Space( 8 - Len(  rsGetActivations("DOB") ) )
    sLineItem = sLineItem & rsGetActivations("ID_Number") & Space( 13 - Len(  rsGetActivations("ID_Number") ) )
    sLineItem = sLineItem & rsGetActivations("Non_RSA_ID") & Space( 16 - Len(  rsGetActivations("Non_RSA_ID") ) )
    sLineItem = sLineItem & Space(15)
    sLineItem = sLineItem & Space(15)
    sLineItem = sLineItem & Space(15)
    sLineItem = sLineItem & Space(15)
    sLineItem = sLineItem & rsGetActivations("Gender") & Space( 1 - Len(  rsGetActivations("Gender") ) )
    sLineItem = sLineItem & Space(3)
    sLineItem = sLineItem & Space(1)
    sLineItem = sLineItem & Space(15)
    sLineItem = sLineItem & Space(15)
    sLineItem = sLineItem & Space(40)
    sLineItem = sLineItem & "0"
    sLineItem = sLineItem & rsGetActivations("Res_Line1")  & Space( 30 - Len(  rsGetActivations("Res_Line1") ) )  
    sLineItem = sLineItem & rsGetActivations("Res_Line2") & Space( 30 - Len(  rsGetActivations("Res_Line2") ) )  
    sLineItem = sLineItem & rsGetActivations("Res_Line3") & Space( 30 - Len(  rsGetActivations("Res_Line3") ) )  
    sLineItem = sLineItem & rsGetActivations("Res_Line4") & Space( 30 - Len(  rsGetActivations("Res_Line4") ) )  
    sLineItem = sLineItem & rsGetActivations("Res_Postal") & Space( 6 - Len(  rsGetActivations("Res_Postal") ) )
    sLineItem = sLineItem & Space(1)
    sLineItem = sLineItem & "00"
    sLineItem = sLineItem & Space(1)
    sLineItem = sLineItem & rsGetActivations("Post_Line1")  & Space( 30 - Len(  rsGetActivations("Post_Line1") ) )  
    sLineItem = sLineItem & rsGetActivations("Post_Line2") & Space( 30 - Len(  rsGetActivations("Post_Line2") ) )  
    sLineItem = sLineItem & rsGetActivations("Post_Line3") & Space( 30 - Len(  rsGetActivations("Post_Line3") ) )  
    sLineItem = sLineItem & rsGetActivations("Post_Line4") & Space( 30 - Len(  rsGetActivations("Post_Line4") ) )  
    sLineItem = sLineItem & rsGetActivations("Post_Postal") & Space( 6 - Len(  rsGetActivations("Post_Postal") ) )      
    sLineItem = sLineItem & Space(1)
    sLineItem = sLineItem & "00"
    sLineItem = sLineItem & rsGetActivations("Bank_Name") & Space( 20 - Len(  rsGetActivations("Bank_Name") ) )
    sLineItem = sLineItem & rsGetActivations("Bank_Branch") & Space( 20 - Len(  rsGetActivations("Bank_Branch") ) )
    sLineItem = sLineItem & Space( 6 - Len(  rsGetActivations("Branch_No") ) )  & rsGetActivations("Branch_No") 
    sLineItem = sLineItem & Space( 15 - Len(  rsGetActivations("Account_No") ) ) & rsGetActivations("Account_No")
    sLineItem = sLineItem & rsGetActivations("Home_Code") & Space( 11 - Len(  rsGetActivations("Home_Code") ) )
    sLineItem = sLineItem & rsGetActivations("Home_Tel") & Space( 15 - Len(  rsGetActivations("Home_Tel") ) )
    sLineItem = sLineItem & rsGetActivations("Work_Code") & Space( 11 - Len(  rsGetActivations("Work_Code") ) )
    sLineItem = sLineItem & rsGetActivations("Work_Tel") & Space( 15 - Len(  rsGetActivations("Work_Tel") ) )   
    sLineItem = sLineItem & rsGetActivations("Cell_No") & Space( 10 - Len(  rsGetActivations("Cell_No") ) )
    sLineItem = sLineItem & Space(35)
    sLineItem = sLineItem & rsGetActivations("Occupation")  & Space( 22 - Len(  rsGetActivations("Occupation") ) )  
    sLineItem = sLineItem & rsGetActivations("Emp_Name") & Space( 35 - Len(  rsGetActivations("Emp_Name") ) )       
    sLineItem = sLineItem & Space(2)
    sLineItem = sLineItem & Space(6)        

    fExportFile.Write(  sLineItem & sCRLF )

    rsGetActivations.MoveNext
LOOP'//end WHILE NOT  rsGetActivations.eof OR rsGetActivations.BOF

person HarshiRulz    schedule 25.10.2011    source източник


Отговори (1)


Определено не ми липсва DTS...

Това, което търсите в SSIS, е диспечер на връзките с плоски файлове и посочете неговата фиксирана ширина (дефинирайте колоните в Разширени). Красивото нещо в това да позволиш на мениджъра на връзките да определя размера е, че го задаваш веднъж и това е всичко, без грешки от една по една в изхода, защото си объркал логиката. не че някога съм правил това

Общи раздел

Диспечер на връзки с плоски файлове - раздел Общи

Раздел Колони

Диспечер на връзки с плоски файлове - раздел колони

Раздел Разширени

Диспечер на връзки с плоски файлове - раздел Разширени

Потокът от данни ще изглежда нещо подобно

въведете описание на изображението тук

Единственото нещо, за което не съм сигурен, е 0 подплатените колони. Може да се наложи да работите с извлечена колона, за да ги попълните, но не би трябвало да е много лошо --- просто допълнете размера на колоната с нули и вземете правилните N символа с обичайните правила за конкатенация NULL, за да внимавате.

person billinkc    schedule 25.10.2011
comment
Благодаря още веднъж за помощта. но получавам съобщение за грешка, че компонентът не е във валидно състояние. и когато щракна върху Разширени, всичките ми цветове изчезват. Има много цветове, които се изпомпват и по-рано те автоматично ще попълнят напредналата таблица. И така, как да се справя с това? някакви идеи? - person HarshiRulz; 25.10.2011