Вы находитесь на странице: 1из 24

Tutorial DTS DICIONRIO DE DADOS..................................................................................................2 IMPORTAO ENTRE DOIS BANCOS DO DADOS...................................................4 DEFININDO ORIGEM E DESTINO.................................................................................................4 INICIALIZANDO VARIVEIS........................................................................................................

6 CRIANDO UM PROCEDIMENTO CONDICIONAL A SER EXECUTADO DATA DRIVEN QUERY TASK............8 Guia Source....................................................................................................................8 Guia Bindings...............................................................................................................10 Guia Queries.................................................................................................................10 Guia Lookups................................................................................................................12 Guia Transformations...................................................................................................12 EXECUTANDO A IMPORTAO...................................................................................................15 REALIZANDO A IMPORTAO DE UM ARQUIVO TEXTO EM UM SERVIDOR FTP.......................................................................................................................................16 REALIZANDO O FTP..............................................................................................................16 DESTINO DINMICO................................................................................................................16 ADICIONANDO A ORIGEM DE DADOS COMO ARQUIVO....................................................................19 ALTERANDO A LOCALIZAO DO ARQUIVO DE ORIGEM VIA SCRIPT.................................................20 ATRIBUINDO O DESTINO DOS DADOS IMPORTADOS........................................................................21 TAREFA PARA COPIAR OS DADOS...............................................................................................22 DEFININDO A ORDEM DE EXECUO..........................................................................................23

Dicionrio de Dados
DTS Data Transformation Services Enterprise Manager um ambiente genrico de gerenciamento de servios da Microsoft. Neste tutorial se refere ao gerenciador grfico do SQL Server. Packages Pacotes do DTS a serem executados CSV Coma separated values HTML Hyper Text Markup Language

INTRODUO
O DTS permite importar/exportar dados entre diferentes fontes de dados. As fontes/origens de dados podem ser bancos de dados ou arquivos (CSV, excel, HTML). Este tutorial pretende mostrar alguns procedimentos para configurao de pacotes de tarefas a serem executados periodicamente. Este tutorial assume que o usurio j tenha familiaridade com o SQL Server e comandos PL/SQL. Para ter acesso ao Data Transformation Services, o usurio deve executar o Enterprise Manager, e abrir a pasta Data Transformation Services. Ao clicar sob Local Packages, sero listados todos os pacotes existentes.

Visualizao do DTS

Importao entre dois bancos do dados


Ser criado um pacote DTS para copiar os dados de uma instncia do SQL Server para outra. Neste exemplo sero importados dados de um banco de dados de postos para um banco de dados de Quotas. Para criar um novo pacote DTS, clicar com o boto direito sob o item Local Packages e selecionar New Package. Ser mostrado um editor grfico de pacotes.

Modo design do DTS

Definindo Origem e Destino


Criar uma conexo para origem dos dados e uma para destino. Para criar a conexes, acionar Connection->Microsoft OLE DB Provider for SQL Server. Ser aberta uma caixa de dilogo para configurar a conexo com o banco SQL Server.

Dilogo de configurao de conexo Neste exemplo, Postos Ain a origem e QuotasPrd o destino.

Inicializando Variveis
comum a necessidade de inicializar algumas variveis globais. Estas variveis podem ser utilizadas em qualquer procedimento realizado no DTS. possvel por exemplo utilizar uma varivel global como parmetro de uma stored procedure. Para inicializar as variveis globais, deve-se criar um ActiveX Script Task. Este componente permite criar procedimentos em linguagem de script interpretada (como VBScript). Para criar uma task execute: Task->ActiveX Task.. O exemplo abaixo inicializa o ano/ms de referncia, que deve ser um ms anterior execuo do pacote. Observar que as variveis locais ficam armazenadas em DTSTaskGlobalVariables. A sintaxe : DTSTaskGlobalVariables(<<NOME_VARIAVEL>>).value Cdigo fonte:
'********************************************************************** ' Visual Basic ActiveX Script '************************************************************************ '/** ' * Inicializa variaveis globais '* ' * lngAnoMesReferencia - ano/mes (yyyymm) referencia a data que o pacote for executado ' */ Function Main() DTSGlobalVariables("lngAnoMesReferencia").Value = clng(getAnoMesRegerencia()) Main = DTSTaskExecResult_Success End Function '/** ' * Retorna o ano/mes (yyyymm) de referencia da data que este pacote for rodado. ' * Por exemplo: ' * Caso seja rodado no dia 2004-09-08 (yyyy-mm-dd), ira retornar 200408 (yyyymm) '* ' * @return inteiro longo que representa ano/mes de referencia (yyyymm) ' */ Function getAnoMesRegerencia() 'As Long Dim dteReferencia 'As Date dteReferencia = DateAdd("m", -1, Now()) If Month(dteReferencia) < 9 Then getAnoMesRegerencia = CLng(CStr(Year(dteReferencia)) & "0" & CStr(Month(dteReferencia))) Else getAnoMesRegerencia = CLng(CStr(Year(dteReferencia)) & CStr(Month(dteReferencia))) End If End Function

Tela de criao de uma task ActiveX Script

