Importar desde Excel a SQL Server


sql2005

Alguna vez han tratado de importar datos desde una planilla excel a sql server ?  supongo que han pasado bastantes minutos tratando de hacerlo por lo menos yo me demoré bastantes minutos googleando para poder lograrlo.

Para hacerlo se debe utilizar la función OpenRowSet de Sql Server. Muy Practica por lo demás.

En el ejemplo lo que hago es tomar todos los datos que necesito desde una planilla excel llamada “comunas2.xls” y desde la hoja con nombre “Sheet1”, luego para poder insertar los datos en mi tabla “COMUNA” cree un cursor que recorriera los registros y los fuera insertando a medida que va recorriendo.

CREATE PROCEDURE TEMP_CARGA_EXCEL
AS
BEGIN
DECLARE @VS_CODIGO VARCHAR(10),
@VS_COMUNA VARCHAR(20)
DECLARE CUR_COMUNAS CURSOR FOR
SELECT *
FROM OPENROWSET( ‘Microsoft.Jet.OLEDB.4.0’,
‘Excel 8.0;Database=C:\comunas2.xls;HDR=Yes’,
‘SELECT * FROM [Sheet1$]’);
OPEN CUR_COMUNAS
FETCH NEXT FROM CUR_COMUNAS
INTO @VS_CODIGO, @VS_COMUNA
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO COMUNA (ID_COMUNA,COMUNA)
VALUES (@VS_CODIGO,@VS_COMUNA)
FETCH NEXT FROM CUR_COMUNAS
INTO @VS_CODIGO, @VS_COMUNA
END
CLOSE CUR_COMUNAS
DEALLOCATE CUR_COMUNAS
END

CREATE PROCEDURE CARGA_EXCEL

AS

BEGIN

DECLARE @VS_CODIGO VARCHAR(10), @VS_COMUNA VARCHAR(20)

DECLARE CUR_COMUNAS CURSOR FOR

SELECT * FROM OPENROWSET( ‘Microsoft.Jet.OLEDB.4.0’, ‘Excel 8.0;Database=C:\comunas2.xls;HDR=Yes’, ‘SELECT * FROM [Sheet1$]’);

OPEN CUR_COMUNAS

FETCH NEXT FROM CUR_COMUNAS

INTO @VS_CODIGO, @VS_COMUNA

WHILE @@FETCH_STATUS = 0

BEGIN

INSERT INTO COMUNA (ID_COMUNA,COMUNA)

VALUES (@VS_CODIGO,@VS_COMUNA)

FETCH NEXT FROM CUR_COMUNAS

INTO @VS_CODIGO, @VS_COMUNA

END

CLOSE CUR_COMUNAS

DEALLOCATE CUR_COMUNAS

END

Nota: Ojo que para poder utilizar la función OpenRowSet deben tener habilitada la opción en “Surface Area Configuration”

Nota: hay una manera MUCHO mas corta de hacerlo, pero solo sirve para cuando no tienen creada la Tabla donde quieren almacenar los datos.

12 respuestas a Importar desde Excel a SQL Server

  1. Carlos AJR dice:

    perfecto… me sirvió muchísimo

  2. luis dice:

    Una pregunta basica
    donde va puesto el código??
    sirve para vb.net 2005, no?
    saludos

    • ModderClocker dice:

      Estimado,

      es un procedimiento almacenado… por ende va en el un esquema de base de datos… lo puedes ejecutar desde cualquier visual basic sin mayor problemas..

      saludos..!!

  3. roxana dice:

    Q buena informacion lo que exactamente andaba buscando. GRACIAS

  4. napp dice:

    conocer un procedimiento q me permita llenar una tabla de sql bd ya creada, con un archivo de excel, pero solo deseo migrar algunos campos.

  5. Francisco dice:

    hola, sabes me marca un error llamado

    Error 7399: OLEDB Provider ‘Microsoft.Jet.OLEDB.4.0’ report an error the provider did not give any information about the error

  6. victor dice:

    buenas tardes, podrias poner un ejemplo para poner este procedimiento en el visual basic 6.0, la verdad parece ser lo que necesito pero aun soy medio novato con este tipo de lenguaje,

    saludos

  7. Edwin Ospina dice:

    Muy buen aporte y entendible, la verdad he visto este ejemplo en varios foros e inclusive en la página de soporte de Microsoft, pero me muestra un error que dice que no encuentra un archivo ISAM instalable, parece ser error de istalación de alguna herramienta del equipo…sabes como corregirlo?

  8. Mayron dice:

    Yo quiero saber como hacer cuando el archivo de excel esta en una carpeta compartida, local me funciona pero cuando uso una direccion de red para acceder a el (\\servidor3\compartida\archivo.xls
    ) me da error

  9. Arathon dice:

    Orale si funciono el codigo pero antes tuve que activar la Ad Hoc Distributed Queries por que me marcaba error

    EXEC sp_configure ‘show advanced options’, 1

    GO

    RECONFIGURE

    GO

    EXEC sp_configure ‘Ad Hoc Distributed Queries’, 1

    GO

    RECONFIGURE

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: