Lendo conteúdo de arquivo PDF para o SQL Server com Integration Services (Parte 4)


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.


Comentários