0

我的问题是我将 Oracle db 中的表卸载到具有以下代码的文本文件中:

PACKAGE BODY:
procedure d_datapump (tab_name in varchar2,
                      def_dir  in varchar2 default 'MY_DIR',
                      xt_location in varchar2)          
                      is


  d_query varchar2(10000);                                        
  d_result varchar2(10000);
  begin       
    d_query :=  ' create table ' || tab_name || '_xt
                                             organization external
                                             (
                                               type oracle_datapump
                                               default directory ' || def_dir || ' 
                                               location ( ' || chr(39) || xt_location || chr(39) || ' )
                                             )
                                             as
                                             select * from ' || tab_name;


    d_result := '';
    dbms_output.put_line (d_query);
    execute immediate  d_query;  
    dbms_output.put_line (d_result); 
  end d_datapump;

此后调用:

begin
   david_ext_table.d_datapump(tab_name => 'D_TEST_TABLE',
                              xt_location => 'test_pac.txt');
end;

它奏效了,但我的 txt 中的结果是这样的:

"?xml...许多 xml 参数.../ROWSET"

"XXXXXYYYYYZZZZZ§§§§§00000< "XXXXXYYYYYZZZZZ§§§§§00000< "XXXXXYYYYYZZZZZ§§§§§§00000< "XXXXXYYYYZZZZZ§§§§§00000<

但我想看到这样的东西(没有 xml 块):

 col1 |  col2 |  col3 |  col4 | col5
-------------------------------------
XXXXX | YYYYY | ZZZZZ | §§§§§ | 00000
XXXXX | YYYYY | ZZZZZ | §§§§§ | 00000
XXXXX | YYYYY | ZZZZZ | §§§§§ | 00000

我花了几个小时浏览解决方案,唯一能找到大量建议使用假脱机和 UTL_FILE 而不是这种方式的建议,因为数据泵仅用于创建二进制文件,但它显然不是二进制文件,而是普通文本文件。有什么办法可以格式化吗?

4

0 回答 0