Criando um procedimento condicional a ser executado Data Driven Query Task


Para realizar a importao de dados, podem ser utilizados o Execute SQL Task ou o Transform Data Task. Neste exemplo utilizo o Data Driven Task por ser mais flexvel. Ele permite criar consultas para inserir/atualizar/deletar/selecionar que sero executadas conforme uma ou mais condies. Por exemplo: Se o dado a ser copiado j existe, deve ser realizado um UPDATE. Caso contrrio deve ser realizado um INSERT. Sendo assim, so necessrias uma consulta para INSERT e outra para UPDATE. Ser verificado se o registro j existe para escolher qual das consultas deve ser executada para cada linha importada. Para criar um Data Driven Query Task v em: Task->Data Driven Query Task. Ser mostrado a seguinte caixa de dilogo:

Data Driven Query Task Properties

Guia Source

Nesta guia definida a fonte de dados. Pode-se selecionar uma tabela ou escrever uma consulta SQL (executar uma stored procedure, por exemplo). No caso de consultas parametrizadas, deve-se especificar os parmetros com o caractere ?. A ordem dos parmetros respeita a ordem de ocorrncia dos caracteres ?;

Data Driven Query Guia Source Para mapear os parmetros com variveis globais ou constantes, clicar em Parameters. importante prestar ateno a ordem de ocorrncia dos parmetros. Ex.: O primeiro ? o Param1, o segundo o Param2 e assim por diante...

Guia Bindings
Nesta guia define-se o destino. Deve-se selecionar a tabela que ir receber os dados.

Data Driven Query Task Guia Bindinfs

Guia Queries
Aqui so definidas as consultas que podem ser executadas.

Podem ser definidas consultas de Insert/Update/Delete/Select. Construa as consultas de Insert e delete de forma a receber os dados da origem. Cdigo Insert:
INSERT INTO dbo.TbFiscaisPostos (CodEscala, RgFiscal, AnoMesRef) VALUES (?, ?, ?)

Cdigo Update (neste exemplo o update no faz muito sentido, pois todos os campos fazem parte da chave primria, logo no ser utilizado):
UPDATE dbo.TbFiscaisPostos SET CodEscala = ?, RgFiscal = ?, AnoMesRef = ? WHERE CodEscala = ? AND (RgFiscal = ?) AND (AnoMesRef = ?)

Data Driven Query Queries Os parmetros das consultas devem ser mapeados corretamente na listagem de parmetros. Cada registro existente na origem de dados ir executar uma destas consultas, e os parmetros mapeados sero trocados pelos respectivos valores.

Guia Lookups
Aqui so criadas consultas a serem utilizadas dentro do ActiveX Sctript para esta Data Driven Query. Por exemplo: Para saber se deve ser realizado um insert ou um update, necessrio consultar se o registro que est sendo importado j existe. Para criar a consulta, preencha a coluna Name, escolha a conexo e clique no boto ... da coluna query..

Data Driven Query Lookups A consulta utilizada : SELECT COUNT(1) AS Expr1 FROM dbo.TbFiscaisPostos WHERE (CodEscala = ?) AND (RgFiscal = ?) AND (AnoMesRef = ?)

Guia Transformations
Nesta guia so mapeados a origem e o destino.

Data Driven Query Task Transformations Nas guias Source Columns e Binding Columns selecione os atributos a serem utilizados. Deletar os scripts existentes e clicar em New para criar um novo ActiveX Script. Abrir-se- uma nova janela, que permitir criar um novo ActiveXScript (escolher esta opo). Ao clicar em properties e ser apresentado um editor de script.

ActiveX Script

Ser criado, automaticamente um cdigo que mapeia as origens nos destinos. Como o cdigo abaixo:
'********************************************************************** ' Visual Basic Transformation Script '************************************************************************ ' Copy each source column to the destination column Function Main() DTSDestination("AnoMesRef") = DTSSource("anoMesRef") DTSDestination("RgFiscal") = DTSSource("rgFiscal") DTSDestination("CodEscala") = DTSSource("codEscala") Main = DTSTransformstat_InsertQuery End Function

Neste script deve ser realizado o teste para descobrir se o registro que esta sendo importado j existe no destino. A consulta (INSERT/UPDATE) a ser executada depende do retorno da funo main. Algumas constantes que podem ser retornadas pela funo main: DTSTransformStat_InsertQuery indica que deve ser utilizada a consulta de insert DTSTransformStat_UpdateQuery indica que deve ser utilizada a consulta de update. DTSTransformStat_DeleteQuery indica que deve ser utilizada a consulta de delete DTSTransformStat_SelectQuery - indica que deve ser utilizada a consulta de select Quando o registro j existir, usaremos DTSTransformStat_SkipInsert. Esta constante indica que nada deve ser feito. Alterar o cdigo para: '********************************************************************** ' Visual Basic Transformation Script '************************************************************************ ' Copy each source column to the destination column Function Main() DTSDestination("AnoMesRef") = DTSSource("anoMesRef") DTSDestination("RgFiscal") = DTSSource("rgFiscal") DTSDestination("CodEscala") = DTSSource("codEscala") if DTSLookups("exists").Execute(DTSSource("codEscala"), _ DTSSource("rgFiscal"), DTSSource("codEscala")) = 0 then Main = DTSTransformstat_InsertQuery else Main = DTSTransformStat_SkipInsert end if

