Você está na página 1de 12

Data Transformation Services (DTS)

por Anderson Ferreira Souza O Sql Server possui um recurso extremamente poderoso que muito pouco utilizado pelos administradores e programadores. Com certeza, sendo melhor explorado, poder facilitar muito nosso dia-a-dia, facilitando e melhorando as tarefas de importao e tratamento de dados. O Data Transformation Services (DTS), com o prprio nome diz, uma ferramenta para a transformao de dados, que dizer, utilizando esta ferramenta, conseguimos importar e exportar dados de e para praticamente qualquer tipo de formato de dados mais conhecido, sendo de txt para sql server, de access para excel, de excel para access, de excel para sql server, de sql server para txt... alm de nos permitir o tratamento desses dados durante a importao, e vrias outras tarefas que podem ser programadas para serem executadas seguindo um fluxo pr-determinado pelo criador do pacote. Como a melhor forma de conhecermos uma nova ferramenta colocando a mo na massa, vamos construir um pequeno exemplo que vai importar dados de um arquivo texto chamado exemplo.txt, para uma tabela no banco de exemplo NorthWind do Sql Server. Para isto, vamos utilizar dois objetos Execute SQL Task , um objeto DATA, tipo Text File como origem de dados, j que vamos importar dados de um arquivo texto, e mais um objeto Microsoft OLE DB Provider for SQL Server , que ser nosso destino para os dados importados. O que vamos fazer tentar importar esses dados e, caso a importao seja realizada com sucesso, vamos excluir o arquivo exemplo.txt, caso ocorra algum erro, vamos primeiro renomear o arquivo exemplo.txt para exemplo_ddmmyyyy.txt e s depois exclu-lo. No final, nosso exemplo ficar como mostrado na figura 1.

Figura 1

Antes de continuar, precisamos primeiro entender as opes de Workflow de um projeto DTS. Selecionando o item workflow no menu, voc poder perceber que existem quatro opes de fluxo que podemos utilizar em nosso projeto: O primeiro, Add Transform, representado pela seta cinza, utilizado para a importao dos dados propriamente dita ou, como o prprio termo diz, transformar os dados, de um formato de armazenamento para outro.

Logo aps temos o On Completion, representado pela seta azul, que aponta o caminho do fluxo de tarefas que sero executadas assim que a tarefa anterior for completada, independente de ter ocorrido erro ou no. On Success, representado pela seta verde, indica o prximo passo que deve ser executado apenas se ocorrer sucesso na tarefa anterior. E, por ltimo, On Failure, representado pela seta vermelha, que indica o prximo passo que deve ser executado apenas se ocorrer falha na tarefa anterior.

Assim, fica mais fcil entender o que est sendo feito em nosso exemplo. Voc pode ver que comeamos tentando importar os dados utilizando como origem o objeto Text File e como destino o MS Ole Db e, caso ocorra um erro, o fluxo segue para o objeto Copia Arquivo e logo depois, ocorrendo sucesso ou no, seguimos para Exclui Arquivo. Caso tenha ocorrido sucesso na importao, vamos diretor para Exclui Arquivo. Ento vamos l. Em seu servidor Sql Server, expanda a opo Data Transformation Services e selecione Local Packages. Selecione a opo New Package clicando com o boto direito do mouse (figura 2) e ento ser aberta a rea de desenho do novo pacote, como mostra a figura 3.

Figura 2

Figura 3

Voc poder ver que na paleta Task, existem objetos vrios objetos bem interessantes que podemos utilizar para implementar nosso pacote DTS, como por exemplo o Send Mail , que pode ser utilizado para se enviar um e-mail aos administradores, informando sobre a execuo do pacote, por exemplo. Outro objeto muito importante o Execute SQL Task , que utilizaremos em nosso exemplo, que pode executar qualquer string SQL vlida. A paleta Data, exibe os objetos que podemos utilizar na transformao dos dados, como podem ver, h um arsenal bem completo, de forma que podemos importar ou exportar dados de e para qualquer um destes formatos exibidos. Sql Server para texto, texto para Sql Server, excel para access e vice versa... s utilizar a imaginao e ver quanta coisa pode ser feita por aqui! Muito bem. Estando com a tela de projeto aberta, selecione o objeto Text File (source) , que vai apontar para nosso arquivo exemplo.txt. Assim que voc selecionar o boto, aparecer a tela de configurao, como mostra a figura 4:

