Boa tarde,
preciso criar uma procedure que gere um txt com uma linha gerada por uma query e depois enviar o txt por ftp.
alguém me ajuda?
Criar procedure - Gerar TXT e enviar por FTP
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 13 Out 2009 4:52 pm
- Localização: Sorocaba - SP
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
- dr_gori
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Pois é, existem varias formas. O mais fácil é mesmo usar o bom e velho UTL_FILE pra gerar o arquivo texto. Depois pra enviar num ftp, eu gosto da opção de rodar um SHELL que faça o serviço...
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 13 Out 2009 4:52 pm
- Localização: Sorocaba - SP
pessoal, eu fiz o seguinte código, mas não está dando certo...
tem algo de errado?
tem algo de errado?
create or replace procedure enviar_arquivo(site varchar2, porta varchar2, arquivo varchar2) is
v_conn UTL_TCP.CONNECTION;
v_file_handle UTL_FILE.FILE_TYPE;
BEGIN
BEGIN
v_conn := UTL_TCP.OPEN_CONNECTION(site,porta);
v_file_handle := UTL_FILE.FOPEN(v_conn, arquivo,'W');
for x in
(<meu select>
)
loop
UTL_FILE.PUT(v_file_handle,x.campo);
end loop;
END;
UTL_FILE.FCLOSE(v_file_handle);
UTL_TCP.CLOSE_CONNECTION(v_conn);
END;
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
qual erro que está gerando?
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 13 Out 2009 4:52 pm
- Localização: Sorocaba - SP
Erro na linha 7: PL/SQL: Statement ignored
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
http://www.psoug.org/reference/utl_file.html
tenho quase certeza que você está passando algum parametro errado..
pode estar sem o plic ( ' ) talvez
tenho quase certeza que você está passando algum parametro errado..
pode estar sem o plic ( ' ) talvez
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
CREATE DIRECTORY oraload AS 'c:\oraload\';
GRANT READ,WRITE ON DIRECTORY oraload TO UWCLASS;
CREATE OR REPLACE PROCEDURE rw_demo IS
InFile utl_file.file_type;
OutFile utl_file.file_type;
vNewLine VARCHAR2(4000);
i PLS_INTEGER;
j PLS_INTEGER := 0;
SeekFlag BOOLEAN := TRUE;
BEGIN
-- open a file to read
InFile := utl_file.fopen('ORALOAD', 'in.txt','r');
-- open a file to write
OutFile := utl_file.fopen('ORALOAD', 'out.txt', 'w');
-- if the file to read was successfully opened
IF utl_file.is_open(InFile) THEN
-- loop through each line in the file
LOOP
BEGIN
utl_file.get_line(InFile, vNewLine);
i := utl_file.fgetpos(InFile);
dbms_output.put_line(TO_CHAR(i));
utl_file.put_line(OutFile, vNewLine, FALSE);
utl_file.fflush(OutFile);
IF SeekFlag = TRUE THEN
utl_file.fseek(InFile, NULL, -30);
SeekFlag := FALSE;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
END LOOP;
COMMIT;
END IF;
utl_file.fclose(InFile);
utl_file.fclose(OutFile);
EXCEPTION
WHEN others THEN
RAISE_APPLICATION_ERROR (-20099, 'Unknown UTL_FILE Error');
END rw_demo;
/
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 13 Out 2009 4:52 pm
- Localização: Sorocaba - SP
Agora estou tentando salvar o txt em meu servidor mesmo, porém esse meu código abaixo me retorna o erro: ORA-29280: caminho de diretório inválido.
estou utilizando o SO red hat, a pasta existe e está com permissão 777.
estou utilizando o SO red hat, a pasta existe e está com permissão 777.
create or replace procedure enviar_arquivo_equifax(nomearquivo varchar2) is
v_file_handle UTL_FILE.FILE_TYPE;
BEGIN
BEGIN
v_file_handle := UTL_FILE.FOPEN('/oracle/pasta/',arquivo,'W');
for x in
(<meu select>)
loop
UTL_FILE.PUT(v_file_handle,x.campo);
end loop;
END;
UTL_FILE.FCLOSE(v_file_handle);
END;
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
navega ate o diretorio do arquivo e quando chegar da um pwd, dai você copia o path e cola na sua proc..
o erro e claro ne o diretoro ta errado
o erro e claro ne o diretoro ta errado
- dr_gori
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
O parametro do banco UTL_FILE_DIR tem que ter sido setado.
http://glufke.net/oracle/viewtopic.php?t=1783
Sem isso, o oracle não permite você criar arquivos em qualquer lugar do servidor. (questão de segurança). Verifique isso!
http://glufke.net/oracle/viewtopic.php?t=1783
Sem isso, o oracle não permite você criar arquivos em qualquer lugar do servidor. (questão de segurança). Verifique isso!
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Ter, 13 Out 2009 4:52 pm
- Localização: Sorocaba - SP
Era isso mesmo..
setei o parametro e funcionou agora.. \o/
meu código ficou assim no fim:
setei o parametro e funcionou agora.. \o/
meu código ficou assim no fim:
create or replace procedure enviar_arquivo_equifax(caminho varchar2,arquivo varchar2) is
v_file_handle UTL_FILE.FILE_TYPE;
BEGIN
BEGIN
v_file_handle := UTL_FILE.FOPEN(caminho,arquivo,'W');
for x in
(<meu select>)
loop
UTL_FILE.PUT_LINE(v_file_handle,x.campo,FALSE);
utl_file.fflush(v_file_handle);
end loop;
END;
UTL_FILE.FCLOSE(v_file_handle);
END;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 18 visitantes