2011-10-24 39 views
1

这是一个脚本产生一个嵌套表的数据集:甲骨文嵌套数据类型作为平面文件

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' 

我可以用文本编辑器实现它,替换或regexing不受欢迎的数据(在记事本+ +的帮助下),但有可能得到相同的结果,而不用手动替换“DBUSER.NT_DESCRIPTION(”和“)”由空字符串?

回答

0

如果您有义务需要使用collect,您可以按照此link中显示的功能进行操作。

如果没有,你可以使用wm_concat

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