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.
Autor: Leandro Lana
Trabalho com banco de dados Oracle desde 2006, já trabalhei com as plataformas 9i, 10G, 11G, 12C, 18C, 19C e 21(ainda em testes).
Trabalhando atualmente como consultor Oracle na MigraTI Soluções em TI como administrador de banco de dados Oracle, SQL-Server, MySQL e Postgresql.
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.