Ik veronderstel dat het probleem is, hoe complex is uw "complexe structuur"?
Programmeer-IDE's zoals Oracle SQL Developer of Quest TOAD hebben wizards om gegevenstabel naar CSV-bestanden te exporteren.
Als u gegevens uit meerdere tabellen wilt samenvoegen, kunt u een weergave gebruiken of zelfs een SQL-statement schrijven
select e.ename||','||d.dname
from emp e
join dept d on ( e.deptno = d.deptno )
/
(Houd er rekening mee dat kolommen vaak gegevens kunnen bevatten die komma's bevatten, dus misschien wilt u een ongebruikelijker teken - of een reeks tekens - als scheidingsteken gebruiken.)
Een andere snelle manier om iets te doen is om de HTML-rapportagefunctie van SQL*Plus te gebruiken. Veel spreadsheettools kunnen goed gestructureerde HTML en XML importeren zonder een hapering. Lees meer.
Als u een hiërarchische structuur of iets ingewikkelder wilt afvlakken, moet u waarschijnlijk overstappen op PL/SQL. Een met de hand gerolde benadering zou een variant van de bovenstaande verklaring gebruiken die is aangepast om UTL_FILE te gebruiken:
declare
csv_fh utl_file.filetype;
begin
csv_fh := utl_file.fopen('C:\temp', 'data_export.csv', 'W');
for r in ( select e.ename, d.dname
from emp e
join dept d on ( e.deptno = d.deptno )
) loop
utl_file.put_line(csv_fh, r.ename||'|'||r.dname;
end loop;
utl_file.fclose(csv_fh);
end;
Als u specifiek naar Excel wilt exporteren (d.w.z. een .XLS-bestand), moet u verder gaan dan de ingebouwde Oracle-systemen. De gebruikelijke oplossing voor het rechtstreeks exporteren van PL/SQL naar Excel is Tom Kyte's OWA_SYLK-wrapper voor de SYLK-api. Lees meer.
Dit werkt met losse werkbladen. Als u naar meerdere werkbladen wilt exporteren, zijn er een aantal alternatieve oplossingen.
Sanjeev Sapre heeft zijn pakket get_xl_xml. Zoals de naam al doet vermoeden, gebruikt het XML om de transformatie uit te voeren. Meer te weten komen.
Jason Bennett heeft een PL/SQL-object geschreven dat een Excel XML-document genereert. Lees meer.