• • •

Configuración y Automatización: El corazón de las herramientas MalaCharger

Introducción

Insert Bulk Bestia y Excel To Database comparten la misma filosofía para gestionar las parametrizaciones de las tareas a realizar:

  • El conjunto de opciones seleccionadas por el usuario para realizar una determinada tarea se va a denominar "Configuración".
  • Ambas aplicaciones pueden gestionar varias Configuraciones.
  • También pueden almacenar y recuperar dichas Configuraciones.
  • Permiten la edición de las Configuraciones para adaptarlas a las necesidades de cada momento.
  • Permiten que los administradores de sistemas creen plantillas de carga que, posteriormente, cualquier usuario puede ejecutar sin conocimientos técnicos previos. Des esta forma se podrán crear diferentes perfiles de migración de datos para las diferentes tareas parametrizadas.
  • Muestran, en el interfaz de usuario, información relativa a acciones, eventos y/o errores que se pueden producir durante la manipulación de dichas Configuraciones. Esa información también es almacenada y ampliada en ficheros de "Trazas de la Aplicación", común a todas las Configuraciones.
  • Permiten ejecutar varias Configuraciones desde el interfaz de usuario. Se ejecutarán de forma consecutiva, una detrás de otra.
  • Permiten ejecutar varias Configuraciones desde línea de comandos. Se ejecutarán de forma consecutiva, una detrás de otra.
  • Durante la ejecución de una Configuración se muestra en el interfaz de usuario información relativa a lo que está sucediendo en cada momento, como, por ejemplo: acciones realizadas por la aplicación, información sobre errores, etc. Dicha información también es almacenada y ampliada en ficheros de "Trazas de la Configuración", independientes para cada Configuración.

El interfaz de usuario de ambas aplicaciones se compone de una "Ventana Principal" en la cual se muestran diferentes "Paneles" en función de las acciones realizadas por el usuario. Varios de estos paneles son comunes a ambas aplicaciones y su funcionamiento es el mismo.

Al iniciar las aplicaciones, se muestran los siguientes "Paneles" (los dos últimos siempre estarán visibles):

Ventana Principal

Es la ventana contenedora de los diferentes paneles que se muestran al usuario. Tiene un aspecto distinto a la de una ventana tradicional, aunque el funcionamiento es semejante. Así, por ejemplo, aunque la ventana no dispone de los tradicionales bordes, en ella se pueden realizar las acciones típicas:

Para redimensionar la ventana se ha de situar el cursor en los bordes de la ventana, y cuando cambie de forma podrá modificar el tamaño de la ventana.

Para mover la ventana se ha de utilizar el borde superior de la misma, con los mismos gestos que se usan para mover cualquier otra ventana.

Además, todos los controles de ambas aplicaciones tienen asociados ToolTips (ayuda que aparece al situar el ratón sobre el control). En la siguiente figura se muestra la Ventana Principal con el ToolTip asociado al botón de "Cerrar" la ventana.

Ventana Principal

Ventana Principal mostrando ToolTips de los botones para el control de la ventana.

  • Min, Max, Rest, Salir

    El "círculo" de la esquina superior derecha tiene ocultos en su interior los botones de "Maximizar", "Restaurar", "Salir" y "Minimizar", en ese orden y de arriba a abajo. Al situar el puntero del ratón encima de los botones se muestran los ToolTips correspondientes indicando las acciones que realiza el botón oculto.

  • Stop/Start

    Permite parar o arrancar los efectos visuales.

    Los efectos visuales del interfaz de usuario consumen muchos recursos de CPU, sobre todo en máquinas virtuales. Por ello, los efectos visuales sólo se activan durante unos segundos al inicio de la aplicación y tras la finalización de las ejecuciones.

    Toda regla tiene su excepción: En el "Panel de Libros y Hojas" de Excel To Database existen una serie de CheckBox con animaciones que también consumen demasiados recursos. Dado que son un simple capricho, no se tiene previsto su supresión. Este consumo de recursos se detiene cuando se cambia de panel, por lo que no supone ningún problema a no ser que se deje la aplicación abierta en dicho panel.

  • Idioma

    Permite cambiar el idioma de la aplicación.

    El cambio de idioma implica un reinicio de la aplicación SIN CONSULTAR CON EL USUARIO si se deben guardar las modificaciones realizadas que no se encuentran almacenadas en el fichero JSON.

    Hasta el momento actual, no todas las librerías son multilingües. La aplicación se ha desarrollado en español, y será en sucesivas versiones cuando se encuentre totalmente finalizada la traducción al inglés.

