Předpokládám, že problém je v tom, jak složitá je vaše „složitá struktura“?
Programovací IDE, jako je Oracle SQL Developer nebo Quest TOAD, mají průvodce pro export datové tabulky do souborů CSV.
Pokud chcete spojit data z více tabulek, můžete použít pohled nebo dokonce napsat příkaz SQL
select e.ename||','||d.dname
from emp e
join dept d on ( e.deptno = d.deptno )
/
(Pamatujte si, že sloupce mohou často obsahovat data, která obsahují čárky, takže možná budete chtít použít jako oddělovač neobvyklejší znak – nebo sadu znaků.)
Dalším rychlým způsobem, jak něco udělat, je použít funkci hlášení HTML SQL*Plus. Mnoho tabulkových procesorů dokáže importovat dobře strukturované HTML a XML bez útržku. Zjistěte více.
Pokud chcete zploštit hierarchickou strukturu nebo něco ještě spletitějšího, budete pravděpodobně muset přejít na PL/SQL. Ruční přístup by používal variantu výše uvedeného příkazu přizpůsobenou použití UTL_FILE:
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;
Pokud chcete exportovat konkrétně do Excelu (tj. soubor .XLS), budete muset jít nad rámec vestavěných funkcí Oracle. Obvyklým řešením pro export přímo z PL/SQL do Excelu je obal OWA_SYLK od Toma Kytea pro SYLK api. Zjistěte více.
To funguje s jednotlivými pracovními listy. Pokud chcete exportovat do více listů, existuje několik alternativních řešení.
Sanjeev Sapre má svůj balíček get_xl_xml. Jak název napovídá, k provedení transformace používá XML. Zjistit více.
Jason Bennett napsal objekt PL/SQL, který generuje dokument Excel XML. Zjistěte více.