SQL Loader

Hoje precisei utilizar um import de um arquivo de texto delimitado pela string # e não soube como fazer.
Sabia que para atingir meu objetivo eu precisava efetuar um sql loader, mas não sabia como.

Para que ninguém mais passe por apertos iguais a esse vou mostrar o Basico de um SQL Loader.

SQL> create table sql_loader (codigo number(10), nome varchar2(50));

Table created.

SQL> exit
Disconnected from Oracle Database 11g Release 11.2.0.2.0 - Production

Agora vamos criar o arquivo de controle

bash-3.1$ cat loader.ctl
load data
  infile '/home/oracle/sql_loader.txt'
  into table sql_loader
  fields terminated by "," optionally enclosed by '"'
  (codigo, nome)
bash-3.1$

Observe a linha “fields terminated by “,” optionally enclosed by ‘”‘ ” Esta linha é onde você coloca os delimitadores do do arquivo.

Criei um arquivo texto com 500 entradas e todas elas basicamente assim.

10001,”Leandro lana”
10002,”oraclehome.com.br”

Com número sequencial até o 10500.

Com isso estamos pronto para começar a importação.
Temos o arquivo de controle, temos o arquivo de texto com os dados e temos a tabela criada com as devidas colunas.

Então vamos la.

bash-3.1$ sqlldr lana/lana control=loader.ctl

SQL*Loader: Release 11.2.0.2.0 - Production on Mon Oct 31 14:06:28 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Commit point reached - logical record count 64
Commit point reached - logical record count 128
Commit point reached - logical record count 192
Commit point reached - logical record count 256
Commit point reached - logical record count 320
Commit point reached - logical record count 384
Commit point reached - logical record count 448
Commit point reached - logical record count 501
bash-3.1$

O programa sqlldr faz a chamada do sqlloader.
chamando este programa colocamos usuário e senha e chamamos o arquivo de controle conforme acima.

bash-3.1$ sqlplus

SQL*Plus: Release 11.2.0.2.0 Production on Mon Oct 31 14:15:14 2011

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Enter user-name: lana/lana

Connected to:
Oracle Database 11g Release 11.2.0.2.0 - Production

SQL> select count(*) from sql_loader;

  COUNT(*)
----------
       500

SQL>

Observe que temos 500 registros importados na tabela recem criada.

Para pegar mais opções do sql loader basta digitar apenas sqlldr e enter.

%name SQL Loader

Autor: Leandro Lana

Trabalho com banco de dados Oracle desde 2006, já trabalhei com as plataformas 9i, 10G, 11G e 12C.

Trabalhando atualmente como consultor Oracle na MigraTI Soluções em TI como administrador de banco de dados Oracle, SQL-Server e DB2.

Contato: leandro.lana@migrati.com.br

Fone: (47) 9191-6052 / (47) 3328 0996

Certificações:

OCA 10G.

OCP 10G.

OCE Linux.

OCE RAC/Cluster.

MCP SQL-Server 2008.

MCITP SQL-Server 2008.

DB2 Fundamentals.