sql >> Base de Datos >  >> RDS >> Oracle

Crear una hoja de cálculo de Excel a partir de una base de datos Oracle

Supongo que el problema es, ¿qué tan compleja es tu "estructura compleja"?

Los IDE de programación como Oracle SQL Developer o Quest TOAD tienen asistentes para exportar tablas de datos a archivos CSV.

Si desea unir datos de varias tablas, puede usar una vista o incluso escribir una instrucción SQL

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

(recuerde que las columnas a menudo pueden contener datos que incluyen comas, por lo que es posible que desee utilizar un carácter más inusual, o un conjunto de caracteres, como separador).

Otra forma rápida de hacer algo es usar la función de informes HTML de SQL*Plus. Muchas herramientas de hojas de cálculo pueden importar HTML y XML bien estructurados sin problemas. Obtenga más información.

Si desea aplanar una estructura jerárquica o algo aún más intrincado, probablemente deba pasar a PL/SQL. Un enfoque hecho a mano usaría una variante de la declaración anterior ajustada para usar 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;

Si desea exportar específicamente a Excel (es decir, un archivo .XLS), deberá ir más allá de las funciones integradas de Oracle. La solución habitual para exportar directamente de PL/SQL a Excel es el contenedor OWA_SYLK de Tom Kyte para la API SYLK. Obtenga más información.

Esto funciona con hojas de cálculo individuales. Si desea exportar a varias hojas de trabajo, hay un par de soluciones alternativas.

Sanjeev Sapre tiene su paquete get_xl_xml. Como sugiere el nombre, utiliza XML para llevar a cabo la transformación. Saber más.

Jason Bennett ha escrito un objeto PL/SQL que genera un documento XML de Excel. Obtenga más información.