2011-09-12 71 views
20

Tengo una consulta que devuelve un conjunto de datos muy grande. No puedo copiarlo y pegarlo en Excel, lo que suelo hacer. He estado investigando cómo exportar directamente a una hoja de Excel. Estoy ejecutando SQL Server 2008 en un servidor que ejecuta Microsoft Server 2003. Estoy tratando de utilizar el proveedor de datos Microsoft.Jet.OLEDB.4.0 y Excel 2007. He reconstruido un pequeño código que se parece a esto de lo que He visto en ejemplos.Exportar datos de consulta SQL a Excel

INSERT INTO OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 
'Data Source=C:\Working\Book1.xlsx;Extended Properties=EXCEL 12.0;HDR=YES') 
SELECT productid, price FROM dbo.product 

Sin embargo, esto no funciona, estoy recibiendo un mensaje de error que dice

"sintaxis incorrecta cerca de la palabra clave 'SELECT'".

¿Alguien tiene alguna idea sobre cómo hacer esto o posiblemente un mejor enfoque?

+0

Es posible que también deba especificar una hoja con '[Sheet1]' Creo que – JNK

+1

Puede especificar con [Hoja1]? Ohhhh [Mierda]! – JBone

Respuesta

40

No sé si esto es lo que está buscando, pero se puede exportar los resultados a Excel como esto:

En el panel de resultados, haga clic en la celda superior izquierda para resaltar todos los registros , y luego haga clic derecho en la celda superior izquierda y haga clic en "Guardar resultados como". Una de las opciones de exportación es CSV.

le puede dar a este un tiro demasiado:

INSERT INTO OPENROWSET 
    ('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=c:\Test.xls;','SELECT productid, price FROM dbo.product') 

Por último, se puede ver en el uso de SSIS (reemplazado DTS) para la exportación de datos. Aquí hay un enlace a un tutorial:

http://www.accelebrate.com/sql_training/ssis_2008_tutorial.htm

+4

Tenga en cuenta que haga clic con el botón derecho/Guardar como ... CSV no citará campos de texto que contengan comas o líneas nuevas. Entonces, si alguno de tus datos contiene comas, terminarás con un CSV malformado. – aucuparia

+0

Guardar resultados Como no exporta encabezados de columna. – YDS

11

Si solo necesita exportar a Excel, puede usar el asistente de exportar datos. Haga clic con el botón derecho en la base de datos, Tareas-> Exportar datos.

+1

Va a poner esto en un procedimiento almacenado y tiene que ejecutarse como un evento en una página – JBone

1

que tenía un problema similar, pero con un toque - las soluciones mencionadas anteriormente trabajaron cuando el conjunto de resultados era de una consulta, pero en mi situación, he tenido consultas de selección múltiple individuales para lo cual necesitaba resultados para exportar a Excel. A continuación es sólo un ejemplo para ilustrar a pesar de lo que podía hacer una cláusula name in ...

select a,b from Table_A where name = 'x' 
select a,b from Table_A where name = 'y' 
select a,b from Table_A where name = 'z' 

El asistente me dejaba exportar el resultado de una consulta a sobresalir, pero no todos los resultados de diferentes consultas en este caso.

Cuando investigué, descubrí que podíamos inhabilitar los resultados en la cuadrícula y habilitar los resultados en el texto. Entonces, presione Ctrl + T, luego ejecute todas las declaraciones. Esto debería mostrar los resultados como un archivo de texto en la ventana de salida. Puede manipular el texto en un formato delimitado por tabulaciones para que lo importe en Excel.

También puede presionar Ctrl + Shift + F para exportar los resultados a un archivo; se exporta como un archivo .rpt que se puede abrir con un editor de texto y manipular para la importación de Excel.

Espero que esto ayude a cualquier otro que tenga un problema similar.