Olá pessoal,
Eu não contava que ia ficar tão
grande este tutorial, mas vamos lá...
Vamos começar por onde paramos no
ultimo post, no Conditional Split.
O Conditional Split é parecido com o Derived Column, os
dois painéis superiores funcionam exatamente iguais ao Derived Column, no
painel abaixo é onde faço a condição que vai limpar as linhas nulas.
A coluna Order define a ordem que vai ser feita a
verificação, a Output Name da um nome para a saída que vai testar a condição,
o campo Default output name é a outra saída, que vou descartar quem não quero
e a coluna Condition é onde construo a expressão, temos também o botão Configure
Error Output para fazer alguns tratamentos em caso de erro, mas não o utilizo.
Função: TRIM( «character_expression» )
Função: ISNULL( «expression» )
Operador: != (Unequal)
Operador: && (Logical AND)
Expressão: TRIM(NOME) != "" &&
!ISNULL(NOME)
O que eu faço é verificar se a coluna nome é diferente de
nulo ou vazio, com isso posso descartar a linha toda se não respeitar a
condição.
Veremos o resultado depois desse filtro.
Vejam que agora não tenho mais linha vazias e até a linha
que tinha um caractere especial foi descartada também.
Por ultimo temos o componente OLE DB Destination, ele carrega
dados em uma variedade de OLE DB compatíveis com bancos de dados usando uma
tabela de banco de dados ou uma view ou um comando SQL.
·
A OLE DB é uma API desenvolvida pela Microsoft
com base no COM (Component Object Model). Essa API representa uma biblioteca de
interface COM que permite o acesso universal a diversas fontes de dados.
Dentro de Connection Manager temos o OLE DB connection
manager, onde escolhemos uma conexão existente com o banco de dados de destino
ou criamos uma para um banco de dados existente.
Dentro de Data Access mode, escolhemos a forma como vamos visualizar
ou manipular a tabela que vai receber os dados.
Em Name of the table or the view, caso o Data Access mode esteja em table or view, selecionamos a tabela sem ter que usar um comando SQL.
No botão NEW, caso a tabela que vai receber os dados não
exista, podemos criar uma.
Ao
clicar sobre o botão NEW, o próprio componente já gera uma instrução SQL
criando uma tabela com as colunas que foram criadas nos componentes anteriores,
neste ponto é só ajustar os dados, no meu caso, vou alterar o nome da tabela
para TABELA, não tenho interesse na coluna [coluna], e vou ajustar os tipos
de dados de [CODIGO], [NOME], [DATA] E [SITUACAO], depois é só confirmar dando OK.
Na opção Mappings, verifco se o mapeamento está de acordo, o proprio componente faz o mapeamento se os nomes coincidirem, neste caso apenas confirmo, Se não estivesse mapeado faria a ligação dos mesmos.
Na
opção Error output posso fazer mais algum tratamento para erros que possam
acontecer, mas não utilizei essa parte.
Se
deu tudo certo, é hora de executar o projeto.
Veja
a situação acima, esse monte de caixinha verde, isso indica que as coisas deram
certo.
Para
confirmar vou no SQL Server, no banco de dados que escolhi, e vou visualizar a
tabela TABELA.
E ai está o resultado que esperava, os dados de um arquivo PDF viraram dados separados em colunas numa tabela do SQL Server, graças ao SSiS.
Claro
que o arquivo que usei foi muito pequeno e simples, mas posso aplicar os mesmos
conceitos em um arquivo muito maior, de 10 linhas poderia ter 10.000 linhas, de
4 colunas poderia ter umas 10, haveria muito mais trabalho para separar os
dados, se tivesse mais colunas, mas em relação às linhas a quantidade não
importa, o tratamento é o mesmo.
Bom
é isso ai, espero ter ajudado.
Referências
Referências
Data Flow Task: http://msdn.microsoft.com/en-us/library/ms141122.aspx
Flat File Source: http://msdn.microsoft.com/en-us/library/ms139941.aspx
Integration Services: http://msdn.microsoft.com/en-us/library/ms141026.aspx
Transformações SSiS: http://msdn.microsoft.com/en-us/library/ms141713.aspx
Operadores SSiS: http://msdn.microsoft.com/en-us/library/ms137538.aspx
Funções SSiS: http://msdn.microsoft.com/en-us/library/ms141671.aspx
Comentários
Postar um comentário