É possível utilizar os utilitários Export e Import do Oracle para extrair ou importar grandes quantidades de dados de um banco de dados Oracle, respectivamente. Entretanto, esses utilitários sofriam da limitação de serem ferramentas cliente/servidor.
A versão 10g do Oracle introduziu o recurso de Data Pump. Funcionalmente falando, os resultados obtidos são os mesmos dos “velhos” Export e Import, entretando, as suas implementações são completamente diferentes, pois os processos do Data Pump rodam d
Tanto os utilitários Export, Import e Data Pump leêm e escrevem arquivos em formato proprietário do Oracle. Mas o que fazer quando se quer fazer um upload de grandes quantidades de dados gerados a partir de um outro sistema que não o Oracle? Nestes casos, podemos utilizar o SQL*Loader.
O SQL*Loader utiliza um arquivo de input onde são localizados os dados que serão carregados no banco de dados, um arquivo de controle (controlfile) utilizado para definir a forma de interpretar o conteúdo do arquivo de input e um arquivo de erro, no qual serão registradas as falhas e o
O controlfile nada mais é que um arquivo de texto que diz ao SQL*Loader como processar os arquivos de input. Os formatos que o SQL*Loader é capaz de entender são o de registro fixo, registro variável e o de registro de stream.
- Os formatos de registro fixo são os mais simples e os que possuem processamento mais rápido. No exemplo abaixo cada linha de dados possui uma extensão fixa que termina com o caractere de retorno carriage return). Dentro das linhas, é utilizado algum caractere como delimitador dos campos. O controlfile deste exemplo lerá o arquivo fixed.dat, realizará o parsing em linhas de 15 bytes, dividirá as linhas em 2 campos e as inserirá nas colunas “first” e “last” da tabela “names”.
Controlfile:
load data
infile ‘fixed.dat’ “fix 15”
into table names
fields terminated by ‘,’
(first, last)
Arquivo de input (fixed.dat)
Ricardo,Wandre
Luiz,Carlossss
Thiago,Gottiii
- Os registros variáveis possuem uma entrada no início de cada linha para informar sua extensão. A extensão dessa entrada deve ser incluída no controlfile. Repare que no exemplo abaixo do arquivo de input, cada linha apresenta um número de 3 dígitos, de acordo com o que foi especificado no controlfile.
Controlfile:
load data
infile ‘names.dat’ “var 3”
into table names
fields terminated by ‘,’
(first, last)
Arquivo de input (names.dat)
015Ricardo,Wandre
012Luiz,Carlos
013Thiago,Gotti
- No formato de registro de stream nenhuma informação sobre a extensão das linhas é fornecido ao SQL*Loader. O controlfile e o arquivo de input podem ser vistos abaixo. Repare que neste controlfile o caracter ‘\n’ é utilizado para especificar onde termina uma linha.
Controlfile:
load data
infile ‘names.dat’ “str ‘\n’”
into table names
fields terminated by ‘,’
(first, last)
Arquivo de input (names.dat)
Ricardo,Wandre
Luiz,Carlos
Thiago,Gotti
Com relação à velocidade de processamento temos que o formato de registro fixo é mais rápido que o de registro variável que, por sua vez, é mais rápido que o de registro de streams.
A linha de comando necessária para executar o SQL*Loader é:
sqlldr userid=<nome_administrador>/<senha> control=<arquivo_de_controle.ctl>
Obs: Ao contrário do Data Pump o SQL*Loader não é um utilitário que roda no servidor, mas sim um processo de usuário que estabelece uma sessão com a instância e no banco de dados é executado através de um processo servidor normal.


