[oracle_br] Re: Retornar nome dos arquivos de um diretório Windows
Bem, eu não tenho aqui mais comigo pra testar nem o 9ir2, quanto mais o quase pré-histórico 9i original que vc diz que está usando, mas se vc quer fazer uma chamada ao SO de dentro do database (no caso fazendo um DIR pra saber lista de arqs, mas fosse qual fosse o comando), imho a maneira mais fácil seria usar Java, isso é ** Óbvio ** Desde Que vc tenha Java instalado nesse database E seja autorizado a usá-lo... http://asktom.oracle.com/pls/apex/f?p=100:11:0P11_QUESTION_ID:439619916584 tem um exemplo feito no 8i, então Creio que deve rodar também no 9i, tenta lá, em caso de erros manda Exatamente as telas com os comandos que vc usou no sqlplus , Bem Como que se pode palpitar mais Caso vc não tenha Java e/ou Autorização para o usar, uma segunda possibilidade, MUITO mais trabalhosa mas que deve funcionar, é vc escrever um daemon, ie, um programinha que fica rodando em background no SO e constantemente aguarda receber um comando a executar (seja via pipe, seja via arquivo-texto), aí de dentro do banco vc cria o arquivo-texto ou envia o pipe que o daemon espera : http://asktom.oracle.com/pls/apex/f?p=100:11:0P11_QUESTION_ID:16212348050 tem um exemplo em shell script (C-shell no caso, mas facilmente pode ser adaptado para outros), e googlando vc acha exemplos feitos em pro*C, perl, C#, .NET e outras tools/linguagens externas ao database, veja lá... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Sergio sergiofp413@... escreveu Bom dia! Estou utilizando o Oracle 9.0.1.1.1 Tenho uma procedure que necessita checar sequenciação e processar vários arquivos texto de um determinado diretório Windows. O processamento dos arquivos texto com UTL_FILE não tenho problemas, pois uso com frequência, mas sempre com um arquivo. Pesquisei as alternativas abaixo, mas todas me levaram a um beco sem saída: 1-Utilização de rotina Java Mesmo seguindo todos os detalhes de criação, grants e etc sempre apresenta erro. 2-DBMS.BACKUP_RESTORE_FILES.SEARCHFILES o SEARCHFILES não esta disponível na versão 9.0.1.1.1 Alguém tem uma procedure de exemplo que funcione na minha versão? Abraços Sérgio [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Retornar nome dos arquivos de um diretório Windows
Ah, e claro : eu não citei, mas SEMPRE há a possibilidade low-tech de vc iniciar a carga/manipulação dos arquivos via shell script (script .BAT no caso do Windows), que resida no servidor de database junto com os arquivos a manipular, que faça um DIR arquivosaida.lst e aí via logo depois esse mesmo .BAT aciona um script sql*plus que chama uma procedure PL/SQL que via UTL_FILE mesmo lê o arquivosaida.lst, SE a rotina pode ser executada de fora do database inicialmente, talvez pela tela da aplicação, ou por um Operador []s Chiappa --- Em oracle_br@yahoogrupos.com.br, J. Laurindo Chiappa jlchiappa@... escreveu Bem, eu não tenho aqui mais comigo pra testar nem o 9ir2, quanto mais o quase pré-histórico 9i original que vc diz que está usando, mas se vc quer fazer uma chamada ao SO de dentro do database (no caso fazendo um DIR pra saber lista de arqs, mas fosse qual fosse o comando), imho a maneira mais fácil seria usar Java, isso é ** Óbvio ** Desde Que vc tenha Java instalado nesse database E seja autorizado a usá-lo... http://asktom.oracle.com/pls/apex/f?p=100:11:0P11_QUESTION_ID:439619916584 tem um exemplo feito no 8i, então Creio que deve rodar também no 9i, tenta lá, em caso de erros manda Exatamente as telas com os comandos que vc usou no sqlplus , Bem Como que se pode palpitar mais Caso vc não tenha Java e/ou Autorização para o usar, uma segunda possibilidade, MUITO mais trabalhosa mas que deve funcionar, é vc escrever um daemon, ie, um programinha que fica rodando em background no SO e constantemente aguarda receber um comando a executar (seja via pipe, seja via arquivo-texto), aí de dentro do banco vc cria o arquivo-texto ou envia o pipe que o daemon espera : http://asktom.oracle.com/pls/apex/f?p=100:11:0P11_QUESTION_ID:16212348050 tem um exemplo em shell script (C-shell no caso, mas facilmente pode ser adaptado para outros), e googlando vc acha exemplos feitos em pro*C, perl, C#, .NET e outras tools/linguagens externas ao database, veja lá... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Sergio sergiofp413@ escreveu Bom dia! Estou utilizando o Oracle 9.0.1.1.1 Tenho uma procedure que necessita checar sequenciação e processar vários arquivos texto de um determinado diretório Windows. O processamento dos arquivos texto com UTL_FILE não tenho problemas, pois uso com frequência, mas sempre com um arquivo. Pesquisei as alternativas abaixo, mas todas me levaram a um beco sem saída: 1-Utilização de rotina Java Mesmo seguindo todos os detalhes de criação, grants e etc sempre apresenta erro. 2-DBMS.BACKUP_RESTORE_FILES.SEARCHFILES o SEARCHFILES não esta disponível na versão 9.0.1.1.1 Alguém tem uma procedure de exemplo que funcione na minha versão? Abraços Sérgio [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Retornar nome dos arquivos de um diretório Windows
Sergio, Estava lendo a resposta 109582 do Chiappa e fiquei pensando, talvez vc possa testar uma variação que não usa JAVA e faz um mix das formas externas de disparo. -No Windows, faça pelo Agendador de Tarefas, uma execução a cada 1h (ou 30 minutos) de um arquivo verifica.bat que contenha: cd /pasta dir *.txt /b listarq.dat -No Oracle, crie uma tabela externa, conforme exemplo em http://www.oracle-developer.net/display.php?id=204 abrindo como table, o arquivo listarq.dat criado pelo .bat acima. -No Oracle, crie outra tabela para sinalizar a tabela processada, onde a sua procedure deve atualizar esta tabela após o processamento de cada arquivo, contendo: nomearquivo varchar2(20); dataprocessamento date; linhasprocessadas number; ...demais informações -Desta forma, mesmo que sejam removidos os arquivos TXT do diretório, vc terá registrado em tabela, qual arquivo já foi processado. -Liste para processar somente aqueles que sobrarem de um MINUS entre as duas tabelas, carregando um cursor com o resultado. No loop, processe o arquivo com o utl_file, salve na tabela de arquivos processados. -Vc pode até programar um JOB para rodar a cada 15minutos, que chame a sua procedure. Basta que vc prepare a procedure para testar o resultado do cursor: se %FOUND executa, senão EXIT. Ederson Elias DBA Oracle http://br.linkedin.com/pub/ederson-elias/24/8b/8b0 --- Em oracle_br@yahoogrupos.com.br, Sergio sergiofp413@... escreveu Bom dia! Estou utilizando o Oracle 9.0.1.1.1 Tenho uma procedure que necessita checar sequenciação e processar vários arquivos texto de um determinado diretório Windows. O processamento dos arquivos texto com UTL_FILE não tenho problemas, pois uso com frequência, mas sempre com um arquivo. Pesquisei as alternativas abaixo, mas todas me levaram a um beco sem saída: 1-Utilização de rotina Java Mesmo seguindo todos os detalhes de criação, grants e etc sempre apresenta erro. 2-DBMS.BACKUP_RESTORE_FILES.SEARCHFILES o SEARCHFILES não esta disponível na versão 9.0.1.1.1 Alguém tem uma procedure de exemplo que funcione na minha versão? Abraços Sérgio [As partes desta mensagem que não continham texto foram removidas]