SSIS – Agrupando linhas importadas

Fala Galera,

A dica de hoje é bem simples mas muito útil.

Digamos que você precisa importar um arquivo de texto para seu banco de dados e deseja eliminar as linhas duplicadas, como fazer?

 

Primeiramente

 

</p><p>USE ImportaArquivos</p><p>GO</p><p>/*Tabela que irá armazenar todos os ceps contidos em um arquivo*/</p><p>CREATE TABLE listaCEPs(</p><p>      ID INT IDENTITY PRIMARY KEY,</p><p>      CEP VARCHAR(8),</p><p>      RUA varchar(100)</p><p>)</p><p>

 

Agora você irá criar um arquivo de texto, em um diretório de sua preferência, com o seguinte conteúdo:

 

CEP|Rua

03711110|Rua X

93711119|Rua D

03711110|Rua X

73711117|Rua W

03711110|Rua X

63711116|Rua Y

03711110|Rua X

63711116|Rua Y

 

 

Notem que temos:

       O CEP 03711110 aparecendo 4x.

       O CEP 93711119 aparecendo 1x.

       O CEP 73711117 aparecendo 1x.

       O CEP 63711116 aparecendo 2x.

 

Nós desejamos que não ajam linhas duplicadas, então em nossa tabela deverá existir apenas 4 registros.

 

Crie um novo projeto do integration services, adicione os seguintes componetnes:

  • Flat file source
  • Aggregate
  • OLE DB Destination

 

Mapeie arquivo de texto criado acima no componente flat file source. Ligue-o ao componente aggregate e de dois clique nele.

 

Selecione as colunas que você deseja que sejam importadas e na opção “operation” selecione o group by.

 

Image

 

Configure o OLE DB Destination para enviar os dados a nossas estrutura de tabelas criadas no passo 1.

Image

Clique em OK e execute a DTS.

Image

 

Faça um select na tabela dbo.ListaCeps para checarmos os resultados.

Image

Por hoje é isso pessoal.

 Abraços.

 Dhiego Piroto

SSIS – Utilizando o componente Derived Column

Imagine que temos que realizar a importação de um arquivo de texto com contenha informações como : Nome, Sobrenome e Idade. Porém, quando a idade da pessoa for inferior a 18 anos um campo boolean deverá ser preenchido como True.

Para fazer esse tipo de tarefa pelo SSIS utilizaremos o componente “Derived Column”.

Primeiro vamos criar uma estrutura tabular para armazenar os dados a serem inseridos

<br />use ImportaArquivos<br /><br />go<br /><br />CREATE TABLE tb_derivedColumn(<br /><br />id int identity(1,1) primary key,<br /><br />ch_nome varchar(100),<br /><br />ch_sobrenome varchar(100),<br /><br />bMenorde18 bit<br /><br />)<br /><br />

Agora iremos criar um arquivo de texto que contenha as seguintes informações.

Nome|Sobrenome|Idade

Dhiego|Piroto|23

Joana|D’arc|99

João|Paulo|17

Rodrigo|Dias|10

Salvaremos esse arquivo com o nome de “DerivedColumnImp.txt” em um diretório de sua preferencia.

Agora clique com o botão direito do mouse na área “Connection Managers”  e selecione a opção “new flat file connection…”. Após isso, faça uma referencia ao arquivo que criamos anteriormente, selecionando a primeira linha como cabeçalho.

Image

Clique em “OK” e depois adicione um componente “data flow task” ao projeto, de um duplo clique nele e adicione o componente  “Flat data source” e clique duas vezes nele.

Preencha listbox com a conexão que acabamos de criar (txtCnn), clique em columns e depois “OK”.

Agora adicionaremos o componente que irá atender a nossa regra, e validará a idade da pessoa, insira no projeto um componente “derived column” e faça a ligação entre o flat file e ele.; Após isso, clique 2x no novo componente.

Na aba esquerda, maximize o item “columns” e arraste o campo “idade” para a grid inferior. Após isso, preencha o campo expression com o seguinte código:

Idade > “18” ? 0:1 através esta expressão será validada a idade da pessoa e um valor booleano será retornado.

Image

Adicione um componente OLE DB Destination ao seu projeto, crie uma conexão com o DB onde criamos a tabela (passo 1) .

Image

Clique na aba “columns” e faça o apontamento das colunas e clique em OK.

Image

Execute a DTS.

Image

E confira o resultado no Management Studio.

Image

É isso galera!

Abraços

Dhiego PIroto

Integration Services – Tips

Fala Galera,

Ultimamente tenho estado bastante envolvido em projetos de importações de dados em massa, sendo para atividades pontuais ou recorrentes através de Jobs. Como eu não tinha muita experiência com a ferramenta de Integration Services da suite de BI do SQL, fora os cursos oficiais de BI que fiz, vou começar a postar algumas dicas do que eu achar que vale a pena durante os dias em que estou envolvido em projetos de integração de dados.

Abraços;

Alex Souza

Banco de dados, Business Intelligence, Big Data, Governança de TI ... /* Um eterno aprendiz... */

Blog - Thiago Carlos de Alencar

Aprendendo SQL Server !

SQL Authority with Pinal Dave

SQL Server Performance Tuning Expert

Vitor Fava

SELECT (CrazyIdeas*2), (InsaneIdeas*100), MyExperience FROM MyBigHead WHERE InsaneLevel > 1000

Think Think SQL

DBCC DumpMemory 'TECH','ALL'

Gustavo Maia Aguiar

Artigos, dicas e algumas reflexões sobre o SQL Server

Kimberly L. Tripp

DBCC DumpMemory 'TECH','ALL'

Thiago Zavaschi R2

www.zavaschi.com

Blog do Luti

DBCC DumpMemory 'TECH','ALL'

Luan.Moreno a.k.a [SQL.Soul]

Lead Database Consultant at Pythian

Blog do Leka

let's make things better