Abaixo um exemplo para gerar txt de qualquer tabela.


rem procedure to unload table data to a UNIX file using utl_file package
rem
rem biju thomas - 4/21/1999
rem 
rem parameters : tableowner, tablename, indexname
rem
create or replace procedure table_unload (ptname in varchar2, 
                                          ptowner in varchar2 default user,
                                          psindex in varchar2 default null) as

  CURSOR ccolname (maxcolid in number)  IS SELECT
         (DECODE(column_id, maxcolid, column_name || '||''|''',
                column_name|| '||''|''||' ) ) colstr
         FROM  all_tab_columns
         WHERE table_name     = upper(ptname)
         AND   owner = upper(ptowner)
         ORDER BY column_id;

  wmaxcolid  number (4);
  wcursor    integer;
  wignore    integer;
  wdatfile   varchar2 (34);
  wdatftype  utl_file.file_type;
  wfetchrows number;
  wsqlstmt   varchar2 (2000);
  wdata      varchar2 (2000);
  wreturn    INTEGER;


  wtabldrfile  VARCHAR2 (34);
  wtabldrftype utl_file.file_type;
  wheadstr     VARCHAR2 (1000);

  CURSOR cldrcol (owner in varchar2, tabname in varchar2) is SELECT
       (DECODE(rownum,1,'   ',' , ')||RPAD(column_name,33,' ') ||
       DECODE(data_type, 'VARCHAR2','CHAR NULLIF('|| column_name ||'=BLANKS)',
       'FLOAT',   'DECIMAL EXTERNAL NULLIF('||column_name||'=BLANKS)', 'NUMBER',
       DECODE(data_precision, 0, 'INTEGER EXTERNAL NULLIF ('||column_name
       ||'=BLANKS)', DECODE(data_scale,0, 'INTEGER EXTERNAL NULLIF
       ('||column_name ||'=BLANKS)', 'DECIMAL EXTERNAL NULLIF
       ('||column_name ||'=BLANKS)')),'DATE','DATE "YYYYMMDD:HH24MISS" NULLIF ('
       ||column_name ||'=BLANKS)',NULL)) colstr
       FROM dba_tab_columns
       WHERE TABLE_NAME = UPPER(tabname)
       AND   OWNER = UPPER(owner)
       ORDER BY COLUMN_ID;

BEGIN

  wdatfile := lower(ptname) || '1.dat';
  wdatftype := utl_file.fopen('D:\arquivos', wdatfile, 'w');

  dbms_session.set_nls('nls_date_format','''YYYYMMDD:HH24MISS''');

  SELECT MAX(column_id) INTO wmaxcolid
  FROM   dba_tab_columns
  WHERE  table_name = upper(ptname)
  AND    owner = upper(ptowner);

  wsqlstmt := 'SELECT /*+ INDEX (A '|| psindex ||' ) */ ';
  FOR rcolname IN ccolname (wmaxcolid) LOOP
    wsqlstmt := wsqlstmt || rcolname.colstr;
  END LOOP;

  wsqlstmt := wsqlstmt || ' valuestr FROM ' || ptowner || '.' || ptname ||' A';

  wcursor := dbms_sql.open_cursor;
  dbms_sql.parse (wcursor, wsqlstmt, dbms_sql.v7);
  DBMS_SQL.DEFINE_COLUMN (wcursor, 1, wdata, 2000);
  wreturn := DBMS_SQL.execute (wcursor);

  WHILE dbms_sql.fetch_rows (wcursor) > 0 LOOP

    dbms_sql.column_value (wcursor, 1, wdata);
    utl_file.put_line (wdatftype, wdata);

  END LOOP;

  dbms_sql.close_cursor (wcursor);

  -- DBMS_OUTPUT.PUT_LINE ('Data File ' || wdatfile || ' Created');

  SELECT
       ('LOAD DATA'||chr(10)
       ||'INFILE '''||lower(ptname)||'.dat'' '||chr(10)
       ||'INTO TABLE '||ptowner ||'.'|| ptname ||chr(10)
       ||'FIELDS TERMINATED BY ''|'' '||chr(10)
       ||'TRAILING NULLCOLS'||chr(10)
       ||'(') wheadstr
  INTO wheadstr
  FROM dual;

  wtabldrfile  := lower(ptname) || '.ctl';
  wtabldrftype := utl_file.fopen('D:\arquivos', wtabldrfile, 'w');

  utl_file.put_line(wtabldrftype, wheadstr);

  FOR rldrcol IN cldrcol (ptowner, ptname) LOOP
     utl_file.put_line(wtabldrftype, rldrcol.colstr);
  END LOOP;

  utl_file.put_line(wtabldrftype, ')');
  utl_file.fclose(wtabldrftype);

  -- DBMS_OUTPUT.PUT_LINE ('Control File ' || wtabldrfile || ' Created');

END;
/
--drop public synonym table_unload;
--create public synonym table_unload for b2t.table_unload;
l



Renan Medeiros
Gerência de Treinamento e Suporte
Unimix Tecnologia Ltda
0 xx 61 8145 7869
0 xx 61 3201 8888

  ----- Original Message ----- 
  From: Francis Mello - Confederação SICREDI 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Wednesday, March 15, 2006 11:12 AM
  Subject: Re: [oracle_br] Geracao de Arquivo txt



  Alguém possui um exemplo da utilização de UTL_FILE, por mais simples que 
seja???

  Obrigado!

  Francis Mello
    ----- Original Message ----- 
    From: Renan da Silveira Medeiros 
    To: oracle_br@yahoogrupos.com.br 
    Sent: Wednesday, March 15, 2006 10:55 AM
    Subject: Re: [oracle_br] Geracao de Arquivo txt


    Se vc tiver saco para formatar no sqlplus, ai vc faz o sql roda no sqlplus, 
antes definindo um arquivo spool.

    Renan Medeiros
    Gerência de Treinamento e Suporte
    Unimix Tecnologia Ltda
    0 xx 61 8145 7869
    0 xx 61 3201 8888

      ----- Original Message ----- 
      From: junior veiga 
      To: oracle_br@yahoogrupos.com.br 
      Sent: Wednesday, March 15, 2006 10:52 AM
      Subject: [oracle_br] Geracao de Arquivo txt


      Pessoal,

      Além do UTL_FILE, existe outra forma de gerar um
      arquivo TXT como saída de uma base de dados?

      Se existir, qual método seria mais significativo para
      a utilização?

      Servidor: Linux Susi 9
      Banco de dados: Oracle 10.2.0.1

      Obrigado,




                 
      _______________________________________________________
      Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora!
      http://br.acesso.yahoo.com


      
--------------------------------------------------------------------------------------------------------------------------
      Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
      Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
      
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

      Este Grupo recebe o apoio da SQL Magazine - 
www.devmedia.com.br/sqlmagazine 
      __________________________________________________________________



            Yahoo! Grupos, um serviço oferecido por: 
                  PUBLICIDADE
                   
          


    
------------------------------------------------------------------------------
      Links do Yahoo! Grupos

        a.. Para visitar o site do seu grupo na web, acesse:
        http://br.groups.yahoo.com/group/oracle_br/
         
        b.. Para sair deste grupo, envie um e-mail para:
        [EMAIL PROTECTED]
         
        c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do 
Serviço do Yahoo!. 



    [As partes desta mensagem que não continham texto foram removidas]



    
--------------------------------------------------------------------------------------------------------------------------
    Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
    Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
    
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

    Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
    __________________________________________________________________



          Yahoo! Grupos, um serviço oferecido por: 
                PUBLICIDADE
                 
        


  ------------------------------------------------------------------------------
    Links do Yahoo! Grupos

      a.. Para visitar o site do seu grupo na web, acesse:
      http://br.groups.yahoo.com/group/oracle_br/
       
      b.. Para sair deste grupo, envie um e-mail para:
      [EMAIL PROTECTED]
       
      c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do 
Serviço do Yahoo!. 



  As informacoes contidas neste e-mail e nos arquivos anexados podem ser 
informacoes confidenciais ou privilegiadas. Caso voce nao seja o destinatario 
correto, apague o conteudo desta mensagem e notifique o remetente imediatamente.

  [As partes desta mensagem que não continham texto foram removidas]



  
--------------------------------------------------------------------------------------------------------------------------
  Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
  Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
  
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

  Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
  __________________________________________________________________



        Yahoo! Grupos, um serviço oferecido por: 
              PUBLICIDADE
                
       


------------------------------------------------------------------------------
  Links do Yahoo! Grupos

    a.. Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/
      
    b.. Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]
      
    c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



[As partes desta mensagem que não continham texto foram removidas]



--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__________________________________________________________________
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a