End Function Este trecho de cdigo utiliza a consulta criada na guia Lookups para verificar se o registro j existe. No existindo o registro utilizada a query de insert. Caso contrrio, nada ser feito.

Executando a importao
necessrio configurar a ordem de execuo do pacote. Para isto clique na DataDriven Query criada com o boto direito do mouse->Workflow>Workflow Propertirs. No dilogo apresentado selecione o modulo ActiveX Script criado anteriormente. O modelo workflow ficar como este:

Modelo workflow

Realizando a importao de um arquivo texto em um servidor FTP


Este exemplo visa atender a necessidade de importao de arquivos gerados por mainframe no padro CSV.

Realizando o FTP
Acionar Tasks->File Transfer Protocol Task. Abrir-se- uma nova caixa de dilogo solicitando os parmetros de conexo FTP. Na guia location deve-se preencher os dados de origem e destino. Na guia files deve-se escolher os arquivos a serem baixados.

Destino dinmico
No momento em que o destino especificado, o diretrio listado o do computador do usurio.

Porm, quando o pacote for executado em um servidor, o destino ser procurado no servidor. Isto um problema, pois se faz necessria a replicao do ambiente do usurio no servidor. Ou seja: se for configurado para fazer o download do arquivo em d:\sistemas\sistema1, este diretrio dever existir no servidor. Alm disso, este diretrio dever ter permisso para escrita. Uma forma de resolver este problema utilizar o TEMP do usurio. Assim, quando o pacote for executado por um job do SQL Server, o arquivo ficar no temp do usurio do SQL Server. E quando for executado pelo desenvolvedor, ficar no TEMP do desenvolvedor. Para isto, ser utilizado o Dynamic Properties Task. (Tasks-> Dynamic Properties Task).

Dilogo Dynamic Properties Task Clicar em Add para definir uma nova propriedade dinmica. Abrir a rvore Tasks e selecionar o DTSTask_DTSFTPTask_1 (que uma referncia ao task de FTP criado anteriormente). Sero listadas todas as propriedades do task FTP.

A propriedade a ser configurada DestSite.

Alterando propriedades dinamicamente Clicar em DestSite e depois em Set. Ser aberta uma caixa de dilogo solicitando a origem da propriedade. Selecione Environment Variable em Source e TEMP em Variable.

Atribuindo a varivel TEMP

Adicionando a origem de dados como arquivo


Acionar Connection->Text File (Source) para adicionar uma conexo com o arquivo de texto. Como a localizao do arquivo ser dinmica, apenas aponte para um arquivo texto de exemplo (no importando a sua localizao). Clique em properties para configurar como os dados devem ser enxergados no arquivo.

Arquivo de origem

Alterando a localizao do arquivo de origem via Script


Acione Task->ActiveX Script Task para criar um novo mdulo de script. Neste mdulo ser alterada a localizao da origem (arquivo de texto) de dados (a que ser copiada de um servidor FTP). Veja o cdigo abaixo: '********************************************************************** ' Visual Basic ActiveX Script '************************************************************************ Function Main() dim oPacote 'as DTS.Package dim o 'As Object Set oPacote = DTSGlobalVariables.Parent oPacote.Connections("Arquivo CSV").dataSource = oPacote.Tasks("DTSTask_DTSFTPTask_1").customTask.destSite & "\teste.txt" Main = DTSTaskExecResult_Success End Function Na linha:

oPacote.Connections("Arquivo CSV").dataSource = oPacote.Tasks("DTSTask_DTSFTPTask_1").customTask.destSite & "\teste.txt" Est sendo atribudo o arquivo copiado do servidor FTP. Arquivo CSV o nome do Text File e DTSTask_DTSFTPTask_1 o nome do task FTP.

Script para alterar a origem do arquivo texto

Atribuindo o destino dos dados importados


Crie uma nova conexo para onde os dados sero copiados. Neste exemplo ser uma instncia do SQL Server. Connection->Microsoft OLE DB Provider for SQL Server Ser aberta uma caixa de dilogo para configurar a conexo com o banco SQL Server.

Conexo de destino

Tarefa para copiar os dados


Para copiar os dados, utilize Task->Transformation Data Task. Selecione primeiro a origem, depois o destino. Abra as propriedades desta task e edite o destino, escolhendo a tabela a ser populada.

Destino da importao

Definindo a ordem de execuo


O pacote deve ser executado na seguinte ordem: 1 Dynamic Properties 2 FTP 3 Mdulo ActiveX 4 Text File Para definir a ordem, pressionar a tecla Ctrl selecionar dois itens (na ordem de execuo). Depois acionar Workflow->On success. Ou seja: Selecionar 1 e 2 e acionar Workflow->On success. Selecionar 2 e 3 e acionar Workflow->On success. Selecionar 3 e 4 e acionar Workflow->On success.

Вам также может понравиться