Red de conocimiento informático - Material del sitio web - Cree informes de Excel a partir de múltiples bases de datos de Oracle

Cree informes de Excel a partir de múltiples bases de datos de Oracle

Las hojas de cálculo de Microsoft Excel se utilizan ampliamente en el entorno empresarial actual. Aunque Excel puede leer y mostrar archivos delimitados, la funcionalidad de los informes que Excel puede leer. Por ejemplo, puede utilizar Oracle Reports para generar una hoja de cálculo o utilizar SQL*Plus para generar un archivo delimitado por comas. Con algunas herramientas existentes, es posible acceder a múltiples fuentes de datos, pero el formato del informe está estrechamente relacionado con los resultados de una consulta específica, y diferentes fuentes de datos a veces producen resultados diferentes (por ejemplo, SELECCIONAR tablas en dos bases de datos diferentes * Las columnas devueltas por la consulta FROM emp son diferentes de las columnas devueltas por la consulta SELECT * FROM emp). Una consulta FROM emp en dos tablas en dos bases de datos diferentes inevitablemente devolverá un número y tipo de columnas diferentes).

Por diversos motivos, es posible que desees acceder a varias fuentes de datos diferentes y luego organizar los resultados en una hoja de cálculo.

Es posible que los administradores de bases de datos deseen comparar las configuraciones de diferentes bases de datos.

Es posible que los desarrolladores de aplicaciones deseen comprobar versiones de objetos PL/SQL en diferentes bases de datos.

Al migrar datos entre bases de datos, es posible que un administrador de base de datos necesite estimar el progreso del trabajo.

Al depurar una aplicación utilizando una base de datos de prueba, un programador puede necesitar comparar los datos actuales con los datos en producción

Dependiendo de la estructura de la base de datos y el propósito de la base de datos, es posible que tenga otras razones para generar una hoja de cálculo de este tipo, pero todas estas razones dependen de las capacidades. de la base de datos Requerir. El motivo depende de los requisitos funcionales y la definición de la base de datos.

Este artículo presentará cómo utilizar el proyecto de código abierto Apache Jakarta POI para generar hojas de cálculo a partir de múltiples fuentes de datos diferentes. Cada hoja de trabajo del libro mostrará la información. datos de los resultados devueltos por una base de datos Oracle determinada. El software creará una hoja de cálculo que contiene datos de una o más bases de datos Oracle

El usuario define una consulta SQL arbitraria, que luego es procesada por cada base de datos configurada

El usuario define una o más conexiones de base de datos

Se generará un archivo de configuración, incluidas las conexiones de datos y consultas SQL que definiste

El formato del archivo de configuración es el siguiente

La configuración El archivo se generará en formato XML

Se generará una hoja de trabajo que muestra los resultados devueltos por cada base de datos

Cada hoja de trabajo se basará en el nombre del servidor y el identificador del sistema Oracle (también conocido como Oracle SID) nomenclatura

Los encabezados de columna en la hoja de cálculo aparecerán en negrita (según la columna de la base de datos) clases jar Contiene los controladores JDBC específicos de Oracle y las clases necesarias para este proyecto. Esto debe incluirse en CLASSPATH para poder ejecutar el programa. Este archivo normalmente se puede encontrar en /jdbc/lib. También puede descargar este archivo desde OTN

La clase OracleConnectionVO contiene información y procesamiento relacionados con las conexiones JDBC.

controlador jdbc de Oracle OracleDriver será una URL con el formato jdbc:oracle:thin:@ :@ :@ a través de la cual se creará la conexión

PDI de Jakarata

Como mencioné en mi artículo anterior, la API del sistema de archivos POI de Jakarta implementa el formato de documento compuesto OLE en Java puro y puede leer y escribir archivos de Excel en Java a través de la API HSSF. En ese artículo usamos la API para leer archivos de Excel, aquí la usaremos para escribir en archivos de Excel (POI). Aquí lo usaremos para escribir en un archivo de Excel (POI también proporciona funcionalidad para abrir hojas de cálculo existentes y manipularlas). Si desea conocer las numerosas capacidades de POI, consulte la Guía de funciones de HSSF, que proporciona ejemplos de código que demuestran las funciones solicitadas con frecuencia por los desarrolladores.

Para crear un objeto de hoja de trabajo, llame al siguiente código (en la clase BroadcastDriver)

HSSFWorkbook wb = new HSSFWorkbook( fs);

Realice la llamada en la clase POISheetGenerator para crear la hoja de trabajo y luego agréguela a la hoja de trabajo. p> HSSFSheet hoja = wb createSheet(sheetname);

La fuente del título de la columna está en negrita y se configura de la siguiente manera

HSSFFont negrita = wb createFont(); negrita setBoldweight(HSSFFont BOLDWEIGHT_BOLD); HSSFCellStyle negritaStyle = wb createCellStyle(); negritaSetFont(boldFont); la iteración y el conjunto de resultados, se aplicará lo anterior. Al iterar sobre las columnas asociadas con el conjunto de resultados, se aplicará el formato de celda definido anteriormente

