ODI Series - Exportar Tabelas para Arquivo Texto

Preview:

DESCRIPTION

Este tutorial demonstra os passos necessários para criar um projeto e uma interface no Oracle Data Integrator (ODI) para exportar uma tabela do banco de dados relacional para um arquivo texto.

Citation preview

ODI Series

March 5

2012 Este tutorial demonstra os passos necessários para criar um projeto e uma interface no Oracle Data Integrator (ODI) para exportar uma tabela do banco de dados relacional para um arquivo texto.

Exportando Tabelas

Visão Geral

Uma tarefa comum realizada com o Oracle Data Integrator é exportar dados de uma

tabela de um banco de dados relacional e gerar um arquivo texto. Esta tarefa é comum

quando temos sistemas que precisam ser alimentados mas não possuem conectores,

ou esses conectores tem um custo muito elevado e a solução de integração se resume

em gerar um arquivo texto para que ele seja utilizado na carga dos dados.

Este tutorial tem como missão principal guiar o leitor através dos passos necessários

para a geração deste arquivo.

Serão utilizados os módulos Designer e Operator. Com o Designer iremos criar o

projeto e as interfaces necessárias, assim como parametrizar todo o ambiente para a

geração do arquivo e o módulo Operator para validar a execução do processo.

Cenário de Trabalho

Imagine-se trabalhando como DBA (Database Administrator) para uma empresa de

Telecomunicações. Nesta empresa, você é responsável por gerenciar os bancos de

dados e suprir as necessidades de integração de dados com outros sistemas. Em

particular você é responsável por todas as atividades de Carga, transformação e

validação dos dados.

Para começar esse projeto você precisa criar ou ter um ambiente de trabalho

(repositórios Master e Work no ODI), caso queira criar um novo ambiente no ODI e

não sabe como leia o artigo - http://idcube.blogspot.com/2012/02/odi-tutorial-

iniciando-um-projeto.html, neste artigo você irá encontrar todo o necessário para a

criação de um novo ambiente de trabalho.

Com o ambiente criado será necessário criar um projeto e um interface para exportar

os dados da tabela relacional para o arquivo texto e lembre-se sempre ORGANIZE SEU

PROJETO NO INÍCIO.

Pré-resquisitos

Antes de iniciar as atividades do projeto, garanta que seu ambiente contempla os pré-

requisitos abaixo mencionados:

1. Ter instalado o banco de dados Oracle Database 10g ou posterior

2. Ter iniciado os serviços e componentes do bando de dados

3. Ter instalado o Oracle Data Integrator 10g

4. Ter criado o ambiente de trabalho do ODI, repositórios, usuários e etc

ODI – Configuração do Projeto

Para criar um novo projeto com o Oracle Data Integrator, siga os seguintes passos:

1. Inicie o ODI Designer: Start > Programs > Oracle > Oracle Data

Integrator > Designer. Selecione OracleDI Tutorial Series Work

Repository na tela de Login (campo Login Name). Entre o usuário e senha de

acesso, DW_DBA no campo user e DW_DBA no campo password. Clique OK

para efetuar o Login.

2. Dentro do módulo Designer, na pasta Projects, clique no ícone Insert

Project .

3. Uma nova tela aparecerá, configure o campo Name com Export-Tabelas-

Texto, este campo é o nome do novo projeto que estamos criando para este

artigo. Veja que o campo Code é carregado automaticamente. Quando

terminar clique no botão OK. Observe que ao lado esquerdo da tela de Projetos

irá aparecer o nome do Projeto que acabamos de criar conforme as figuras

abaixo.

4. Vamos parametrizar os Knowledge Modules necessários para exportar dados

das tabelas para um arquivo texto. Precisamos do IKM SQL to File Append e

LKM SQL to SQL. Para importar um KMs, expanda a pasta de Projetos no

painel direito, encontre o diretório Knowledge Modules e clique com o botão

direito, selecione a opção Import Knowledge Modules.

5. Na próxima tela iremos selecionar os KMs que vamos utilizar, clique no Loading

(LKM) e com o botão direito escolha Import KM e após essa seleção encontre

na tela o KM a ser importado LKM SQL to SQL, depois repita o procedimento

para o Integration (IKM) e selecione o KM IKM SQL to File Append conforme

a figura abaixo demonstra, após as seleções clique OK.

6. Após importar os KMs a visão da pasta no estrutura de projeto deverá ser

idêntica a que apresento na figura abaixo:

ODI – Configuração do Banco de Dados

Precisamos criar um datastore, onde teremos as tabelas que serão utilizadas para o

nosso Projeto. Sigas os passos abaixo para poder criar e popular a tabela:

