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
  

Mensagemem Ter, 19 Abr 2005 5:30 pm

Gostaria de saber como fazer a leitura de uma planilha excel no PL/SQL
sydfilho
Localização: porto alegre

Mensagemem Qua, 20 Abr 2005 9:20 am

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 =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.
dr_gori
Localização: Portland, OR USA

Thomas F. G

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

Mensagemem Qua, 20 Abr 2005 1:11 pm

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 =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í...
sydfilho
Localização: porto alegre

Mensagemem Sex, 19 Ago 2005 9:39 am

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.
LC_JK
Localização: São Paulo

Mensagemem Sex, 19 Ago 2005 11:24 am

É 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!
dr_gori
Localização: Portland, OR USA

Thomas F. G

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

Mensagemem Sex, 19 Ago 2005 2:13 pm

é 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?!
LC_JK
Localização: São Paulo

Mensagemem Sex, 19 Ago 2005 2:22 pm

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:
Código: Selecionar todos
= concatenar ("INSERT INTO MINHA_TABELA VALUES(" ; A1 ; ", '" ; A2 ; "');" )


Essa formula aí do excel, vai gerar uma linha assim na coluna 3
Código: Selecionar todos
INSERT INTO MINHA_TABELA VALUES( 34, 'BLABLABLA');


Ou seja, copie a formula pra todos e você tem os INSERTS que precisa...
dr_gori
Localização: Portland, OR USA

Thomas F. G

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

Mensagemem Sex, 19 Ago 2005 2:25 pm

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
Localização: São Paulo

Mensagemem Sex, 19 Ago 2005 2:37 pm

você tem algum exemplo ai?!
LC_JK
Localização: São Paulo

Mensagemem Sex, 19 Ago 2005 2:40 pm

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.
TBou
Localização: Campo Grande - MS

Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas

Mensagemem Sex, 19 Ago 2005 2:42 pm

Ex.
Código: Selecionar todos
INSERT INTO TESTE (1,'TESTE 1')/
INSERT INTO TESTE (2,'TESTE 2')/
TBou
Localização: Campo Grande - MS

Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas

Mensagemem Sex, 19 Ago 2005 3:41 pm

Obrigado pela dica amigo, mas eu gostaria de fazer isso via pl/sql mesmo!!
LC_JK
Localização: São Paulo

Mensagemem Sex, 19 Ago 2005 4:08 pm

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
dr_gori
Localização: Portland, OR USA

Thomas F. G

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

Mensagemem Sex, 19 Ago 2005 5:47 pm

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

mas de qualquer forma, obrigado.
LC_JK
Localização: São Paulo

Mensagemem Qui, 09 Set 2010 1:59 pm

alguém sabe como poderia ler um arquivo xls através do pl sql ? obrigado
deniscezar
Localização: sao paulo - sp

Mensagemem Qui, 09 Set 2010 4:17 pm

Em qual parte do que o pessoal postou acima você encontrou problemas? O que você tentou já? Alguma mensagem de erro?
fsitja
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


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


      Voltar para PL/SQL

      Quem está online

      Usuários navegando neste fórum: Google [Bot] e 5 visitantes