odi series - exportar tabelas para arquivo texto
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.TRANSCRIPT
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');