none
Select a Excel sql 2012 RRS feed

  • Pregunta

  • Estimados.

    Tengo la necesidad de que el resultado de un Select dejarlo en un archivo en Excel.

    Saludos Cordiales.


    DBA SQL Server Santiago/Chile

    miércoles, 30 de noviembre de 2016 15:26

Respuestas

  • Hola, podrías instalar ACE  de 64 bits

    https://www.microsoft.com/en-us/download/details.aspx?id=13255

     , es probable que tu sql sea de la versión de 64 bits, si le das 

    select @@version lo comprobarías.

    JET corre a 32 bits por lo que no va a funcionar con tu versión de SQL

    y luego de instalar deberías hacer una query como esta

    SELECT * --INTO #MITABLA
    FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
        'Excel 12.0 Xml;HDR=YES;Database=D:\CARPETA_EXCEL\excel_prueba.xlsx',
        'SELECT * FROM [Hoja1$]');


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.





    • Editado Augusto1982 miércoles, 30 de noviembre de 2016 17:13
    • Propuesto como respuesta Joyce_ACModerator miércoles, 30 de noviembre de 2016 18:49
    • Marcado como respuesta Joyce_ACModerator miércoles, 7 de diciembre de 2016 15:44
    miércoles, 30 de noviembre de 2016 17:10

Todas las respuestas

  • CMAPM,

    Podrías crear un servidor vinculado (Linked Servers) o utilizar OPENROWSET, algo como:

    INSERT INTO OPENROWSET 
       ('Microsoft.Jet.OLEDB.4.0', 
       'Excel 8.0; Database=c:\NombreArchivo.xls;','SELECT Col1, Col2 FROM dbo.NombreTabla')

    Debes cuidar en especificar de manera correcta el nombre del proveedor


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 30 de noviembre de 2016 15:41
  • Ejecuto esto:

    INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0','Excel 8.0; Database=c:\Test.xls;','select nombre from Tabla')

    Me marca error:

    Msg 102, Level 15, State 1, Line 1
    Sintaxis incorrecta cerca de ')'.


    DBA SQL Server Santiago/Chile

    miércoles, 30 de noviembre de 2016 15:47
  • Ahora probe:

    SELECT *
    FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\Test.xlsx','select nombre from Tabla');

    No me  da error de sintaxis.

    Pero me devuelve:

    No se puede crear una instancia del proveedor OLE DB "Microsoft.Jet.OLEDB.4.0" para el servidor vinculado "(null)".

    Entiendo que debo instalarlo, o mejor instalo Microsoft.ACE.OLEDB.12.0

    Es un servidor de producción no quisiera instalar algo que afecte.


    DBA SQL Server Santiago/Chile

    miércoles, 30 de noviembre de 2016 16:22
  • Hola, podrías instalar ACE  de 64 bits

    https://www.microsoft.com/en-us/download/details.aspx?id=13255

     , es probable que tu sql sea de la versión de 64 bits, si le das 

    select @@version lo comprobarías.

    JET corre a 32 bits por lo que no va a funcionar con tu versión de SQL

    y luego de instalar deberías hacer una query como esta

    SELECT * --INTO #MITABLA
    FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
        'Excel 12.0 Xml;HDR=YES;Database=D:\CARPETA_EXCEL\excel_prueba.xlsx',
        'SELECT * FROM [Hoja1$]');


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.





    • Editado Augusto1982 miércoles, 30 de noviembre de 2016 17:13
    • Propuesto como respuesta Joyce_ACModerator miércoles, 30 de noviembre de 2016 18:49
    • Marcado como respuesta Joyce_ACModerator miércoles, 7 de diciembre de 2016 15:44
    miércoles, 30 de noviembre de 2016 17:10