Figura 4

Informe o caminho e nome do arquivo que deseja utilizar como origem, no nosso caso, vou selecionar um arquivo localizado em c:\, com o nome exemplo.txt. O contedo deste arquivo ser cinco linhas com os dados da compra de produtos, separado por ponto-vrgula, sendo o primeiro campo o cdigo do produto, o segundo a quantidade e o terceiro campo a data da compra. O contedo deste arquivo est listado na figura 5:

Figura 5

Depois de informar o arquivo, selecione o boto Properties para configurarmos os parmetros de importao deste arquivo. Na prxima tela (figura 6), escolha a opo Delimited, j que estamos utilizando um arquivo delimitado por ponto-vrgula. Selecione Avanar.

Figura 6

Agora, vamos selecionar o tipo de delimitador, no nosso caso, Semicolon (figura 7), e selecione Concluir e depois OK.

Figura 7

Pronto, j definimos nossa origem de dados voc pode ver que o objeto Text File foi colocado na rea de desenho, agora vamos definir o destino. Selecione na paleta Data o objeto Microsoft OLE DB Provider for SQL Server , e tela de configurao ir aparecer (figura 8).

Figura 8

Nesta tela definiremos o servidor a ser utilizado, a forma de conexo e o banco de dados. Informe estes dados de acordo com as configuraes de seu servidor, no meu caso, vou utilizar o banco de dados de exemplo Northwind. Selecione OK e voc vai ver que foi acrescentado o objeto na rea de desenho, j definimos o destino, falta agora configurar apenas as regras para a importao dos dados. Selecione os dois objetos na rea de desenho arrastando o mouse sobre eles, selecione Workflow no menu e Add Transform, ser criada uma seta ligando os objetos selecionados, d dois cliques na seta de transformao para podermos edita-la, ir aparecer uma tela como a da Figura 9.

Figura 9

Nesta tela (Figura 9), definimos a origem dos dados na aba Source. Como estamos importando de um arquivo texto, temos apenas a opo Table name, que o nome do arquivo. Se estivssemos importando dados de um arquivo Access, por exemplo, em Table name poderamos selecionar o nome da tabela que desejamos importar. Neste caso, tambm poderamos alterar o rdio para SQL query, um recurso bastante poderoso nesta tela, em que podemos utilizar uma string SQL para gerar minha origem de dados. Assim, poderia, por exemplo, utilizar uma clusula WHERE para filtrar os dados, ou obter os registros em mais de uma tabela utilizando o JOIN entre as tabelas de um banco de dados. Como podem ver, um recurso bastante prtico, que nos abre um grande leque de opes na importao. Na prxima aba (Destination Figura 10), definimos as configuraes do destino. Podemos aqui, escolher uma tabela existente no banco, caso j existe, ou criar uma nova clicando no boto Create New. Em nosso exemplo, utilizei esta opo para criar uma tabela nova com 3 campos como pode ser visto na Figura 10.

Figura 10

Na aba Transformations (Figura 11), iremos determinar a referncia entre os campos de origem e destino, dizendo, em nosso exemplo que o primeiro campo do arquivo texto ser importado para o campo Codigo de nossa tabela no banco Northwind e assim por diante.

Figura 11

Na ltima aba (Advanced), temos as opes avanadas que no iremos alterar neste momento, mas h recursos interessantes que podem ser configuradas aqui como, por exemplo, as opes que determinam que a importao pule um nmero determinado de linhas no incio e/ou final de nosso arquivo. Mas vamos em frente. Clique no boto OK e, com isto, ns j terminamos a parte da importao dos dados, se executarmos nosso pacote agora, a importao j ser executada como foi determinado por nossa configurao, mas no iremos parar por a, vamos incrementar um pouco mais nosso exemplo e colocar as opes para manipular o arquivo texto de acordo com o resultado da importao. Clique na paleta Task em um componente Execute SQL Task configurao (Figura 12). , e ir aparecer a tela de