Panel Configuraciones

Es el panel que administra las Configuraciones: Crear, Editar, Eliminar, ...

Panel: Administración de Configuraciones

Panel Configuraciones: 3 Configuraciones. 2 marcadas para ejecutar, 1 seleccionada para editar que habilita los botones de administración.

En función de las acciones que el usuario realice, se activarán/desactivarán determinados botones. Así, por ejemplo, las acciones que conllevan la alteración de las Configuraciones pueden dar lugar a que se desactiven determinados botones, como el botón "Ejecutar". En este caso, para que se habilite dicho botón será necesario "Guardar" las Configuraciones o "Cancelar" las modificaciones realizadas.

  • Añadir

    Permite la creación de una nueva Configuración vacía. Solicitará un nombre, que no puede contener los siguientes caracteres: , (coma), = (igual), " " (espacio en blanco). El nombre debe ser único.

    Se deshabilitará el botón (si se encontraba habilitado) "Ejecutar" hasta que se guarden o cancelen los cambios.

  • Lista de Configuraciones

    A medida que se vayan creando Configuraciones, éstas irán apareciendo en el listado. Cada Configuración tiene asociada una casilla de verificación (CheckBox), que indica si se ejecutarán sus tareas cuando se pulse el botón "Ejecutar". En la figura anterior, las Configuraciones "Vacía2" y "Vacía3" se ejecutarán en dicho orden cuando se pulse sobre dicho botón.

    Cuando se marca o desmarca una de estas casillas, se deshabilitará el botón "Ejecutar" hasta que se guarden o cancelen los cambios.

    Pulsando sobre una determinada Configuración, ésta queda seleccionada para poder trabajar con ella. En ese momento se habilitan los botones que permiten administrarla. En la figura anterior, la Configuración "Vacía3" es la seleccionada, y se podrá editar, copiar, eliminar, cambiar el orden en que se ejecute con respecto al resto de Configuraciones.

  • Copiar

    Este botón se habilitará cuando una Configuración se encuentre seleccionada.

    Realiza una copia completa de la Configuración seleccionada en una nueva Configuración. A la copia se le debe asignar un nuevo nombre único.

    Se deshabilitará el botón (si se encontraba habilitado) "Ejecutar" hasta que se guarden o cancelen los cambios.

  • Eliminar

    Este botón se habilitará cuando una Configuración se encuentre seleccionada.

    Elimina la Configuración seleccionada de la "Lista de Configuraciones".

    Se deshabilitará el botón (si se encontraba habilitado) "Ejecutar" hasta que se guarden o cancelen los cambios.

  • Editar

    Este botón se habilitará cuando una Configuración se encuentre seleccionada.

    Permite editar las diferentes opciones de la Configuración seleccionada. Desaparecerá el "Panel de Configuraciones" y aparecerá el panel que permite la parametrización de la Configuración. Así, para Insert Bulk Bestia aparece el "Panel de Conexiones" y para Excel To Database aparece el "Panel de Libros y Hojas".

    Una vez ocultado el "Panel de Configuraciones", pulsando sobre el botón "Volver" de los paneles que lo sustituyen, se vuelve a mostrar de nuevo este panel.

  • Subir/Bajar

    Este botón se habilitará cuando una Configuración se encuentre seleccionada.

    Alteran el orden en que se muestran y/o ejecutan las Configuraciones.

    Se deshabilitará el botón (si se encontraba habilitado) "Ejecutar" hasta que se guarden o cancelen los cambios.

  • Guardar

    Las Configuraciones se almacenan en un fichero con formato JSON, que se encuentra en la misma carpeta donde está ubicada la aplicación y con el nombre del producto. Por ejemplo: "Excel To Database.json".

    Este botón se habilitará cuando haya modificaciones en las Configuraciones que no se encuentren almacenadas.

    Guarda en el fichero JSON las modificaciones realizadas a las Configuraciones.

    Si se cumplen las condiciones adecuadas, se habilitará el botón "Ejecutar".

    Las cadenas de conexión se almacenan en el fichero JSON SIN CIFRAR, por lo que quedará comprometida su seguridad ya que en ellas se almacena la contraseña. En futuras versiones, se solventará esta situación.

  • Cancelar

    Este botón se habilitará cuando haya modificaciones en las Configuraciones que no se encuentren almacenadas.

    Cancela las modificaciones realizadas en las Configuraciones volviendo a recargar el contenido del fichero JSON donde se encuentran almacenadas.

    Si se cumplen las condiciones adecuadas, se habilitará el botón "Ejecutar".

  • Salir

    Cierra la aplicación. Si hay modificaciones en las Configuraciones pendientes de ser almacenadas en el fichero JSON, solicita confirmación al operador.

    Confirmación para salir sin guardar modificaciones

    Confirmación para salir sin guardar modificaciones.

    NOTA: cuando se solicita el cambio de "Idioma", la aplicación se reinicializa de forma automática. Se perderán las modificaciones realizadas en las Configuraciones si no han sido almacenadas previamente.

  • Ejecutar

    Este botón se habilitará cuando no haya modificaciones en las Configuraciones pendientes de ser almacenadas y cuando haya marcada alguna Configuración para ser ejecutada (CheckBox Checked).

    Al pulsar sobre el botón, se ejecutan las Configuraciones que tienen marcada su casilla de verificación y en el orden en que aparecen en la "Lista de Configuraciones". Se activa el "Panel de Resultados", y aquí se informa de las acciones que se están realizando en cada momento, de los eventos que se puedan producir, y de los posibles mensajes de error.

    Automatización Industrial: Interfaz de Línea de Comandos (CLI)

    Tanto Excel To Database como Insert Bulk Bestia comparten un potente motor de ejecución por línea de comandos, diseñado para la integración en flujos de trabajo profesionales. Esta característica permite a los administradores de sistemas y desarrolladores DevOps automatizar cargas masivas de datos sin intervención manual.

    Al utilizar el modificador /CFG="Nombre", puedes disparar configuraciones específicas desde scripts .bat, PowerShell, el Programador de Tareas de Windows o Gestores de Procesos. Esta arquitectura desacoplada garantiza que la lógica de migración sea consistente, ya sea que estés procesando hojas de cálculo complejas o sincronizando tablas entre bases de datos SQL.

    Así, a modo de ejemplo, se incluye un ".bat" que puede servir para ser invocado desde un gestor de procesos. Las Configuraciones que se desean ejecutar deben ir en los argumentos de la llamada a la aplicación, tras el modificador "/CFG=". Si no se indica ninguna Configuración en la línea de comandos, se ejecutarán aquellas Configuraciones que se hayan marcado para ser ejecutadas. Si, por el contrario, se especifica una lista de Configuraciones, ésta debe ir encerrada entre comillas dobles (") y separadas por comas (,). Se ejecutarán independientemente de si están marcadas o no. Por ejemplo, con el siguiente comando se ejecutarán las configuraciones "Vacía1" y "Vacía2" aunque la configuración "Vacía1" no se encuentre marcada como se aprecia en la figura anterior:

    Para automatizar la carga de datos, utilice la siguiente sintaxis en su terminal o archivo batch:
    
    ".\Excel To Database.exe" /CFG="Vacía1, Vacía2"
          

Panel de Resultados

Se compone de un cuadro de texto donde se presenta información variada al usuario, de un botón "Clear" que "limpia" dicho cuadro de texto, y un botón "Volver" para regresar al panel anterior.

Dado que los controles de Microsoft previstos para presentar texto tienen un escaso rendimiento, se ha optado por utilizar el famoso editor de texto "Scintilla" (utilizado, por ejemplo, en Notepad++). Desafortunadamante, la integración de este control con la tecnología utilizada en el interfaz de usuario presenta algunos problemas. Por ejemplo, no permite la personalización del scrollbar y la integración con las transparencias tiene como consecuencia un efecto "raro" cuando se incia con la aplicación.

En la figura siguiente, en dicho panel se muestra información relativa al parámetro "PacketSize". Este es un parámetro perteneciente a las cadenas de conexión de SQL Server, y aparece cuando se establece una cadena de conexión de este tipo.

Panel: Resultados

Panel: Resultados. Muestra información relativa al parámetro "PacketSize".

En el panel funcionan los aceleradores típicos, como Ctrl-A para seleccionar todo el texto, o Ctrl-C para copiar el texto seleccionado.

Además de este panel, se generan varios ficheros de "trazas":

  • Trazas de la Aplicación

    Durante la administración de las Configuraciones y su parametrización, además de presentar información en el "Panel Resultados", también se generan dos ficheros de log. Dichos ficheros se encuentran en la misma ubicación que la aplicación, tienen extensión ".log" y comienzan por el nombre del producto. Así, para Excel To Database se generan los ficheros "Excel To Database.log" y "Excel To Database_Error.log", mientras que para Insert Bulk Bestia se generan: "Insert Bulk Bestia.log" e "Insert Bulk Bestia_Error.log".

    "Excel To Database.log" e "Insert Bulk Bestia.log" contienen la información que se presenta en pantalla. Es útil cuando se ejecutan las Configuraciones por línea de comandos, ya que en ellos quedan registradas las acciones que realizan las aplicaciones.

    "Excel To Database_Error.log" e "Insert Bulk Bestia_Error.log" contienen la información de los anteriores ficheros respectivamente, pero con un mayor detalle en los errores cuando éstos se producen. Por lo tanto, deben ser estos ficheros los que se deben utilizar para el análisis de los posibles problemas.

  • Trazas de la Configuración

    Durante las ejecuciones de las Configuraciones se generan otros ficheros de trazas que siguen la filosofía anterior. De esta forma se encuentran diferenciadas las trazas relativas a la operativa de la aplicación, de las trazas asociadas con las tareas programadas en cada Configuración.

    Dichos ficheros también se encuentran en la misma ubicación que la aplicación, tienen extensión ".log", comienzan por el nombre del producto y terminan con el nombre de la Configuración. Así, por ejemplo, para Excel To Database y la Configuración "Vacía3" se generarán los ficheros "Excel To Database_Vacía3.log" y "Excel To Database_Error_Vacía3.log".

    Al igual que ocurre con las Trazas para la Aplicación, el primero de ellos contiene toda la información que se muestra en el "Panel Resultados", mientras que el segundo contiene información más detallada de los errores cuando éstos se producen.

Panel About

En este panel se muestra información relativa a la aplicación.

Panel About

Panel About de Excel To Database.

Controles Comunes

  • Selección de Ficheros

    Este control, dependiendo de las necesidades, permitirá la selección de uno o varios Ficheros o una Carpeta. El control se compone de un texto que define la acción: "Selección de Ficheros", un botón que lanza la acción: "Examinar", y un cuadro de texto donde se informa de la carpeta seleccionada o la carpeta donde se encuentran los ficheros seleccionados.

    En el cuadro de diálogo que aparece para la selección de ficheros, se indica la extensión de los ficheros que se desean seleccionar. Así, para Excel To Database se permite la selección de ficheros con extensiones "*.xlsx" (Excel Files) y "*.xlsm" (Excel Macro Files). Sin embargo, también se da la posibilidad de eliminar dicho filtro, pudiendo seleccionar cualquier archivo "*.*" (All Files).

    Excel To Database NO necesita la instalación de ningún driver ni aplicación de Office para leer este tipo de ficheros. Es por ello por lo que solamente se permite la carga del nuevo estándar de hojas de cálculo, es decir, los libros con extensión ".xlsx". Los libros con extensión ".xls" (versiones de Office del 97 al 2003 incluido) no pueden cargarse con esta aplicación.

    Selección de Ficheros

    Selección de Ficheros. Selección de Libros Excel.

    Una vez seleccionados los ficheros, y mientras la aplicación se encuentre en funcionamiento, la modificación de los Libros Excel seleccionados puede dar lugar a errores durante la lectura del contenido del Libro.

  • Conexión a Base de Datos

    Este control es un asistente para la creación de cadenas de conexión a bases de datos. Se compone de un texto que define la acción: "Base de Datos", un botón que lanza la acción: "Asistente Cadena Conexión", y un cuadro de texto donde se muestra la cadena de conexión generada.

    En función del tipo de licencia y de la aplicación, los destinos permitidos para las cadenas de conexión serán unos u otros. Hasta estos momentos, los destinos permitidos son: Microsoft Access, SQL Server y Oracle. En futuras versiones de ambas aplicaciones, es posible que se amplíen los posibles destinos permitidos.

    Para cada uno de los destinos es posible utilizar varios proveedores de datos. Los proveedores de datos determinan el comportamiento de las conexiones y determinan las posibilidades en el manejo de los datos. Además, en algunos casos, para cada proveedor de datos es posible elegir uno de entre varios drivers. De esta forma, se ofrece una amplia flexibilidad y versatilidad.

    Hay que destacar que los comportamientos de los proveedores de datos y de los drivers no son idénticos, por lo que se han de realizar pruebas exhaustivas hasta encontrar la cadena de conexión que más se adapte a cada necesidad.

    Cadena Conexión: Proveedores de Datos

    Cadena Conexión: Selección del Proveedor de Datos para la Base de Datos.

    • Microsoft Access

      Se permite el uso del .NET Data Provider for OLE DB. Excel To Database es una aplicación de 64 bits, por lo que los drivers permitidos son: Microsoft.ACE.OLEDB.12.0, Microsoft.ACE.OLEDB.15.0 y Microsoft.ACE.OLEDB.16.0 de 64 bits.

      Si existe la suficiente demanda, es posible que se generen las correspondientes versiones de 32 bits de las aplicaciones, en cuyo caso, los drivers permitidos serán: "Microsoft.ACE.OLEDB.12.0", "Microsoft.ACE.OLEDB.15.0" y "Microsoft.ACE.OLEDB.16.0" de 32 bits, junto con el driver incluido con el Sistema Operativo "Microsoft.Jet.OLEDB.4.0" de 32 bits para bases de datos tipo MDB.

      Esta información se encuentra ampliada en los capítulos dedicados a las pruebas realizadas con Excel To Database para MS Access: "Drivers MS Access".

    • ODBC

      Sólo se permite el uso del .NET Data Provider for ODBC, que Microsoft ya considera obsoleto. No se permite el uso de orígenes de datos del sistema o del usuario porque no almacenan la contraseña y, por tanto, se solicitará cada vez que se intente abrir la conexión. Sin embargo, si se puede crear una cadena de conexión a partir de estos orígenes de datos.

      No todos los drivers están permitidos. Se permiten los siguientes controladores: Microsoft Access Driver (*.mdb), Microsoft Access Driver (*.mdb, *.accdb), ODBC Driver 18 for SQL Server, ODBC Driver 17 for SQL Server, SQL Server, SQL Server Native Client 11.0 y Oracle ODBC Driver.

      El driver "Microsoft ODBC for Oracle" sólo funciona con aplicaciones de 32 bits y con clientes de Oracle demasiado obsoletos. A diferencia de MS Access, en los que sí se han probado los drivers de 32 bits, este driver no se ha probado. Si existe la suficiente demanda, es posible que se generen las correspondientes versiones de 32 bits de las aplicaciones y se integre dicho driver.

      Para Excel To Database, en futuras versiones, se permitirá el uso de ficheros planos como fuente de datos mediante el uso de los drivers "Microsoft Text Driver (*.txt, *.csv)" para aplicaciones de 32 bits y de "Microsoft Access Text Driver (*.txt, *.csv)" para aplicaciones de 32 y 64 bits.

      Para Insert Bulk Bestia, no se permite usar ODBC como destino de bases de datos. Es posible que en futuras versiones si se permita como origen de los datos.

      Esta información se encuentra ampliada en los capítulos dedicados a las pruebas realizadas con Excel To Database: "Drivers MS Access", "Drivers ODBC SQL Server" y "Drivers ODBC Oracle".

    • SQL Server

      Se permite el uso de .NET Data Provider for SQL Server. Este proveedor de datos utiliza System.Data.SqlClient y para versiones posteriores también se encontrará disponible Microsoft.Data.SqlClient.

      Excel To Database, para SQL Server, permite el uso de los proveedores de datos .NET Data Provider for ODBC y .NET Data Provider for OLE DB como destino de los datos. Insert Bulk Bestia, para SQL Server, es posible que en futuras versiones se puedan utilizar estos proveedores de datos como orígenes de los datos, no como destino.

      Para .NET Data Provider for OLE DB se permiten los drivers Microsoft OLE DB Provider for SQL Server más conocido por SQLOLEDB y SQL Server Native Client 11.0 (SQLNCLI), que Microsoft considera que están en desuso. También se permite el uso de: Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) y Microsoft OLE DB Driver 19 for SQL Server (MSOLEDBSQL19).

      Para .NET Data Provider for ODBC se permite el uso de los drivers SQL Server Native Client 11.0, SQL Server, ODBC Driver 17 for SQL Server y ODBC Driver 18 for SQL Server para 32 y 64 bits.

      Esta información se encuentra ampliada en los capítulos dedicados a las pruebas realizadas con Excel To Database para SQL Server: "Drivers SQL Server".

    • Oracle

      Se permite el uso de Oracle Data Provider for .NET, Managed Driver.

      Excel To Database permite el uso del proveedor de datos .NET Data Provider for ODBC con los drivers Oracle ODBC Driver. Con el proveedor de datos .NET Data Provider for OLE DB se permite el uso del driver Oracle Provider for OLE DB.

      Los drivers "Microsoft ODBC for Oracle" y "Microsoft OLE DB Provider for Oracle" (MSDAORA) sólo funcionan con aplicaciones de 32 bits y con clientes de Oracle demasiado obsoletos. A diferencia de MS Access, en los que sí se han probado los drivers de 32 bits, estos drivers no se han probado. Si existe la suficiente demanda, es posible que se generen las correspondientes versiones de 32 bits de las aplicaciones y se integren dichos drivers.

      Por último, indicar que es necesario ser ingeniero de Oracle para instalar las versiones de 32 y 64 bits de estos drivers en la misma máquina. Es incomprensible como Oracle sigue utilizando tecnología de hace 40 años para la instalación ligera de estos drivers: ODAC Xcopy Package + Instant Client ODBC package ("Oracle Instant Client" + "Oracle Provider for OLE DB" + "Oracle ODBC Driver"), y cuya documentación es incompresible, indescifrable, insufrible, in..., in.... Existe el "Oracle Universal Installer" (OUI), pero el "ruido" que genera hace que no sea la opción indicada para máquinas de producción (en nuestro caso, máquinas de 2010 con un i7 920).

      Esta información se encuentra ampliada en los capítulos dedicados a las pruebas realizadas con Excel To Database para Oracle: "Drivers Oracle".

    • OLE DB

      Para el proveedor de datos .NET Data Provider for OLE DB ya se han descrito los drivers permitidos en los puntos anteriores.

    Cadena Conexión: Probar Cadena de Conexión

    Cadena Conexión: Configuración y prueba de la Cadena de Conexión.

    Las cadenas de conexión se almacenan en el fichero JSON SIN CIFRAR, por lo que quedará comprometida su seguridad ya que en ellas se almacena la contraseña. Recomendamos el uso de usuarios con permisos restringidos (Least Privilege) en la base de datos mientras se implementa el cifrado en futuras versiones.

    Tanto Insert Bulk Bestia como Excel To Database imponen determinadas propiedades a la cadena de conexión para que puedan funcionar correctamente. Por ejemplo, para las cadenas de conexión a SQL Server que utilizan ".NET Data Provider for SQL Server" se añaden los siguientes modificadores:

    Asynchronous Processing=True;MultipleActiveResultSets=True;Application Name="Excel To Database";Workstation ID=MaquinaOrigen;ApplicationIntent=ReadWrite.
    

Preguntas Frecuentes

¿Puedo ejecutar varias configuraciones a la vez?

Sí, las configuraciones marcadas se ejecutan consecutivamente, asegurando que no haya colisiones de procesos en la base de datos.

¿Dónde se guardan mis configuraciones?

Se almacenan en un archivo JSON en la carpeta raíz de la aplicación, facilitando su portabilidad, copia de seguridad y modificación manual en casos especiales.

¿Cómo automatizar Excel To Database o Insert Bulk Bestia con una tarea programada?

Utiliza el modificador /CFG="NombreConfig" en la línea de comandos para lanzar tareas automáticas sin intervención humana.

¿Qué sucede si la ejecución por CLI encuentra un error?

El motor de MalaCharger genera un log detallado de errores y detiene la ejecución para proteger la integridad de la base de datos, devolviendo un código de salida que puede ser capturado por scripts de monitoreo.