1. Crie a tabela fonte e popule executando os comandos SQL providos abaixo.

Expanda a conexão DW_ORIGEM > Tables > SRC_CITIES e verifique se a

tabela foi criada com sucesso.

2. Agora execute os comandos SQL para popular a tabela SRC_CITIES.

Nota: No final deste arquivo será disponibilizado os dois scripts de comandos

SQL completos.

ODI – Configuração do Modelo de Dados

Para criar um novo modelo de dados, siga os passos descritos abaixo:

1. Abra o ODI Designer. Clique em na pasta Models e selecione Insert Model

Folder. Digite DW_ORIGEM no campo Name. Este passo é importante para

organizar os modelos de dados.

2. Após criar a pasta, vamos criar a estrutura do modelo de dados. Para o nosso

Projeto o ambiente fonte (origem de dados) é uma tabela, vamos parametrizar

este ambiente para poder utilizar a tabela criada no passo anterior. Preencha as

informações tal qual descrita na tabela abaixo:

Parâmetro Valor

Name SRC_TABLES

Technology Oracle

Logical Schema LOGICAL_DW_ORIGEM

3. Agora clique na aba Reverse e vamos parametrizar a engenharia reversa das

tabelas e importar para dentro do ODI a estrutura física das tabelas que estão

no banco de dados Oracle. Selecione o Contexto Desenvolvimento, o Tipo de

Objeto a ser parametrizado é uma tabela portanto, selecione Table e depois

clique nos botões Apply e Reverse nesta sequência.

O resultado podemos ver a esquerda do painel de modelo de dados, veja que

na estrutura abaixo do modelo que criamos SRC_TABLES existem vários

objetos sendo que um deles é a nossa tabela SRC_CITIES.

4. Após fazer a engenharia reversa das tabelas, verifique se realmente a tabela foi

criada e para isso veja a sequencia abaixo, o primeiro que devemos fazer é

selecionar a tabela que queremos:

Em seguida clique na tabela SRC_CITIES com o botão direito do mouse e em

seguida selecione a opção Data ou View Data.

Você deverá ter uma visão dos dados semelhante a figura mostrada abaixo:

ODI – Configuração de Topologia para ArqTxt

Depois de criar o modelo de dados para o banco de dados devemos configurar a

utilização de arquivos textos dentro do Oracle Data Integrator. Para essa tarefa

teremos que utilizar dois módulos do ODI, o módulo Topology para configurar o

armazenamento físico do arquivo e o módulo Designer para configurar o modelo de

dados para este arquivo texto.

Para criar o esquema físico para um novo modelo de arquivo texto siga os seguintes

passos:

1. Entre no módulo Topology. Já dentro do módulo, click na pasta Physical

Architecture e selecione Technologies > File. Clique com o botão direito e

em seguida selecione a opção Insert Data Server.

2. Uma nova janela irá abrir e nela devemos fazer duas parametrizações, na

primeira aba denominada Definition dê um nome para o esquema físico, no

nosso caso o nome será EXPORT-TBL-ARQTXT conforme mostrado na figura

abaixo.

3. Clique na aba JDBC para configurar a conexão para o arquivo texto. O

parâmetro JDBC Driver deve ser preenchido com

com.sunopsis.jdbc.driver.file.FileDriver e o parâmetro JDBC Url deve ser

preenchido com jdbc:snps:dbfile.

4. Clique no botão Test para verificar se a parametrização feita está correta e em

seguida clique no botão Apply para continuar a configuração do esquema

físico.

5. Após clicar no botão Apply uma nova janela vai se abrir, para os campos

Directory (Schema) e Directory (Work Schema) entre o caminho

(diretório) onde os arquivos serão gerados, para nosso projeto utilize o

seguinte caminho C:\PROCESSO\INTEGRACAO\ARQUIVOS.

6. Ao clicar no botão Apply para continuar a configuração será apresentada uma

mensagem de aviso, onde informa que o esquema não possui Context. Neste

instante não há problema pois ainda iremos configurar o esquema lógico e o

contexto, resolvendo o problema. Caso não façamos essa configuração não

será possível utilizar as estruturas de arquivo texto. Clique no botão OK.

7. Para verificar se o esquema físico foi criado corretamente veja ao lado esquedo

da tela de navegação se exite o esquema EXPORT-TBL-ARQTXT criado,

abrindo o esquema como se fosse um diretório (clicando no símbolo “+”)

devemos ter a mesma visão que a figura abaixo nos mostra.

8. Dentro do módulo Logical Architecture vá até Technologies > File, com o