Figura 12

Preencha os campos como na figura e clique em OK. Em nosso exemplo, alterei a descrio para Exclui Arquivo e acrescentei uma linha em SQL statement: master..xp_cmdshell 'del c:\exemplo.txt', NO_OUTPUT O que faz esta linha? Simplesmente chama a procedure xp_cmdshell para executar o comando del c:\exemplo.txt para excluir este arquivo do disco. Agora falta definirmos que este comando seja executado logo aps a importao, caso no tenha ocorrido erro. Selecione com o mouse os componentes Microsoft OLE DB Provider for SQL Server e Execute SQL Task (agora renomeado para Exclui Arquivo) que voc colocou na tela, clique em Workflow no menu e logo depois em On Success. Voc ver que foi criada outra seta entre estes dois objetos, de cor verde, o que quer dizer que esta tarefa ser executada apenas se a importao ocorrer sem erros. Agora, clique na paleta Task no componente Execute SQL Task novamente para criarmos a tarefa que ser executada caso ocorra um erro e preencha de acordo com a figura 13.

Figura 13

Foi alterado o nome da tarefa para Copia Arquivo e em SQL statement, temos o seguinte comando: declare @nom as char(80) select @nom = 'copy c:\exemplo.txt c:\ExemploFail_'+convert(varchar, datepart(yyyy, GetDate()))+convert(varchar, datepart(mm, GetDate()))+convert(varchar, datepart(dd, GetDate()))+convert(varchar, datepart(hh, GetDate()))+convert(varchar, datepart(mi, GetDate()))+convert(varchar, datepart(ss, GetDate()))+'.txt' exec master..xp_cmdshell @nom, NO_OUTPUT O que esta string faz copiar o arquivo exemplo.txt para o mesmo local, mas alterando seu nome para ExemploFail_yyyymmddhhmmss.txt, quer dizer, estamos arquivando este arquivo com a data e hora em que ocorreu o erro de importao. Para terminar precisamos informar que esta tarefa deve ser executada caso ocorra um erro, ento selecione com o mouse os componentes Microsoft OLE DB Provider for SQL Server e Execute SQL Task (agora renomeado para Copia Arquivo), clique em Workflow no menu e logo depois em On Failure. Voc ver que foi criada outra seta entre estes dois objetos, de cor vermelha, o que quer dizer que esta tarefa ser executada apenas se houver erros na importao. Finalmente, vamos informar ao sistema para executar a excluso deste arquivo depois de tentar renome-lo, tendo ocorrido erro ou sucesso nesta tarefa.

Selecione com o mouse os componentes Execute SQL Task (renomeado para Copia Arquivo) e o Execute SQL Task (renomeado para Exclui Arquivo), clique em Workflow no menu e logo depois em On Completion. Voc ver que foi criada outra seta entre estes dois objetos, de cor azul, o que quer dizer que esta tarefa ser sempre executada. Neste ponto, nosso projeto deve se parecer com a Figura 14.

Figura 14

Pronto, basta agora salvar o projeto e executar o pacote clicando em Execute ferramentas.

na barra de

Faa alguns testes e ver que o pacote ir se comportar de forma diferente caso ocorra erro ou sucesso na importao dos dados. Por enquanto ficamos por aqui. Podemos ver que o recurso DTS do Sql Server bastante poderoso, nos dando uma incrvel ferramenta de importao e tratamento de dados que pode resolver vrios problemas encontrados em nosso dia-a-dia, simplificando a automatizao de tarefas onde antes precisaramos construir um sistema bem mais complexo. Isto sem contar tantas outras vantagens que encontramos ao utilizar seus recursos. At a prxima... Anderson Ferreira Souza Bacharel em Cincias da Computao, desenvolve projetos em delphi e administrador/programador Sql Server, atualmente Analista de Sistemas do Campus de Passos da Universidade do Estado de Minas Gerais. Pode ser contatado em souza@passosuemg.br

Você também pode gostar