Ler planilha Excel

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
sydfilho
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Seg, 14 Mar 2005 3:36 pm
Localização: porto alegre

Gostaria de saber como fazer a leitura de uma planilha excel no PL/SQL
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Depende de várias coisas:

Você tem que fazer essa carga apenas uma vez?
a) Pode usar o SLQ*Loader
b) Pode fazer uma rotina que lê o arquivo CSV (delimitado) -- Pelo TEXT_IO do Forms ou o UTL_FILE (no banco)
c) Pode criar os INSERTS a mão no Excel (tipo, monta uma fórmula com o

Selecionar tudo

 =CONCATENAR("INSERT INTO tabela VALUES (" ; A1 ; A2 ; ");" )
d) Pode-se usar algum programa tipo PL/SQL Developer, que faz isso muito bem!
e) Se for banco 9i em diante, pode usar external tables, etc...

A carga deve ser feito sempre (dentro de um programa)
a) Usa-se basicamente o SQL*Loader
b) Usa-se uma rotina de carga UTL_FILE, etc...

Qual é a sua situação aí???
São muitas linhas? muitos campos? Muita frequencia?

é isso aí...
Editado pela última vez por dr_gori em Qui, 18 Ago 2005 9:04 pm, em um total de 1 vez.
sydfilho
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Seg, 14 Mar 2005 3:36 pm
Localização: porto alegre

Valeu, vou usar o utl_file mesmo. Obrigado pela ajuda
dr_gori escreveu:Depende de várias coisas:

Você tem que fazer essa carga apenas uma vez?
a) Pode usar o SLQ*Loader
b) Pode fazer uma rotina que lê o arquivo CSV (delimitado) -- Pelo TEXT_IO do Forms ou o UTL_FILE (no banco)
c) Pode criar os INSERTS a mão no Excel (tipo, monta uma fórmula com o

Selecionar tudo

=CONCATENAR("INSERT INTO tabela VALUES (" ; A1 ; A2 ; ");" )
d) Pode-se usar algum programa tipo PL/SQL Developer, que faz isso muito bem!


A carga deve ser feito sempre (dentro de um programa)
a) Usa-se basicamente o SQL*Loader
b) Usa-se uma rotina de carga UTL_FILE, etc...

Qual é a sua situação aí???
São muitas linhas? muitos campos? Muita frequencia?

é isso aí...
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

eu não gostaria de utilizar o sql*Loader.......

teria como eu desenvolver alguma procedure que faça isso?!

Eu tenho que passar linha a linha dentro do excel (onde cada coluna de cada linha seria uma coluna da tabela) e ir fazendo inserts dentro de uma tabela do Oracle.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

É como eu disse... DEPENDE!!!

Quantas vezes você terá que fazer essa carga. Apenas 1 vez? Ou tem que ser uma rotina automática que sempre será executada?

Se for uma rotina automática do banco, tem 2 formas básicas:
1. Se for no FORMS, pode usar TEXT_IO
2. Se o arquivo texto está DENTRO do servidor ORACLE, daí é com UTL_FILE

Explique melhor o que você quer fazer que alguém aí dá uma ajuda!
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

é um arquivo que será executado manualmente.... 1 ou 2 vezes apenas.

o arquivo vai ser lido na minha máquina mesmo.... não no servidor.

Caso você tenhaalgum exemplo, poderia me passar?!
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

nesse caso, eu acho que a forma mais fácil é montar um INSERT.

tipo, digamos que a coluna 1 é o CÓDIGO, e a coluna 2 é o NOME_DO_CLIENTE.

Daí você vai na coluna 3 e poe a seguinte formula no excel:

Selecionar tudo

= concatenar ("INSERT INTO MINHA_TABELA VALUES(" ; A1 ; ", '" ; A2 ; "');" )
Essa formula aí do excel, vai gerar uma linha assim na coluna 3

Selecionar tudo

INSERT INTO MINHA_TABELA VALUES( 34, 'BLABLABLA');
Ou seja, copie a formula pra todos e você tem os INSERTS que precisa...
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

ok... entendi...

agora eu utilizo o utl_file... mas como eu faria para criar um loop para ir lendo todas as linhas e executando todos os comando dos inserts do meu arquivo xls?!
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

você tem algum exemplo ai?!
Avatar do usuário
TBou
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 136
Registrado em: Qui, 05 Ago 2004 9:33 am
Localização: Campo Grande - MS
Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas

você pode adicionar um / no final de todas as linhas...
copiar todas as Células do Excel e jogar no Worksheet ele irá executar linhas a linha.
Avatar do usuário
TBou
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 136
Registrado em: Qui, 05 Ago 2004 9:33 am
Localização: Campo Grande - MS
Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas

Ex.

Selecionar tudo

INSERT INTO TESTE (1,'TESTE 1')/
INSERT INTO TESTE (2,'TESTE 2')/
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

Obrigado pela dica amigo, mas eu gostaria de fazer isso via pl/sql mesmo!!
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Procura aqui no forum por UTL_FILE
Eu sei que tem um exemplo de leitura. O que muda, basicamente, é que você tem que colocar GET_LINE em vez de PUT_LINE...

E quando abre o arquivo é com 'R' e não 'W'.
:-o
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

ok... eu achei já alguma coisa......

mas de qualquer forma, obrigado.
deniscezar
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Sex, 27 Ago 2010 12:16 pm
Localização: são paulo - sp

alguém sabe como poderia ler um arquivo xls através do pl sql ? obrigado
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Em qual parte do que o pessoal postou acima você encontrou problemas? O que você tentou já? Alguma mensagem de erro?
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes