¡Bienvenidos, muy buenos días tardes o noches , según donde me leas !
En este primer post, vamos a poner en práctica ciertos pasos que nos podemos encontrar en nuestros días de trabajo cotidianos.
Para nuestro reto de datos número FP20 Analytics Challenge 16, tenemos un fichero muy particular. Imagina un Excel ubicado en una ruta y ¡pum! subirlo a SQL. Existen varias maneras de realizar este proceso y hoy vamos a explorar algunas de ellas.
Una de las opciones que tenemos será usar PowerShell. ¡Sí, efectivamente, vamos a ello!
Primero, abrimos nuestro PowerShell y comenzamos a crear específicamente nuestro código. Te prometo que no será nada difícil. Vamos a detallar cómo realizar la ubicación de nuestro fichero específico, crear variables, y ejecutar un script que permitirá la importación de datos desde Excel a SQL.
Además, veremos cómo automatizar este proceso con Power Automate y cómo implementarlo utilizando SSIS (SQL Server Integration Services). Cada método viene con pasos detallados y ejemplos prácticos que podrás adaptar a tus necesidades específicas.
Si te has enfrentado al desafío de importar datos de Excel a SQL, este artículo es para ti. Sigue leyendo y descubre las herramientas y técnicas que te ayudarán a optimizar tu flujo de trabajo con datos.
En este caso una de tantas opciones que tenemos sera usar PowerShell , si efectivamente , vamos a elloooo.
Primero abrimos nuestro PowerSheell imagen 1
Empezamos crear específicamente nuestro código, vamos que no sera nada difícil.
Primero de todo, realizar, la ubicación a nuestro fichero especifico , en mi caso como es en local ejecutaremos específicamente, en la ruta en la cual podemos desarrollar , estos pasos
Creamos una variable especifica
$excelFilePath = «C:\Reseña de Marca de Café.xlsx»
En la cual almacenamos el fichero xlsx
imagen 2
Ahora bien pasamos a las siguientes líneas de código las cuales son crear las variables de entorno donde se aloja la información
Crearemos tres variables donde estarán la base de datos , el servidor y la tabla donde se almacenara la información
$V_Servidor=
$BaseDeDatos=
$tabladestino=
Tambien creamos una cadena de conexión
$V_Servidor=»localhost»
$BaseDeDatos=»Prueba_correo»
$tabladestino=»Stage»
$cadenaconexion=»Server=$V_Servidor;Database;$BaseDeDatos;Integrated Security=True;»
Como ves asignando las variables anteriores
Imagen 3
Recuerda ojito con eso , que debemos tener la tabla de aterrizaje (o como sea) pero de destino donde se almacenara la información
Create table Stage
(
«Nombre de la Marca» Varchar(255),
«Tostadores «Varchar(255),
«Tipo de Tueste «Varchar(255),
«Ubicación del Tostador «Varchar(255),
«Latitud del Tostador»Varchar(255),
«Longitud del Tostador «Varchar(255),
«Origen «Varchar(255),
«Latitud de Origen»Varchar(255),
«Longitud de Origen»Varchar(255),
«Precio por 100g (USD)»Varchar(255),
«Calificación «Varchar(255),
«Fecha de Reseña»Varchar(255),
«Breve Descripción del Producto»Varchar(255),
«Aroma «Varchar(255),
«Sensación en Boca»Varchar(255)
)
Creamos las cadenas de conexión necesarias
$Conexionsql=New-Object System.Data.SqlClient.SqlConnection
$Conexionsql.ConnectionString =$Conexionsql
$Conexionsql.Open()
Imagen 4
Ahora vamos al Excel como lo recorreremos , yo solo quiero la hoja 2
$excelObjeto = New-Object -ComObject Excel.Application
$libro = $excelObjet.Workbooks.Open($excelFilePath)
$hoja = $libro.Worksheets.Item(2)
Intanciamos el objeto Excel, luego el libro que abrirá y deseo es la hoja dos.
Imagen 5
NOTA: Importante como puedes observar , específicamente , tenemos varios procesos en los cuales manejamos Write-Host $BaseDeDatos, es para ir imprimiendo, por donde va pasando una especie de control , puedes editarlo de la forma que mejor desees.
Ahora se viene el recorrido que deseamos que haga y claro que siii el insert que se crea este código , debes tener en cuenta que nuestra base de datos ciertas columnas necesitan un tratamiento especial por que tiene caracteres con comillas siemples, bueno creamos un parámetro para cada columna y asi controlamos este tipo de error., recuerda esto es un bucle que va recorriendo el Excel y asi va ejecutándose con cada uno de estos
$fila = 2
while ($hoja.Cells.Item($fila, 1).Value2 -ne $null) {
$columna1 = $hoja.Cells.Item($fila, 1).Value2
$columna2 = $hoja.Cells.Item($fila, 2).Value2
$comandosql = $Conexionsql.CreateCommand()
$comandosql.CommandText = «INSERT INTO $tabladestino ([Nombre de la Marca], [Tostadores]) VALUES (@columna1, @columna2)»
$comandosql.Parameters.Add((New-Object Data.SqlClient.SqlParameter(«@columna1», [Data.SqlDbType]::NVarChar, 255))).Value = $columna1
$comandosql.Parameters.Add((New-Object Data.SqlClient.SqlParameter(«@columna2», [Data.SqlDbType]::NVarChar, 255))).Value = $columna2
$comandosql.ExecuteNonQuery()
$fila++
}
Recuerda que si tu columna en SQL tiene espacios, debes si o si especificar como se realizaron estos pasos , es decir , como se modificaron cada uno de ellos , ya asi en cada columna que insertes .
Imagen 6
Por ultimo cerramos las instancias abiertas de cada uno de ellos para que asi quede funcional
Imagen 7
Estas sencillas LINEAS DE código en power Shell te solucionaran la importación de los datos de Excel a SQl….Ojito recuerda si lo deseas por esta via , si lo deseas por alguna otra adelante, seguiré subiendo mas alternativas.
Ahora vamos a realizarlo con power automate O siii
Lo crearemos con power automte desktop.
En este post se asume que tienes instalado esta versión, si deseas saber cómo instalarlo, podría crear un post sobre este tema.
Ahora bien repasemos la idea, es pasar, el fichero Excel a SQL el cual nos descargamos de la nube , vamos a ello, es decir dar clic y ejecutar la carga.
Para estos casos, se puede modificar, específicamente., Importante tener conectado Power automate a SQL .
Manos a la obra , lo primero sera , abrir nuestro power automate, y poder crear nuestros pasos específicos de solución, y asi cargar nuestro Excel.
Primero Conectar desde el power automate al Excel Imagen 8
Luego de crear el flujo y vamos a crear, usando la propiedad iniciar Excel imagen 9
Le indicamos la ruta donde esta nuestro fichero, seleccionamos las opciones y abrir el siguiente documento , luego colocamos la ruta de nuestro fichero, por ultimo desactivamos , hacer la instancia este visible OFF.
Imagen 10
Ahora pasamos a leer la hoja de Excel, luego de iniciar este proceso.
Se vincula la instancia activa, y seleccionaremos, todos los datos posibles de la hoja, y debemos activar la opción que tenemos específicamente, los cabeceros de las columnas imagen 11
Ahora podemos realizar, diferentes cambios específicos., continuamos con la conexión de SQL al power automate, Acá tenemos diferentes matices los cuales debemos manejar, en estos casos, podemos realizar, específicamente la conexión que vamos a realizar usando el driver de conexión, posterior a ello , seleccionamos específicamente , cada caso en el cual manejamos , es decir , crearemos específicamente la conexión al servidor , en mi caso local, luego de ello, la base de datos y testeamos la conexión
Imagen 12,13,14.
Procedemos a añadir un bluce for each en el cual se ejecutará cada fila, claro está dentro de este bucle se añade específicamente, la instrucción SQL, y el código en el cual se gestiona, cada caso, es una instrucción sencilla:
insert into [dbo].[Stage] ([Nombre de la Marca])
values (‘%CurrentItem[0]%’)
Esto quiere decir que serán los datos de la columna 1 que se ejecutarán cada caso
Imagen 15
En este caso, para los procesos, por último, podremos liberar específicamente, tanto SQL como Excel.
Imagen 16
Ahora por ultimo etl ssis con fichero excel a sql.
Para este caso lo primero sera abrir nuestro visual studio.
Primero claro esta es crear nuestro paquete en el cual ejecutamos, el proceso , para poder realizar , Conectamos nuestro Excel al integration services, pero antes de ello, vamos a realizar esto , pero antes de ello creamos un flujo de datos.
Imagen 17.
Se deben realizar , específicamente , cada proceso y cada caso de estos, ahora debemos gestionar la conexión al Excel que deseamos importar.
Imagen 18
Pero la lógica es cuando se suba este fichero, moverlo a una ubicación de una ruta especifica, para así almacenar el fichero cargado.
Para mover el fichero luego de que se halla cargado, usamos una propiedad llamada Tarea Sistema de archivos, esta propiedad nos permite mover ficheros.
Este necesita varias configuraciones, como lo son, primero seleccionamos la opción carpeta existente.
Imagen 19
Para el destino si que usaremos una variable para ambos casos puedes, utilizar cualquiera de las dos, le colocaremos la ruta destino donde esta le fichero, en este caso debemos realizar , específicamente , modificaciones variadas, como asignar la variable creada, con los datos de origen, el cual tiene la ruta , y sumado a ello, que mueva el fichero , claro esta y si existe que se sobre escriba, no creamos mas condiciones , por que en este caso, es solo un fichero.
Imagen 20
Con estos pasos, tenemos nuestro ELT básico , el cual tomara los datos del Excel y los llevara a SQL, luego moverá le fichero a otro destino.
Creamos una variable donde le pasaremos el destino específicamente, el dato a procesar Y YA SOMOS LIBRES Y FELICES.
En conclusión, importar datos de Excel a SQL no tiene por qué ser una tarea complicada. Hemos explorado tres métodos diferentes: PowerShell, Power Automate y SSIS, cada uno con sus propias ventajas y casos de uso específicos.
Usando PowerShell, vimos cómo un simple script puede automatizar la importación de datos de manera eficiente. Con Power Automate, aprendimos a crear flujos automatizados que conectan Excel y SQL, facilitando el proceso para aquellos que prefieren una solución más visual y accesible. Por último, con SSIS, descubrimos cómo configurar paquetes robustos para manejar tareas ETL complejas y mover datos de manera efectiva.
Espero que estos ejemplos te proporcionen las herramientas y el conocimiento necesario para enfrentar tus propios retos de datos. No importa cuál sea tu nivel de experiencia, siempre hay una solución que se adapta a tus necesidades.
Te animo a probar estos métodos y adaptarlos a tus propios proyectos. Comparte tus experiencias y resultados en los comentarios. ¡Me encantaría saber cómo te ha ido y qué método prefieres!
Gracias por leer, y no olvides seguirme para más contenido útil y desafíos interesantes. ¡Hasta la próxima!
Link GITHUB: https://github.com/vicente2121/PowerShell_SQL.git
Vicente Antonio Juan Magallanes.