botão direito selecione a opção Insert Logical Schema.

9. Uma nova janela será aberta, nela devemos parametrizar o esquema lógico

para geração do arquivo texto, lembrando que no momento em que estamos

desenvolvendo uma interface o objeto atribuído como esquema de trabalho de

parametrização sempre é o esquema lógico por isso sua importância é vital.

Para manter a padronização iremos utilizar o mesmo nome do esquema físico

no esquema lógico EXP-TBL-ARQTXT. Neste passo também devemos definir

quais são os Contextos que iremos utilizar, para o nosso projeto iremos utilizar

os Contextos Global e Desenvolvimento. Para parametrizar basta clicar no

campo Physical Schema que um Drop List será apresentado, selecione o

esquema físico correpondente e em seguida clique no botão OK.

10. Valide se o esquema lógico foi criado, veja no painel de navegação se o

esquema lógico foi criado.

ODI – Configuração de Modelo para ArqTxt

Depois de criar a topologia física e lógica para o nosso arquivo texto é o momento para

configurar o modelo de dados para o arquivo texto. Para criar o modelo de dados siga

os passos abaixo:

1. No módulo Designer vá até a aba Models e clique com o botão direito sobre

o diretório que já criamos anteriormente DW_ORIGEM, selecione a opção

Insert Model conforme apresentado na figura abaixo:

2. Uma nova janela será apresentada, iremos preencher os parâmetros nas abas

Definition e Reverse, conforme a tabela abaixo e as figuras ilustrativas:

Parâmetro Valor

Name SRC_FILES

Technology File

Logical Schema EXPORT-TBL-ARQTXT

Context Global

Type of object to Reverse-Engineer Table

Aba Definition.

Aba Reverse.

Diferentemente do modelo de dados do banco de dados, não devemos fazer o

Reverse-engineer pois não temos o arquivo criado, logo não haverá referência

para a engenharia-reversa.

Após a configuração clique no botão OK.

3. Veja se o modelo de dados foi criado, navegando no painel a esquerda, o

resultado deve ser algo semelhante a figura abaixo:

4. Agora você deve criar a estrutura do arquivo texto, para isso clique com o

botão direito sobre o modelo criado SRC_FILES e selecione a opção Insert

Datastore.

5. Uma nova janela será aberta, nela devemos configurar as abas Definition,

Files e Columns. Utilze a tabela abaixo para configuração dos campos:

Parâmetro (Aba Definition) Valor

Name CITIES

Alias CIT

Datastore Type Table

OLAP Type <Undefined>

Resource Name EXP_CIDADES.TXT

Parâmetro (Aba Files) Valor

File Format Delimited

Heading (Number of Lines) 1

Record Separator MS-DOS

Field Separator Other

Symbol Field Separator “;”

Para criar os campos manualmente clique no botão .

Name Type Physical Length Logical Length

CD_CITIES String 8 8

NM_CITIES String 80 80

STATE String 2 2

6. Terminada a configuração clique no botão OK e verifique no painel de

navegação a esquerda se o seu modelo de dados foi criado.

ODI – Criação da Interface para Exportação

Para criar a nossa interface siga os passos abaixo:

1. No módulo ODI Designer, clique na aba Project. Expanda nosso projeto

Export-Tabelas-Texto, então expanda a pasta Export-Tbl-Txt. Clique com

o botão direito no componente Interfaces e selecione Insert Interface.

2. Na próxima tela, configure os parâmetros da aba Definition de acordo com a

tabela abaixo:

Parâmetro Valor

Name Exp-Tbl-ArqTxt

Optimization Context Global

Staging Area Different From Target Marcar

Selecione SUNOPSIS_MEMORY_ENGINE

3. Clique na aba Diagram, no painel esquerdo da tela clique na aba Models para

selecionar os modelos de dados de origem e destino. Arraste a modelo

SRC_CITIES para a janela Sources e o modelo CITIES

(EXP_CIDADES.TXT) para a janela Target DataStore.

4. No momento em que você arrastou o modelo CITIES para a janela Target

Datastore apareceu uma mensagem igual a figura abaixo, essa mensagem

indica que no modelo de origem e no modelo de destino tem alguns campos

e/ou todos com o mesmo nome, logo é possível fazer o mapeamento dos

campos automaticamente e é isso iremos fazer. Clique no botão Yes.

5. Se você ver bem o único campo preenchido automaticamente foi o campo

STATE. Conforme explicamos anteriormente.

6. Para mapear os demais campos clique no campo Mapping e uma tela igua a

que é mostrada abaixo irá aparecer, basta selecionar e arrastar o campo

contido na tabela na janela Sources. Outra forma também é digitando o

