Exportar dados para arquivo CVS sem criar diretório

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
GPet
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Sex, 03 Ago 2012 3:38 pm

Bom dia a todos.
Estou com uma dúvida. Criei uma Procedure que me retorna várias linhas com várias concatenações de dados, porém preciso exporta-las para um arquivo CSV. Porém preciso de algo no PL/SQL que me exporte esse arquivo sem precisar criar diretórios, sendo assim o UTL_FILE está descartado :(
Preciso que isso seja feito de modo automático, alguém pode me ajudar quanto a isso?

Obrigado
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, beleza?

E se você criasse um programa pra rodar no sql*plus, utilizando spool?
Algo do tipo:

Selecionar tudo

spool c:\teste.txt;
select 'a;b;c;d;e' from dual;
spool off;
Dessa forma você teria que ter apenas o client do Oracle e, já criaria teu arquivo com ponto-e-vírgula.

Qualquer coisa, manda pra gente.
GPet
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Sex, 03 Ago 2012 3:38 pm

E aí cara!
Obrigado pela resposta!

Então, eu fiz alguns testes com o Spool antes de perguntar, porém, não sei porque, não me retornou nada do meu select para a planilha que criei.

1- Eu consigo executar o Spool diretamente de uma procedure, sem abrir o command window (SQL*Plus)?
2 - Os campos da linha que quero escrever no arquivo são concatenados, com um ponto e vírgula entre eles. Fiz alguns testes com outro select que fiz concatenando outros dados com ponto e vírgula, porém não vieram as informações que eu pretendia, na verdade não veio nada rs :(

Segue abaixo o select que busca todos os dados e os concatena:

Selecionar tudo

Select UNIDADE || '--' || NOMEALUNO || ';' || RA || ';' || RG || ';' ||
           DIGITORG || ';' || Estadoemissor || ';' ||
           to_char(EMISSAORG, 'DD/MM/YYYY') || ';' || Sexo || ';' ||
           to_char(NASCIMENTO, 'DD/MM/YYYY') || ';' || NUMERO || ';' ||
           NUMEROAPARTAMENTO || ';' || BLOCO || ';' || COMPLEMENTO || ';' || CEP || ';' ||
           TELEFONE || ';' || CELULAR || ';' || EMAIL || ';' || responsavel || ';' ||
           CodigoPais || ';' || CodigoCurso|| ';' || CodigoTurma || ';'
      from web_acesso
     where unidade =web_acesso.arquivocriado is null; 

No Oracle eu tenho a resposta pretendida, porém no SQLPlus.. :(
Obrigado!
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, blzinha?

Cara, não sei se interpretei corretamente, mas, está ai abaixo:

1) Pelo que eu entendi, você gostaria de fazer algo do tipo:

Selecionar tudo

CREATE OR REPLACE PROCEDURE PRC_SPOOL
IS
BEGIN
  SPOOL C:\Dir\Arquivo.txt
END PRC_PROCEDURE_SPOOL;
Se for isso, deixo o tópico em aberto, pois creio que não tenha como. O que dá pra fazer é chamar a procedure via SQL*Plus, em um arquivo .BAT (Windows) ou .SH (Linux/Unix).

2) Você só tem uma instância Oracle nessa máquina? Na verdade era pra trazer retorno em ambos.
Verique se o SPOOL está habilitado:

Selecionar tudo

set serveroutput on 
Talvez possa ser isso.

Qualquer dúvida, manda pra gente de novo, ok?
GPet
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Sex, 03 Ago 2012 3:38 pm

E aí cara!
Deu certo do jeito que você me falou! Muito obrigado!
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Valeu brother, precisando, conte com a gente.
Responder
  • Informação
  • Quem está online

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