Data

21 fev, 2011

Integration Services: Integração entre Oracle e SQL Server

Publicidade

Recentemente, escrevi alguns artigos sobre integração com arquivo txt com o Integration Services (você pode vê-los na minha página de autor), porém existe outra forma interessante de realizar integração, que é através de banco de dados diferentes.

Neste artigo, pretendo fazer um exemplo em que consulto alguns registros no Oracle e realizo um insert desses registro no SQL Server.

A ideia é consultar as cidades que estão na tabela Oracle e importar para o SQL Server.

Crie a seguinte tabela no SQL Server:

CREATE TABLE [dbo].[CIDADE](
[CD_CIDADE] [numeric](10, 0) NOT NULL,
[DS_CIDADE] [varchar](100) NULL,
[CD_UF] [varchar](2) NULL,
CONSTRAINT [CIDADE_PK] PRIMARY KEY CLUSTERED
(
[CD_CIDADE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Agora crie a seguinte tabela no Oracle: 

CREATE TABLE MUNICIPIO (
CODIGO_MUNICIPIO NUMERIC(10) NOT NULL,
NOME_MUNICIPIO VARCHAR2(100),
UNIDADE_FEDERATIVA VARCHAR(2)
);

ALTER TABLE MUNICIPIO ADD CONSTRAINT MUNICIPIO_PK PRIMARY KEY (CODIGO_MUNICIPIO);

Vamos realizar alguns insert na tabela MUNICIPIO na base Oracle.

INSERT INTO MUNICIPIO VALUES (1, 'Barra Bonita', 'SP');

INSERT INTO MUNICIPIO VALUES (2, 'Bauru', 'SP');

INSERT INTO MUNICIPIO VALUES (3, 'Belo Horizonte', 'MG');

INSERT INTO MUNICIPIO VALUES (4, 'São Manuel', 'SP');

Agora que temos nossa base de dados pronta, vamos ao Integration Services. Abra o SQL Server Business Intelligence Development Studio e crie um novo projeto Integration Services Project, chame o IntegracaoEntreBancos.

Na guia Control Flow, adicione um componente DataFlow Task. Esse componente suporta um fluxo de dados que permite mover dados de uma fonte de dados para outra fonte. Mais informações sobre ele, acesse aqui.

Clique duas vezes sobre o componente DataFlow Task para que você veja levado a guia Data Flow.

Aqui você deve adicionar 3 componentes:

  • OLE DB Source: realiza a conexão e a consulta com o banco de origem, no nosso exemplo o Oracle, mais informações aqui.
  • Derived Column: carrega dados de uma variável de dados e realiza uma operação de insert, mais informações aqui.
  • OLE DB Destination: grava os arquivos em outra fonte de dados, pode ser um arquivo texto ou uma base de dados, mais informações aqui.

Com nossos três componentes, vamos configurar primeiramente o OLE DB Sourc. Clique duas vezes sobre o componente e a tela OLE DB Source Editor será exibida. Primeiro passo é criar uma conexão com a base Oracle. Clique no botão New e a tela Configure OLE DB Connection Manager será exibida, clique novamente no botão New para criar a conexão.

Em Provider, selecione Microsoft OLE DB Provider for Oracle, preencha os campos com usuário e senha e com a conexão com a base e teste a conexão. Com a conexão pronta, clique em OK.

De volta à tela de OLE DB Source Editor em Data access mode, selecione  SQL Command e digite a seguinte consulta:

SELECT CODIGO_MUNICIPIO,
NOME_MUNICIPIO,
UNIDADE_FEDERATIVA
FROM MUNICIPIO

Clique no botão Preview e veja o resultado da consulta, a tela deve ficar igual à da imagem abaixo:
OLE DB Source Edit

Clique no botão OK e ligue a seta verde do componente OLE BD Source ao componente Derived Column.

Clique duas vezes sobre o componente Derived Column para que a tela Devired Column Transformation Editor seja exibida.

Nesse componente vamos especificar quais as colunas serão retornadas e a alias do retorno, também podemos criar novas colunas através de expressões. Eu não tinha pensando nesse exemplo em utilizar uma coluna de expressão, mas agora decidir usar, então vamos fazer uma alteração na nossa tabela no SQL Server.

Vamos criar uma nova coluna na tabela Cidade no SQL Server, segue abaixo:

ALTER TABLE CIDADE ADD DS_CIDADE_UF NVARCHAR(200)

Essa coluna irá receber o nome da cidade mais o nome a sigla da unidade federativa. Voltando para a tela Derived Column Transformation Editor, realize a configuração igual a imagem abaixo:
Derived Column Transformation Editor

O campo Derived Column Name é o nome que será retornado pelo componente. Derived Column é de que coluna essa “nova coluna” será derivada e expression é o valor que será retornado. Veja que na coluna DS_MUNICIPIO_UF criei uma expressão concatenando dois valores. As demais colunas você não precisa adicionar, pois elas já estão adicionadas como você pode ver na imagem acima no quadrado vermelho.

Clique em OK e ligue a seta verde do componente Derived Column com o componente OLE Source Destination.

Agora vamos configurar o OLE Source Destination, clique duas vezes sobre ele para que a tela OLE Source Destination Editor seja exibida. Será necessário criar uma conexão com a base SQL Server. Caso você não tenha criado, crie uma como já expliquei em artigos anteriores.

Após criar a conexão em Data access mode, selecione Table or View – fast load e, em Name of the table or the view, selecione a tabela Cidade. Deve ficar como a imagem abaixo:

OLE Source Destination Editor

Do lado superior esquerdo, selecione mappings e faça a ligação entre as colunas que o componente Derived Column retorna com as colunas da tabela cidade do banco de dados SQL Server como a imagem abaixo:

OLE Source Destination

Nosso projeto está pronto. Execute-o e, em seguida, faça uma consulta na tabela cidade no banco de dados SQL Server; você verá que os registros foram importados e que a coluna DS_MUNICIPIO_UF recebeu a concatenação que criamos no componente Derived Column, como na imagem abaixo:

Resultado

Espero que tenham gostado e até a próxima.