Para insertar los datos que hay en un archivo de Excel en una tabla de SQL server puede resultar mas fácil de lo que parece.
Primero vamos a usar el archivo de Excel como un Servidor Vinculado.
Un Servidor Vinculado es una definición de una Cadena de Conexión OLEDB y un Proveedor OLEDB que asociamos a un nombre lógico, es decir, nos permite definir un nombre para el servidor vinculado, y a dicho nombre especificarle qué Proveedor OLEDB y qué Cadena de Conexión se debe utilizar para acceder al correspondiente Origen de Datos OLEDB cuando se solicite acceso a dicho Servidor Vinculado. Como hablamos, un Servidor Vinculado sirve para acceder a Orígenes de Datos OLEDB desde SQL Server (es decir, para ejecutar Consultas Distribuidas, ejecutar Procedimientos Almacenados en servidores remotos, etc.).
Ver
Para definir el Servidor Vinculado podemos usar el asistente de SQL Server o usar un procedimiento almacenado (lo que a mi me funciono mejor), la sintanxis es:
DECLARE @RC int
DECLARE @server nvarchar(128)
DECLARE @srvproduct nvarchar(128)
DECLARE @provider nvarchar(128)
DECLARE @datasrc nvarchar(4000)
DECLARE @location nvarchar(4000)
DECLARE @provstr nvarchar(4000)
DECLARE @catalog nvarchar(128)
-- Set parameter values
SET @server = 'XLTEST_SP' -- Nombre para el servidor
SET @srvproduct = 'Excel' --Nombre del producto
SET @provider = 'Microsoft.Jet.OLEDB.4.0' --Proveedor
SET @datasrc = 'c:\book1.xls' --Ruta completa del
--Origen de datos
SET @provstr = 'Excel 8.0' -- Origen de los datos
EXEC @RC = [master].[dbo].[sp_addlinkedserver] @server,@srvproduct,
@provider, @datasrc, @location, @provstr, @catalog
Puedes dejar solo igual, y con cambiar el nombre del servidor, @server, por cualquier nombre y @datasrc por la ruta completa donde esta el archivo de Excel.
Al ejecutar esta sentencia en el el Explorador de Objetos se puede encontrar en Objetos del Servidor en Servidores vinculados en Tablas encontraras
las hojas que tenga el archivo y se pueden consultar como tablas con la siguiente sintaxis:
SELECT [F1]
FROM [XLTEST_SP]...[Hoja2$]
GO
Donde XLTEST_SP es el nombre del Servidor Vinculado.
Ya que podemos consultar el archivo como una tabla solo es insertarla normalmente en el destino:
insert into Nintranet.dbo.Empleado_Atributos_Intranet
SELECT *
FROM [XLTEST_SP]...[Hoja2$]
GO
Ver