ODI Series
March 11
2012
Este tutorial demonstra os passos necessários para cria um projeto e uma interface no Oracle Data Integrator (ODI) para importar um arquivo texto para uma tabela do banco de dados relacional.
Importando Tabelas
Visão Geral
Uma tarefa comum realizada com o Oracle Data Integrator é importar dados de um arquito texto e atualizar uma tabela do banco de dados relacional. 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 importar esses dados. No post anterior caminhamos pelos passos para gerar um arquivo texto e iremos utilizar essa mesma estrutura para realizar a tarefa de hoje.
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 leitura do arquivo texto e geração da tabela 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é-requisitos
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 posterior2. Ter iniciado os serviços e componentes do banco de dados3. Ter instalado o Oracle Data Integrator 10g4. Ter criado o ambiente de trabalho do ODI, repositórios, usuários e
etc.5. Ter feito o tutorial ODI Series – Exportar Tabelas para Arquivo Texto -
http://idcube.blogspot.com/2012/03/odi-series-exportar-tabelas-para.html, neste artigo você irá encontrar as parametrizações necessárias para a manipulação de arquivo texto.
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 Import-Texto-Tabela, 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 importar o arquivo texto para dentro da nossa tabela de Cidades. Precisamos do IKM SQL Incremental Update, LKM File to SQL e CKM SQL. Para importar um KM, 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 File to SQL, depois repita o procedimento para o Integration (IKM) e selecione o KM IKM SQL Incremental Update e o último passo é para o Check (CKH) e selecione o KM CKM SQL conforme a figura abaixo demonstra, após as seleções clique OK.
6. Após importar os KMs a visão da pasta, a estrutura de projeto deverá ser idêntica a que apresento na figura abaixo:
ODI – Criação da Interface para Importação
Podemos perceber que não fizemos a configuração de Modelo de Dados tão pouco de Topologia, isto devido ao fato que iremos utilizar a mesma tabela criada no artigo anterior (SRC_CITIES) e também iremos utilizar o mesmo Arquivo Texto (EXP_CIDADES.TXT).
Faça um backup do arquivo EXP_CIDADES.TXT, e em seguida preencha o arquivo de acordo com a figura abaixo:
Para criar a nossa interface siga os passos abaixo:
1. No módulo ODI Designer, clique na aba Project. Expanda nosso projeto Import- Texto-Tabelas, então expanda a pasta Import-Txt-Tbl. 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 ValorName Imp-ArqTxt-TblOptimization Contexto GlobalStaging Area Different From Target
Marcar
Selecione LOGICAL_DW_ORIGEM
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 o modelo SRC_CITIES para a janela Target DataStore e o modelo CITIES (EXP_CIDADES.TXT) para a janela Sources.
4. No momento em que você arrastou o modelo SRC_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 que 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 igual 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 dos campos.
Field Name MappingCD_CITY (null) CIT.CD_CITIESNM_CITY (null) CIT.NM_CITIESSTATE (null) CIT.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 File to SQL.
Na caixa Target + Staging Area, devemos selecionar o IKM correto, IKM SQL Incremental Update e marcar as opções da caixa Option como Yes de acordo com o demonstrado na tabela abaixo:
Option Value
INSERT YESUPDATE YESCOMMIT YESDELETE_TEMPORARY_OBJECTS YES
9. Com a configuração da aba Flow finalizada, clique na aba Control. E selecione o KM correpondente, neste caso é o CKM SQL.
10.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.
11.Agora que a interface Imp-ArqTxt-Tbl foi executa devemos verificar se foi executada com sucesso e em seguida validar a carga dos dados na tabela. Abra o módulo Operator e no painel de sessões procure a execução da sua interface, neste caso fiz a pesquisa em All
Executions e como podem ver na figura abaixo a interface foi executada com sucesso.
12.Agora vamos verificar se a tabela foi carregada corretamente.
Abra o SQL Developr e monte um código SQL para listar apenas o Estado do Rio de Janeiro conforme a figura acima. Veja que a cidade com o código 9608 está com o nome de AMERICANA, mas deveria ser NITEROI, o arquivo que acabamos de carregar está com este pequeno
erro. Para corrigir edite o arquivo texto e altere AMERICANA por NITEROI e execute a interface novamente.
Após a correção do arquivo e re-execução da interface, veja que a tabela foi corrigida, isso se deve ao fato de sido utilizado um IKM que permitiu a Inserção de registros quando os mesmos não existiam e quando existiam permitiu a Atualização do mesmo. Sempre quando for começar uma interface planeje sempre toda a execução do código e as necessidade de comandos e permissões dentro do banco de dados.