none
Error en la importación de Excel a SQL Server 2005 RRS feed

  • Pregunta

  • Hola,

    llevo un par de días intentando importar un excel a SQL Server 2005.

    Primero probé con un código que ya me habia funcionado en otras ocasiones (pero en otros equipos), y como ví que me  daba error comencé a mirar en distintos foros otra formas de realizar este proceso.

    He intentado hacerlo mediante OPENROWSET y OPENDATASOURCE, y también con servidores vinculados, con una sentencia sencilla como esta:

    SELECT xl.* FROM OrderValues_EXCEL32...indicadores$ AS xl

    y también con OPENQUERY.

    De cualquiera de las formas el error era siempre el mismo (solo varía el nombre del servidor, que cuando intento hacerlo mediante openrowset/opendatasource aparece "null":

    Msg 7302, Level 16, State 1, Line 61
    Cannot create an instance of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "OrderValues_EXCEL32".

    He probado todas las posibles soluciones que he visto en los foros, en hilos que ya estaban abiertos, y ninguna de esas soluciones me sirve. Por último, he intentado ejecutar esto mismo a través de una SSIS, para probar con un *.xls y ponerlo todo en versión 32 bit, pero aparece nuevamente el error.

    Donde trabajo actualmente, importan los excel a traves de las SSIS, por medio de OLE DB, pero a veces hay que estyar cambiando de manera manual el tipo de dato (igual viene como string, pero como un tipo de string distinto) y eso puede llegar a ser engorroso. También me serviría si alguien supiera como automatizar el proceso de cambio de tipo de dato a traves de SSIS.

    Espero respuesta y muchas gracias de antemano!!

    jueves, 9 de marzo de 2017 11:54

Respuestas

Todas las respuestas

  • Hola.

    Sobre el segundo punto de tu post, en cuanto a tipo de datos, a mi me ayudaron, en su momento, los siguientes artículos:

    Working with SSIS Data Types

    SQL Server Integration Services Data Type Conversion Testing

    Lo importante es ajustar el tipo de dato en el momento de cargarlo, mediante una conversión a realizar directamente en el componente en SSIS que permite eso. En el primer artículo dan buena explicación de esto.

    Saludos,


    Guillermo Taylor F.
    MVP Data Platform & IT Pro
    Mi Blog

    jueves, 9 de marzo de 2017 13:58
  • Muchas gracias por tu respuesta guillermotaylor, me ha servido de mucha ayuda, ya que  aunque tengo bastante experiencia en SQL, soy bastante nueva con SSIS...

    Una pregunta mas...habría alguna forma de hacer que aunque cambie el documento excel que enlazo, el nombre de los campos se pueda poner estándar para que al cambiar el documento no haya que rehacer todo??

    Gracias de nuevo!

    viernes, 10 de marzo de 2017 7:18
  • Hola.

    No. Si en el archivo Excel el nombre que va asociado a la columna con la cual debes "mapear" la columna en tu base de datos cambia, debes cambiarle el nombre.

    Lo ideal es que el "esquema" del archivo Excel no cambie, pero si su contenido o los datos a insertar.

    Saludos,


    Guillermo Taylor F.
    MVP Data Platform & IT Pro
    Mi Blog

    lunes, 13 de marzo de 2017 20:07
  • Hola,

    Si, ya vi que no habia manera, por lo que para evitar tener que hacer la conversión de datos cada vez que cambia el Excel, creé dos Data Flow distintos, en el primero se carga el Excel que se desee a un Excel genérico de formato .xls para poder vaciarlo en cada ejecucioón, y en el segundo Data Flow, cojo los datos del Excel genérico, hago la conversión y por último, lo almaceno en la BBDD.

    Sé que no es lo más práctico, pero aun así es mejor que tener que indicar 1 a 1 las conversiones cada vez que se pasa un excel nuevo, o con alguna cabecera cambiada.

    Muchas gracias por tus respuestas!

    Y si alguien pudiera explicarme el porqué del error que me aparecia en SQL, me sería de gran ayuda, ya que es algo que me trae de cabeza...


    SarayAC

    miércoles, 15 de marzo de 2017 9:28