Row getCell((short) x) setCellStyle(boldStyle

);

Para escribir una hoja de trabajo en el disco, llame al siguiente código

OutputStream = new FileOutputStream( salida xls wb write(out); out close(); jar de difusión

El jar de difusión contiene las clases que componen el proyecto en sí

BroadcastDriver BroadcastDriver contiene los principales métodos utilizados por esta aplicación Crea el objeto HSSFWorkbook() que contiene todas las hojas de trabajo Luego crea el objeto XMLConfigVO que se utiliza para leer la conexión desde el xml de configuración y la consulta SQL para utilizar la información contenida en este objeto.

La información contenida en este objeto La aplicación iterará a través de cada OracleConnectionVO y configurará el controlador JDBC URL de la base de datos JDBC Nombre de la base de datos Contraseña de la base de datos Consulta SQL y nombre de la hoja de trabajo (en el formulario) La hoja de trabajo llena de datos se agregará a la hoja de trabajo Todo Después de la conexión Cuando se complete la iteración, la tabla de trabajo se escribirá en el sistema de archivos

El objeto OracleConnectionVO se usará para leer la conexión desde el xml de configuración y usar que La información contenida en el objeto.

OracleConnectionVO OracleConnectionVO guarda el controlador JDBC URL de la base de datos JDBC nombre de la base de datos contraseña de la base de datos y valor de la consulta SQL

XMLConfigVO XMLConfigVO crea un DocumentBuilderFactory para analizar el documento xml de configuración XPath Consulta para recuperar una NodeList que contiene los valores requeridos

NodeList nodelist = apache xpath XPathAPI selectNodeList(doc xpath

Una vez que encuentre el nodo correcto, puede llamar a getNodeValue() para obtener su valor. POISheetGenerator El método populateSheet de esta clase hace la mayor parte del trabajo. Una vez completada la configuración inicial, los encabezados de las columnas aparecerán en negrita y se abrirá la conexión a la base de datos. p>

Se recuperarán los metadatos, necesitamos metadatos para determinar el número de columnas sobre las que se iterará. Los metadatos también contienen los nombres de las columnas que se utilizarán como columnas en la hoja de trabajo que se procesa y luego se iterarán sobre el conjunto de resultados. Las operaciones con varios datos en este ejemplo son muy simples. Si se produce una excepción NumberFormatException (porque el valor numérico no se puede convertir en un número), el programa llama a la función toString en el objeto devuelto. La función toString está definida en el objeto Object en la parte inferior del sistema Java, por lo que no importa qué objeto se devuelva, se garantiza que este método funcionará normalmente. Sin embargo, si se analiza desde el significado del valor de retorno y su correlación con el objeto, los valores reales devueltos por toString son extremadamente diversos.

Aplicaciones potenciales

La siguiente es una consulta de ejemplo que se puede agregar al archivo xml de configuración para devolver los datos para comparar.

La tabla V$DATABASE contiene información general sobre una base de datos que puede necesitar al comparar configuraciones de bases de datos o solucionar problemas de respaldo y recuperación, aunque la cantidad de campos y el tipo de base de datos varían según la versión. La siguiente consulta se ejecutará sin problemas y mostrará los resultados de la tabla a la que apunta. Base de datos

Si el DBA desea rastrear alguna información de la versión de la base de datos, entonces es probable que use los datos de la tabla V$VERSION, en cuyo caso se puede usar la siguiente consulta

p>

SELECT Nombre: ||nombre información de la base de datos FROM v$database UNION ALL SELECT DBID: ||dbid FROM v$database UNION ALL SELECT * FROM v$ version

Los principales archivos de interés en una operación de copia de seguridad o recuperación son el archivo de control, los archivos de registro de rehacer y la base de datos.

Puede recuperar la ubicación de estos archivos utilizando la siguiente consulta

SELECT * FROM ( SELECT Tablespace Name File Name FROM V$CONTROLFILE union SELECT Member FROM V$LOGFILE union SELECT Tablespace_Name File_Name FROM DBA_DATA_FILES UNION SELECT ****A PARTIR DE:||to_char(sysdate MM/DD/AAAA HH:MI:SS) || **** FROM dual)ORDER BY

Oracle Recovery Manager (RMAN) se usa comúnmente para administrar operaciones de respaldo y recuperación. Al examinar o estandarizar la actividad de respaldo, es posible que desee utilizar la información relacionada con RMAN almacenada en la base de datos. FROM V$BACKUP_SET

o

SELECCIONAR * FROM V$RMAN_CONFIGURATION

Los administradores de bases de datos de aplicaciones Oracle pueden encontrar muchos problemas al administrar su entorno. Es posible que los administradores de bases de datos que gestionan un gran número de instancias deseen comparar los parches aplicados

SELECT * FROM APPLSYS AD_APPLIED_PATCHES ORDER BY PATCH_NAME

Eso es todo Son varias las situaciones que pueden surgir ante cualquier consulta.