Buen día gente besha!!! hoy les voy a pasar un tip que les puede servir para realizar importaciones de archivos masivos a una tabla en SQL SERVER….
Lo primero a considerar es que todo debe estar en una misma carpeta:

Por otro lado nuestros Excel deben tener la misma estructura interna, y la hoja que vamos a consultar debe llamarse igual en cada documento:

Algo para hacer, a modo de mejora en el proceso, podemos crear una carpeta que se llame Procesados, en donde una vez que se procese el archivo lo mueva a una carpeta de procesados:

En SQL SERVER, vamos a crear el siguiente SP:
USE [BaseDeDatos]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[ImportarMasivo] as
— Listar archivos en la carpeta
CREATE TABLE #Files (FileName NVARCHAR(255));
INSERT INTO #Files
EXEC xp_cmdshell ‘dir /b D:\Archivos a procesar*.xlsx’;
DECLARE @File NVARCHAR(255), @SQL NVARCHAR(MAX), @MoveCmd NVARCHAR(4000);
DECLARE cur CURSOR FOR SELECT FileName FROM #Files WHERE FileName IS NOT NULL;
OPEN cur;
FETCH NEXT FROM cur INTO @File;
WHILE @@FETCH_STATUS = 0
BEGIN
— Importar datos
SET @SQL = ‘
INSERT INTO BaseDeDatos.dbo.Tabla
SELECT *
FROM OPENROWSET(
»Microsoft.ACE.OLEDB.12.0»,
»Excel 12.0;Database=D:\Archivos a procesar\’ + @File + ‘;HDR=YES»,
»SELECT * FROM [Detalle de Alertas$]»
);’;
EXEC (@SQL);
-- Mover archivo a carpeta "Procesados"
SET @MoveCmd = 'move "D:\Archivos a procesar\' + @File + '" "D:\Archivos a procesar\Procesados\"';
EXEC xp_cmdshell @MoveCmd;
FETCH NEXT FROM cur INTO @File;
END
CLOSE cur;
DEALLOCATE cur;
DROP TABLE #Files;
A tomar en cuenta, debes crear la tabla antes o bien podes hacer un Select into con un solo archivo y luego ejecutar este proceso completo. Para hacer esto que te digo podes hacer lo siguiente:
begin transaction
— Importar datos desde Excel
SELECT *
INTO BaseDeDatos.dbo.Tabla
FROM OPENROWSET(
‘Microsoft.ACE.OLEDB.12.0’,
‘Excel 12.0;Database=D:\Archivos a procesar\abril-26.xlsx;HDR=YES’,
‘SELECT * FROM [Detalle de Alertas$]’
);
Commit transaction
Esto crea la tabla pero de manera automatica toma los tipos de datos con una identificacion basica del contenido de cada columna, esto deberías revisar y de ultima hacer un alter column para mejorar esta situación.
No te olvides de reemplazar los nombres de las carpetas con las tuyas, tu base de datos y tu tabla también.