Oracle将数据类型嵌套为平面文件

时间:2011-10-24 20:51:03

标签: oracle

这是一个用于生成嵌套表的数据集的脚本:

create table descriptions(
id number,
description varchar2(10)
);

insert into descriptions values(1,'abfd');
insert into descriptions values(1,'frte');
insert into descriptions values(2,'eewd');
insert into descriptions values(2,'outr');

create or replace type nt_description as table of varchar2(10);
-- the following query produces a dataset to save as a flat file
select id, cast(collect(description) as nt_description) as nested_column from descriptions group by id;

我想要实现的是生成平面输出txt文件。但是,使用SQL Developer GUI时,嵌套列输出为平面文件的结果是意外的。将数据导出为文本时,输出文件的格式如下:

"ID"    "NESTED_COLUMN"
1   DBUSER.NT_DESCRIPTION('abfd','frte')
2   DBUSER.NT_DESCRIPTION('eewd','outr')

我想获得以下格式而不是前面的格式:

"ID"    "NESTED_COLUMN"
1   'abfd','frte'
2   'eewd','outr'

我可以通过使用文本编辑器替换或重新编写不需要的数据(在记事本++的帮助下)来实现它,但是可以获得相同的结果而无需用void string手动替换“DBUSER.NT_DESCRIPTION(”和“)”吗?

1 个答案:

答案 0 :(得分:0)

如果你必须使用collect,你可以按照link所示创建一个函数。

如果没有,您可以使用wm_concat

select d.id, 
       wm_concat(d.description)
       nested_column 
from 
       descriptions d
group by id;