none
Duda con la Importación de un Excel a SQL Mediante Transact RRS feed

  • Pregunta

  • Buen día, necesito un poco de ayuda en esto, desearía que me la pudieran brindar, estoy en esta situación, tengo un archivo excel que actualmente yo exporto mediante el formato excel8, este archivo ahora necesito importarlo hacia mi Base de datos por el cual realizo un openrowset pero al hacer este select hacia el excel me "bota" como resultado muchas columnas con valores nulos todas.

    Por ejemplo, en el cual los valores nulos son columnas "F25,F26, hasta el F52. no tengo idea de porqué

     

    1 2 F17 F18 F19 F20 F21 F22 F23 ... F52
    0 0 NULL NULL NULL NULL NULL NULL NULL 
    0 0 NULL NULL NULL NULL NULL NULL NULL 
    
    
    
    select 
    *   
     from          
    openrowset('Microsoft.Jet.OLEDB.4.0'
    , 'Excel 8.0;Database=\\fileserver\probando_plantilla3.xls;HDR=YES;IMEX=1'
    , 'select *                     
    from [Sheet1$]') as excel

     

     

     


    Lima - Perú Rafo*




    lunes, 30 de mayo de 2011 20:42

Respuestas

Todas las respuestas

  • Colocalo de esta forma

    select * from     
    openrowset
    (
    'Microsoft.Jet.OLEDB.4.0',
    'Data Source=\\fileserver\probando_plantilla3.xls; Extended Properties="Excel 12.0 Xml; HDR=YES; IMEX=1"',
    'select * from [Sheet1$]'
    ) as excel
    

    Connection strings for Excel 2007

     


    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    lunes, 30 de mayo de 2011 21:52
  • El office que yo tengo es 2003, cuando "coloco" el código que me referencias, me indica un error.

    ..


    Lima - Perú Rafo*
    lunes, 30 de mayo de 2011 22:19
  • Hola.

    ¿Podríamos ver ese Excel? ¿Qué versión de SQL Server tienes? Independientemente de esas dos cuestiones, yo probaría lo siguiente:

    SELECT * 
    FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
    'Data Source=\\fileserver\probando_plantilla3.xls;Extended Properties=EXCEL 5.0')...[Sheet1$]
    

    Si no funciona, cambia "EXCEL 5.0" por "EXCEL 8.0".


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    martes, 31 de mayo de 2011 4:03
    Moderador
  • SQL 2005 enterprise, probe su código pero me sigue saliendo esas columnas de más ..
    Lima - Perú Rafo*
    martes, 31 de mayo de 2011 13:26
  • Es probable que esas columnas tengan contenido, aunque aparezcan vacías en la hoja de cálculo. Prueba a seleccionarlas y eliminar dichas columnas.

    Otra opción también es limitar las columnas devueltas: si sabes que los valores están en las tres primeras columnas (por ejemplo), podrías hacer algo como

    SELECT *  
    FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0'
    , 'Excel 8.0;Database=\\fileserver\probando_plantilla3.xls;HDR=YES;IMEX=1'
    , 'SELECT * FROM [Sheet1$A:C]') as excel

    martes, 31 de mayo de 2011 13:48
  • Proba importando datos en el SQL Server Management Studio, seleccionando la base de datos a la que vas a importar y seleccionando taks>import data

    Como fuente seleccionas al archivo excel y destino tu base de datos.

    Es mucho más fácil que usar OPENROWSET.


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com
    martes, 31 de mayo de 2011 14:03
  • lo sé, pero como comentaba, necesariamente lo tengo que hacer desde openrowset, ya que es un stored lo que pretendo desarrollar.
    Lima - Perú Rafo*
    martes, 31 de mayo de 2011 14:54
  • Creo que igual yo usaria el package con ayuda del xp_cmdshell y el DTEXEC para importar datos desde un procedimiento:

    EXEC xp_cmdshell 'dtexec /f "C:\UpsertData.dtsx"

    Y linked servers a Excel ?:

    http://support.microsoft.com/kb/306397

     


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com
    martes, 31 de mayo de 2011 15:58
  • Si coloca el el error que lanza podriamos interpretarlo mejor y darte una mejor opcion
    Quitale la parte que dice data source y colocalo de esta forma, para ver como se comporta.
    select * from   
    openrowset
    (
    'Microsoft.Jet.OLEDB.4.0',
    '\\fileserver\probando_plantilla3.xls; Extended Properties="Excel 12.0 Xml; HDR=YES; IMEX=1"',
    'select * from [Sheet1$]'
    ) as excel
    
    Si no resulta quitale esta parte
     
    select * from   
    openrowset
    (
    'Microsoft.Jet.OLEDB.4.0',
    '\\fileserver\probando_plantilla3.xls"',
    'select * from [Sheet1$]'
    ) as excel
    
     
    El objectivo es colocar el codigo lo mas compacto posible hasta que funciones y luego ir agregandole partes.

    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    martes, 31 de mayo de 2011 22:45
  • Independientemente de la version de tu SQL Server, que ya nos has comentado, que modelo de maquina tienes, que tipo de procesador es?, y dinos la version y SP del sistema operativo.
     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    miércoles, 1 de junio de 2011 6:34