【发布时间】:2020-12-04 00:50:56
【问题描述】:
我创建了一个过程,它使用一个视图来打印(到 CSV),该视图的所有记录。 任何用户都可以删除并重新创建该视图,因此其列结构可以更改
有没有办法将 VIEW 的所有记录提取到集合中 并在不知道所有列名/不依赖列的情况下打印该集合的元素。
如果有什么办法,那么当我们的表也有几百列的时候也可以使用它。 这个问题已经问过我很多次了,但我找不到答案,现在每次我需要将不同的表转存到 csv 文件时,我都必须编辑我的程序
我通常用于假脱机的代码采用所有列名:-
cursor c1 is
select *
from table1 nvr;
TYPE alldata_typ IS table of c1%rowtype;
v_dta alldata_typ;
BEGIN
v_fname := 'swe_WRF_.csv';
v_file := UTL_FILE.FOPEN('CDMP_OUT_DIR', v_fname, 'W');
v_header := 'FSA_CODE,FSA_NAME,PROVINCE,MAKE,SERIES,REPORT_YEAR,VEHICLE_COUNT';
UTL_FILE.PUT_LINE(v_file, v_header);
OPEN c1;
loop
FETCH c1 BULK COLLECT
INTO v_dta LIMIT v_fetch_limit;
exit when v_dta.count=0 ;
FOR i IN 1..v_dta.count
LOOP
UTL_FILE.PUT_LINE(v_file,
v_dta(i).fsa_code ||', '||
v_dta(i).fsa_name ||', '||
v_dta(i).province ||', '||
v_dta(i).make ||', '||
v_dta(i).series ||', '||
v_dta(i).report_year ||','||
v_dta(i).vehicle_count
);
v_count := v_count + 1;
end loop;
;
【问题讨论】:
-
检查一下,asktom.oracle.com/pls/apex/asktom.search?tag=export-to-csv。来自我们的 AskTom 的更好 :) 。事实上,我们仍然可以修改您的程序,但我建议您采用 AskTom 的方式。干杯!!
-
@apc CSV 工具在百万条记录的情况下需要大量时间,因此不是一个可行的解决方案。
标签: oracle plsql collections nested-table utl-file