Banco de Dados - SQL Server

Como migrar dados do SQL Server 2008 R2 para o SQL Azure Database através do SSIS

A idéia deste exemplo será utilizar um arquivo TXT com diversos nomes (pegos na internet) para importar dados através do SSIS (SQL Server Integration Services) e escrever no SQL Azure Database.

por Diego Nogare



A idéia deste exemplo será utilizar um arquivo TXT com diversos nomes (pegos na internet) para importar dados através do SSIS (SQL Server Integration Services) e escrever no SQL Azure Database.

Para começar, vamos abrir o BIDS (Business Intelligence Development Studio), que está dentro da pasta do SQL Server 2008:

Descrição: image

Após a abertura do BIDS, inicie um novo projeto de “Business Intelligence Projects” utilizando o tipo “Integration Services Project”. O nome que vou salvar meu projeto é “txtParaAzure”. Veja estas opções na imagem abaixo:

Descrição: image

Ao iniciar o projeto, quatro abas superiores são apresentadas na área de desenvolvimento do processo: Control Flow, Data Flow, Event Handlers e Package Explorer. Não vou falar sobre as abas que não utilizaremos, vou falar apenas da Control Flow e Data Flow. A aba Control Flow é responsável por criar as execuções do pacote, é dentro desta área que são colocados os objetos “macro”, neste exemplo, vamos inserir um Data Flow Task. Pode possuir um ou mais destes objetos (Data Flows Task), que são os responsáveis reais por realizar o ETL (Extration, Transformation and Loading – Extração, Transformação e Carregamento). É no Data Flow que informamos qual é a origem e o destino dos dados que serão processados. Veja as abas superiores e o item do Data Flow na toolBox (à esquerda). Ele será arrastado para dentro do Control Flow e irá controlar o processo.

Descrição: image

Após arrastar o item Data Flow Task para o Control Flow, dê dois cliques no item e vamos analisar o toolbox desta área. Repare que os ítens do toolbox foram modificados para se adequar à área Data Flow. As sessões da toolbox são “Data Flow Sources” (objetos referentes à origem dos dados), “Data Flow Transformation” (objetos referentes à transformação dos dados) e “Data Flow Destinations” (objetos referentes à destino dos dados). Os dois grupos que sempre serão usados em um projeto de SSIS serão os de Origem (Data Flow Sources) e de Destino (Data Flow Destinations). O grupo de transformação (Data Flow Transformations) pode ser usado ou não, vai depender da sua necessidade.

Descrição: image

Bom, sabendo que os ítens mínimos para se criar um fluxo no SSIS são Origem e Destino, vamos adicionar esses itens e fazer as conexões. A origem será um arquivo TXT, para isso, vou adicionar o “Flat File Source”. Encontre esse objeto na toolbox à esquerda e arraste para a área de design.

Descrição: image

Depois, como o destino será um banco de dados na nuvem, vou adicionar um “ADO NET Destination”. Mesmo processo, encontre o objeto na toolbox e arraste para a área de design. Repare que os ítens estão um na sessão de Origem e outro no Destino.

Descrição: image

Para se criar o fluxo do processo, visto que podem existir diversas atividades de origens e destinos acontecendo em um mesmo fluxo, é necessário criar uma ordem lógica dos acontecimentos. Para isso, vamos selecionar o item que será processado primeiro (Origem) e arrastar a setinha verde para o item seguinte (Destino). Neste caso, selecionamos o item “Flat File Source”, arrastamos sua setinha verde e ligamos no “ADO NET Destination”. Reparem que existem duas setas na origem, a seta verde segue o fluxo quando não ocorrer problema no processamento, já e a seta vermelha é utilizada como caminho quando o fluxo do processamento der algum problema. Geralmente a seta vermelha segue para um ítem que permite enviar um e-mail ou salvar a mensagem do erro em um arquivo de texto para análise posterior. Neste exemplo, vou apenas mostrar a seta verde.

Descrição: image

Agora que já foram criados os fluxos do trabalho, vamos criar as conexões que servirão para orientar a origem e o destino dos dados. Para isso, clique com o botão direito na Origem e depois selecione Edit…

Descrição: image

Uma tela com as opções para se carregar um arquivo são apresentadas. Vamos configurar para ler o arquivo nomes.txt que peguei na internet.

Após clicar no Edit, uma tela se abrirá para selecionar qual será a conexão, como ainda não criamos a que será utilizada, clique no botão New… e configure as opções do arquivo que será lido.

A configuração inicial será somente colocar o Nome e a Descrição, e selecionar o arquivo de origem. A primeira caixa de texto é referente ao Nome, a segunda à Descrição e o botão Browse… para localizar o arquivo.

Descrição: image

Agora que o arquivo foi carregado, vá até o item Advanced na lista da esquerda, selecione a Column 1 e clique no botão Delete. Na mesma tela, selecione a Column 0 e modifique a propriedade OutputColumnWidth para 100. Clique em Ok até voltar para a tela inicial.

Descrição: imageDescrição: image

Após fazer a configuração dos dados de origem, repare que o objeto não está mais com um x dentro. Isso representa que ele está configurado com uma determinada fonte de dados. Comparando com o destino, que ainda não foi configurado, fica fácil de ver o x. Agora é a hora de configurar o destino dos dados, vamos então fazer o mesmo processo com o destino, clique com o botão direito e selecione Edit…

Uma tela para selecionar a conexão é apresentada, vamos clicar em New… e ir para uma segunda tela. Nesta segunda tela, uma lista com as conexões existentes é apresentada, novamente clique em New… e agora sim, configure a conexão. Neste caso, vou configurar meu servidor do SQL Azure Database, mas poderia ser qualquer outro SGBD que você utilize.

Descrição: image

Após configurar, volte até a primeira tela da configuração e informe qual será a tabela que vai escrever a informação.

Descrição: image

Após selecionar a tabela na combo de tabelas, clique no item Mappings à esquerda e faça a ligação entre a Column0 (Origem) e o nome (Destino). Essa configuração irá representar qual informação se liga na outra. Após ligar as colunas, é só dar OK.

Descrição: image

O processo está quase concluído, só precisa executar (apertando F5) e aguardar o final do processamento. Se tudo estiver configurado corretamente, as caixinhas ficarão todas verdes, isso significa que foram executadas com sucesso. Caso alguma fique vermelha, ela não chegou a concluir todo o processamento.

Descrição: image

Para confirmar a inclusão de todos os dados do arquivo TXT para o SQL Azure Database, vou fazer uma consulta simples para me retornar a quantidade de registros na tabela.

Descrição: image

Com esse processo do SSIS funcionando, foi possível migrar dados de um arquivo TXT para o SQL Azure Database. O arquivo TXT foi só uma das possíveis origem de dados, podendo ser qualquer uma que estivesse dentro do grupo Data Flow Sources na toolbox da aba Data Flow.

Diego Nogare

Diego Nogare - Graduado em Ciência da Computação e Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvimento Web com .NET, Colaborador do Portal Linha de Código, co-Líder do grupo de usuários Codificando .NET, co-Líder dos Microsoft Student Partners [MSP] de São Paulo e Microsoft Most Valuable Professional [MVP] em SQL Server, possui certificações MCP e MCTS em SQL Server 2005, é palestrante em eventos da Microsoft, Codificando .NET e INETA BR, mantém o site: www.diegonogare.net.