conteúdo do campos.

Field Name Mapping

CD_CITIES (null) SRC_CITIES.CD_CITY

NM_CITIES (null) SRC_CITIES.CD_CITY

STATE (null) SRC_CITIES.STATE

7. Com a configuração da aba Diagram finalizada, clique na aba Flow. A

primeira visão que teremos e a mesma da figura abaixo:

8. Clique sobre cada uma das caixas, perceba que a primeira caixa representa o

ambiente origem ou Source, a caixa do meio é a área de transição ou Staging

Area e a última caixa é o ambiente destino ou Target. Ao clicar sobre cada

uma das caixas teremos as visões mostradas nas figuras abaixo:

Na caixa Source devemos selecionar o LKM que definimos no primeiro passo

deste artigo, LKM SQL to SQL.

Na caixa Staging Area não devemos marcar nenhuma opção, pois para o nosso

exemplo não é necessário.

Na caixa Target, devemos selecionar o IKM correto, IKM SQL to File Append

e também marcar todas as opções da caixa Option como Yes.

Parâmetro Valor

INSERT Yes

TRUNCATE Yes

GENERATE_HEADER Yes

9. Terminada essas configurações clique no botão Apply e a partir deste instante

você poderá clicar no botão OK e sair da interface ou clicar no botão Execute

e submeter a interface, ou seja, executar o código que acabamos de criar.

Vamos optar pela segunda opção, clique no botão Executar. Selecione o

Contexto Global e clique no botão OK. Em seguida clique no botão OK

novamente.

10. Agora que a interface Exp-Tbl-ArqTxt foi executada devemos verificar se foi

executada com sucesso e em seguida validar a criação do arquivo texto,

entrando no diretório e abrindo o arquivo. Abra o módulo Operator e no painel

de sessões procure a execução da sua interface, neste caso fiz a pesquisa por

data e como podem ver na figura abaixo a interface foi executada com sucesso.

11. Agora vamos até o diretório onde o arquivo texto foi criado.

12. Visão final do arquivo texto criado.

Comandos SQL

Comando SQL para criar a tabela:

-- Create Table SRC_CITIES CREATE table "SRC_CITIES" ( "CD_CITY" NUMBER(8,0) NOT NULL, "NM_CITY" VARCHAR2(80), "STATE" VARCHAR2(2), primary key("CD_CITY") );

Comando SQL para popular a tabela:

-- Populate Table SRC_CITIES insert into "SRC_CITIES" values ('00105','ADAMANTINA','SP'); insert into "SRC_CITIES" values ('00204','ADOLFO','SP'); insert into "SRC_CITIES" values ('00303','AGUAI','SP'); insert into "SRC_CITIES" values ('00402','AGUAS DA PRATA','SP'); insert into "SRC_CITIES" values ('00501','AGUAS DE LINDOIA','SP'); insert into "SRC_CITIES" values ('00550','AGUAS DE SANTA BARBARA','SP'); insert into "SRC_CITIES" values ('00600','AGUAS DE SAO PEDRO','SP'); insert into "SRC_CITIES" values ('00709','AGUDOS','SP'); insert into "SRC_CITIES" values ('00758','ALAMBARI','SP'); insert into "SRC_CITIES" values ('00808','ALFREDO MARCONDES','SP'); insert into "SRC_CITIES" values ('01004','ALTINOPOLIS','SP'); insert into "SRC_CITIES" values ('01103','ALTO ALEGRE','SP'); insert into "SRC_CITIES" values ('01152','ALUMINIO','SP'); insert into "SRC_CITIES" values ('01202','ALVARES FLORENCE','SP'); insert into "SRC_CITIES" values ('01301','ALVARES MACHADO','SP'); insert into "SRC_CITIES" values ('01400','ALVARO DE CARVALHO','SP'); insert into "SRC_CITIES" values ('01509','ALVINLANDIA','SP'); insert into "SRC_CITIES" values ('01608','AMERICANA','SP'); insert into "SRC_CITIES" values ('01707','AMERICO BRASILIENSE','SP'); insert into "SRC_CITIES" values ('01806','AMERICO DE CAMPOS','SP'); insert into "SRC_CITIES" values ('01905','AMPARO','SP'); insert into "SRC_CITIES" values ('02002','ANALANDIA','SP'); insert into "SRC_CITIES" values ('02101','ANDRADINA','SP'); insert into "SRC_CITIES" values ('02200','ANGATUBA','SP'); insert into "SRC_CITIES" values ('02309','ANHEMBI','SP'); insert into "SRC_CITIES" values ('02507','APARECIDA','SP');