Bom dia a todos,
gostaria de uma ajuda, stou construindo uma query para a geração de um arquivo em txt de uma tabela de produtos em nosso banco de dados. Assim gostaria de uma ajuda na geração deste arquivo altomático via SqlPlus ou pelo Navigator, salvando em arquivo txt, sem o cabeçalho.
já tentei utilizar o spool c:\produtos.txt, só que o arquivo pe gerado com o cabeçalho;
o arquivo está vindo cortando, utilizei o set linesize = 3000 e mesmo assim corta;
em um exemplo básico pelo sqlplus estou fazendo assim:
set echo off
set verify off
set feedback off
ttitle off
set heading on
set linesize 3000
spool c:\produtos.txt
select codprod||';'||descricao from pcprodut;
spool off;
Desde já, agradeço e aguardo.
Como gerar um arquivo txt utilizando o agendador de tarefas
-
- Rank: Estagiário Júnior
- Mensagens: 1
- Registrado em: Qui, 19 Abr 2012 9:29 am
-
- Rank: Analista Pleno
- Mensagens: 110
- Registrado em: Ter, 24 Mai 2005 9:16 pm
- Localização: Dongguan - Guangdong - China
Deus criou os loucos para confundir os sábios
Eu utilizaria o comando UTL_FILE.
Segue uma procedure que irá gerar um arquivo TXT a partir de um cursor. Mas você deve criar um diretorio antes
Para criar o diretorio:
Grants necessarios para o diretório: O método que estou passando irá dar grant pra todos os usuário, você pode passar somente para o usuario que irá gerar o arquivo
Package que gera arquivo TXT
Chamando a procedure
Segue uma procedure que irá gerar um arquivo TXT a partir de um cursor. Mas você deve criar um diretorio antes
Para criar o diretorio:
create or replace directory GERA_ARQUIVO
as 'C:\TESTE';
grant read, write on directory GERA_ARQUIVO to PUBLIC
Package que gera arquivo TXT
CREATE OR REPLACE Package PKG_TXT AS
---------------
-- Gera Txts --
---------------
Procedure PRC_GERA_TXT
( P_Nome_Local In Varchar2
, P_Nome_Arq In Varchar2
);
End PKG_TXT ;
CREATE OR REPLACE Package Body PKG_TXT AS
Procedure PRC_GERA_TXT
( P_Nome_Local In Varchar2
, P_Nome_Arq In Varchar2
)
Is
------------
-- Cursor --
------------
Cursor cCursor is
Select cod_fornecedor Coluna01
, nome_fornecedor Coluna02
From fornecedor;
---------------
-- Variaveis --
---------------
vLinha Varchar2(2000);
uArquivo Utl_File.File_Type;
nCommit Number := 0;
Begin
--------------------------
-- Define no do Arquivo --
--------------------------
Begin
-----------------------
--- Abre arquivo txt --
-----------------------
uArquivo := Utl_File.FOpen(P_Nome_Local , P_Nome_Arq , 'w');
--uArquivo := Utl_File.FOpen('D:\' , P_Nome_Arq , 'w');
--------------------------------------
-- Abre Cursor de Uma Tabela Oracle --
--------------------------------------
For rCursor In cCursor Loop
Begin
vLinha := rCursor.Coluna01
|| To_Char(rCursor.Coluna02);
----------------------------
-- Grava linha no Arquivo --
----------------------------
Utl_File.Put_Line(uArquivo , vLinha);
Utl_File.FfLush(uArquivo);
Exception
-- OS error occured during write operation
When Utl_File.Write_Error Then
Raise_Application_Error(-20204, 'PROBLEMA NA GRAVACAO DO '||
'ARQUIVO');
-- file handle is invalid
When Utl_File.Invalid_FileHandle Then
Raise_Application_Error(-20205, 'Invalid_FileHandle'
|| SqlErrm);
End;
nCommit := nCommit + 1;
If nCommit > 1000 Then
Commit;
nCommit := 0;
End If;
End Loop;
Exception
-- file location or name was invalid
When Utl_File.Invalid_Path Then
Raise_Application_Error(-20210, 'PROBLEMA NA ABERTURA ARQUIVO, '||
'INVALID PATH');
-- the open_mode string was invalid
When Utl_File.Invalid_Mode Then
Raise_Application_Error(-20211, 'PROBLEMA NA ABERTURA ARQUIVO, '||
'INVALID MODE');
-- file could not be opened as requested
When Utl_File.Invalid_Operation Then
Raise_Application_Error(-20212, 'Invalid_Operation '|| SqlErrm);
-- specified max_linesize is too large or too small
When Utl_File.Invalid_Maxlinesize Then
Raise_Application_Error(-20213, 'Invalid_Maxlinesize '
|| SqlErrm);
End;
-------------------
-- Fecha Arquivo --
-------------------
Utl_File.FClose(uArquivo);
Commit;
End PRC_GERA_TXT;
End PKG_TXT;
Chamando a procedure
begin
PKG_TXT.PRC_GERA_TXT ( 'GERA_ARQUIVO', 'teste.txt');
end;
-
- 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
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
Fiz dessa forma abaixo aqui, utilizando o SQL*Plus:
E acabou funcionando legal.
Veja se consegue ai e, qualquer coisa, conte com a gente.
Fiz dessa forma abaixo aqui, utilizando o SQL*Plus:
set verify off;
set feedback off;
set echo off;
set heading off;
set linesize 20000;
spool c:\teste.txt;
select * from <sua_tabela>;
spool off;
Veja se consegue ai e, qualquer coisa, conte com a gente.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes