none
Adição de Coluna com valor das primeiras linhas de um arquivo Flat. RRS feed

  • Pergunta

  • Boa Tarde Mestres.

    Por não conseguir formular a pergunta apropriadamente peço desculpas.

    Uso SQL Server 2005/SSIS e tenho que importar um arquivo(Flat) com um Formato parecido com Esse:

    -BOF -
    Data 11/11/2011O ARQUIVO TESTE IMPORTANTE 
    Data 10/10/2011D BLA BLA BLA
    X
    X
    X
    X
    
    COL_1	COL_2	COL_3	COL_4
    A 		B	 	11/11/11	C 
    A 		B 		11/11/11	C
    A 		B 		11/11/11	C
    A 		B 		11/11/11	C
    A 		B 		11/11/11	C
    A 		B 		11/11/11	C 
    -EOF-

    Consigo me virar para importar os dados principais para a tabela no formato que preciso.
    Porém não consigo gerar uma Quinta e Sexta Coluna (COL_5 e COL_6) que adicione a data das primeiras Linhas do arquivo flat.
    Tentei usar o Script Task e o Script Component pra salvar os valores do registro de um Condicional Split sem sucesso.
    Existe outra forma ou tenho que aprender a salvar os valores em uma "variável global" para depois usa-las através de um Derived Column?

    Grato pela atenção!

    Thales Faggiano


    quinta-feira, 28 de abril de 2011 18:30

Respostas

  • Thales,

    O que você poderia fazer é tentar criar algumas expressões em suas Derived Column para gerar estes valores de data.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    • Marcado como Resposta Thales Faggiano segunda-feira, 2 de maio de 2011 14:16
    segunda-feira, 2 de maio de 2011 13:03
    Moderador
  • Pois então, o que fiz foi criar um Script Task que abre o arquivo e salva as duas primeiras linhas em variáveis:

    Public Sub Main()
    
    Dim Arquivo As String = Dts.Variables("User::NomeDoArquivo").Value.ToString
    Dim objLER As New System.IO.StreamReader(Arquivo)
    
    Dts.Variables("User::Linha1").Value = Mid(objLER.ReadLine(),5,10)
    Dts.Variables("User::Linha2").Value = Mid(objLER.ReadLine(),5,10)
    objLER.Close()
    
    Dts.TaskResult = Dts.Results.Success
    
    End Sub
    

    E criei uma coluna através de um Data Flow Transformation Derived Column com a expressão:

     SUBSTRING(@[User::Linha1], 4, 3) + SUBSTRING(@[User::Linha1], 1, 3) + RIGHT(@[User::Linha1], 4)


    Thales Faggiano
    • Marcado como Resposta Thales Faggiano segunda-feira, 2 de maio de 2011 14:16
    segunda-feira, 2 de maio de 2011 14:15

Todas as Respostas

  • Thales,

    O que você poderia fazer é tentar criar algumas expressões em suas Derived Column para gerar estes valores de data.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    • Marcado como Resposta Thales Faggiano segunda-feira, 2 de maio de 2011 14:16
    segunda-feira, 2 de maio de 2011 13:03
    Moderador
  • Pois então, o que fiz foi criar um Script Task que abre o arquivo e salva as duas primeiras linhas em variáveis:

    Public Sub Main()
    
    Dim Arquivo As String = Dts.Variables("User::NomeDoArquivo").Value.ToString
    Dim objLER As New System.IO.StreamReader(Arquivo)
    
    Dts.Variables("User::Linha1").Value = Mid(objLER.ReadLine(),5,10)
    Dts.Variables("User::Linha2").Value = Mid(objLER.ReadLine(),5,10)
    objLER.Close()
    
    Dts.TaskResult = Dts.Results.Success
    
    End Sub
    

    E criei uma coluna através de um Data Flow Transformation Derived Column com a expressão:

     SUBSTRING(@[User::Linha1], 4, 3) + SUBSTRING(@[User::Linha1], 1, 3) + RIGHT(@[User::Linha1], 4)


    Thales Faggiano
    • Marcado como Resposta Thales Faggiano segunda-feira, 2 de maio de 2011 14:16
    segunda-feira, 2 de maio de 2011 14:15
  • Thales,

    Legal a solução que você tomou!!!


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    terça-feira, 3 de maio de 2011 19:05
    Moderador