Você está na página 1de 6

TABELAS EXTERNAS

O recurso de tabelas externas permite acessar dados de tabelas externas como se tivesse em uma tabela do banco de dados. Vamos ver como usar as clausulas para criar uma tabela externa. Uma tabela externa somente para leitura. O atributo somente para leitura impede a realizao e operaes DML e tambm no permite a criao de ndices.

Os metadados das tabelas externas so armazenados no banco de dados enquanto os dados so armazenados fora do banco de dados. Os metadados descrevem os dados e os objetos do esquema. So usados pelas aplicaes para extrair e computar dados.

As tabelas externas permitem usar dados externos como tabelas virtuais. Desta forma os dados externos so consultados diretamente sem que precisem ser carregados nos banco de dados. Consultamos as tabelas externas da mesma maneira que o faz em tabelas normais.

As tabelas externas permitem acesso a origem de dados externas. Podemos usar a tabela externa na clusula AS SELECT da instruo INSERT INTO para carregar dados de origem externa nas tabelas de banco de dados. Sintaxe:

y y y

A clusula ORGANIZATION permite especificar a ordem em que as linhas de dados so armazenadas. O parmetro EXTERNAL indica que a tabela somente de leitura e que est localizada fora do banco de dados. A clusula TYPE especifica o drive de acesso da tabela externa, este, interpreta os dados externos para o banco de dados. O servidor Oracle oferece dois drives de acesso: o ORDER_LOADER (default); o ORACLE_INTERNAL.

A clusula DEFAULT DIRECTORY permite especificar um ou mais diretrios onde os dados externos sero armazenados. Os diretrios default tambm so usados pelos drivers de acesso para armazenar arquivos auxiliares como os logs de erros. A clusula ACCESS PARAMETERS designa valores para os parmetros de acesso do drive especfico, este drive interpreta as informaes fornecidas nesta clusula. Especifica o delimitador usado para separar colunas no arquivo sem formatao. Especifica o nome do arquivo que registra erros. Especifica o finalizados de campos do arquivo sem formatao. A clusula LOCATION usada para especificar um localizador externo para cada origem de dados externa. Este parmetro seguido do nome do arquivo externo. As informaes fornecidas na clausula no so interpretadas pelo servidor. O drive de acesso interpreta as informaes no contexto dos drives externos, este interpreta o contexto dos dados externos. A clusula PARALLEL especifica o nmero de servidores em execuo paralela que trabalha com as origens de dad o simultaneamente. Por exemplo, se for especificado 5, esta ser a quantidade de servidores que podero trabalhar os dados simultaneamente. O tipo de dados especificado para as colunas da clusula FIELDS TERMINATED BY pode ser diferente da especificada na CREATE TABLE. Podem ocorrer erros quando o servidor converte o tipo de dados para que corresponda a clusula CREATE TABLE. A clusula REJECT LIMIT especifica o nmero de erros de converso que podem ocorrer antes da consulta ser abortada. O limite default zero.

CRIANDO DIRETRIOS

Para converter um arquivo em uma origem de dados, necessrio criar um objeto de diretrio, este objeto o diretrio default onde reside a origem de dados. Podemos ter um ou vrios objetos de diretrio default. O uso de diversos objetos de diretrio default facilita o balanceamento de carga entre as vrias unidades de disco.

Exemplo de origem de dados. O arquivo EMPLOYEE1.TXT um arquivo sem formatao que contm duas linhas de dados. As colunas so separadas por vr gulas e as linhas de dados ficam em duas linhas separadas. O arquivo armazenado na pasta FLAT_FILE na unidade de disco rgido.

Para acessar a origem de dados externa necessrio criar um objeto de diretrio, que especifica um apelido para um diretrio no sistema de arquivo do servidor onde reside uma origem de dados externa. A sintaxe para criar o objeto do diretrio est acima. A instruo CREATE DIRECTORY cria um diretrio. A clusula OR REPLACE recria um diretrio j existente. O parmetro PATH NAME especifica o caminho completo do sistema operacional do servidor onde se localiza os arquivos.

Devemos ter o privilgio de sistema CREATE ANY DIRECTORY para criar diretrios. Quando cria um diretrio recebemos automaticamente o privilegio READ para este objeto. Tambm podemos conceder o privilegio READ para outros usurios ou atribuies.

No exemplo acima, o objeto do diretrio foi criado. Podemos usar este nome do diretrio em vez de usar o caminho externo do arquivo.

ESTUDO DE CASO PRATICO 1. Criar na unidade C a pasta EMP_DIR; 2. Conectar como usurio SYSTEM e conceder os seguintes privilgios: CREATE OR REPLACE DIRECTORY EMP_DIR AS 'C: \EMP_DIR'; GRANT CREATE ANY DIRECTORY TO HR; GRANT READ, WRITE ON DIRECTORY EMP_DIR TO HR;

3. Criar um arquivo chamado EMP.DAT e gravar no diretrio C:\EMP_DIR contendo numero e nome dos empregados. Exemplo: 1,Genoveva 2,Serafim 4. Conectar como usurio HR e digitar o commando abaixo:
CREATE TABLE oldemp (empno number, empname char(20)) ORGANIZATION EXTERNAL (TYPE ORACLE_LOADER DEFAULT DIRECTORY EMP_DIR ACCESS PARAMETERS (RECORDS DELIMITED BY NEWLINE NOBADFILE NOLOGFILE FIELDS TERMINATED BY ',' (EMPNO CHAR, EMPNAME CHAR)) LOCATION ('EMP1.DAT')) PARALLEL 5 REJECT LIMIT 200; 5. Em seguida, basta consultar a tabela OLDEMP. EXERCICIO
1. Criar uma tabela externa chamada OLDEMP que armazena dados nas colunas EMPNO, EMPNAME e BIRTHDATE. A tabela usa o diretrio EMPLOYEE_DIR para acessar a origem de dados. o A clusula ACCESS PARAMETERS permite design ar valores para o drive ORACLE_LOADER. Podemos especificar valores para os parmetros RECORD DELIMITED BY e FIELDS TERMINATED BY. O arquivo de dados que a tabela externa usa, finaliza com uma vrgula os registros que utilizam novas linhas e novos campos. RECOD DELIMITED BY NEWLINE especifica o delimitador de registro.

o o o o

BADFILE bad_emp especifica o arquivo que armazenar erros. LOGFILE log_emp - especifica o nome do arquivo de log. PARALLEL 5 - No poder ter mais de 5 conexes simultneas com o arquivo. REJECT LIMIT 200 - Especifica o nmero de erros de converso que pode ocorrer.

CREATE TABLE oldemp (empno number, empname char(20)) ORGANIZATION EXTERNAL (TYPE ORACLE_LOADER DEFAULT DIRECTORY EMP_DIR ACCESS PARAMETERS (RECORDS DELIMITED BY NEWLINE NOBADFILE NOLOGFILE FIELDS TERMINATED BY ',' (EMPNO CHAR, EMPNAME CHAR)) LOCATION ('EMP1.DAT')) PARALLEL 5 REJECT LIMIT 200;

Você também pode gostar