我的问题是我将 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 而不是这种方式的建议,因为数据泵仅用于创建二进制文件,但它显然不是二进制文件,而是普通文本文件。有什么办法可以格式化吗?