sql >> Database teknologi >  >> RDS >> Oracle

Opret et Excel-regneark fra en Oracle-database

Jeg formoder, at problemet er, hvor kompleks er din "komplekse struktur"?

Programmerings-IDE'er såsom Oracle SQL Developer eller Quest TOAD har guider til at eksportere datatabel til CSV-filer.

Hvis du vil forbinde data fra flere tabeller, kan du bruge en visning eller endda skrive en SQL-sætning

select e.ename||','||d.dname
from   emp e
       join dept d on ( e.deptno = d.deptno )
/

(Husk på, at kolonner ofte kan indeholde data, der inkluderer kommaer, så du vil måske bruge et mere usædvanligt tegn - eller et sæt tegn - som din separator.)

En anden hurtig måde at gøre noget på er at bruge SQL*Plus's HTML-rapporteringsfunktion. Mange regnearksværktøjer kan importere velstruktureret HTML og XML uden et snuptag. Få mere at vide.

Hvis du ønsker at udjævne en hierarkisk struktur eller noget endnu mere indviklet, bliver du sandsynligvis nødt til at flytte ind i PL/SQL. En håndrullet tilgang ville bruge en variant af ovenstående sætning tilpasset til at bruge 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;

Hvis du ønsker at eksportere specifikt til Excel (dvs. en .XLS-fil), skal du gå videre end Oracles indbyggede funktioner. Den sædvanlige løsning til direkte eksport fra PL/SQL til Excel er Tom Kytes OWA_SYLK-indpakning til SYLK-api. Få mere at vide.

Dette fungerer med enkelte arbejdsark. Hvis du vil eksportere til flere regneark, er der et par alternative løsninger.

Sanjeev Sapre har sin get_xl_xml-pakke. Som navnet antyder, bruger den XML til at udføre transformationen. Find ud af mere.

Jason Bennett har skrevet et PL/SQL-objekt, som genererer et Excel XML-dokument. Få mere at vide.



  1. Django+Postgres:aktuelle transaktion afbrydes, kommandoer ignoreret indtil slutningen af ​​transaktionsblok

  2. SQLite UNIK begrænsning

  3. Hvordan indsætter man flere rækker fra array ved hjælp af CodeIgniter framework?

  4. Sådan beregnes forskellen mellem to datoer i T-SQL