将sql查询输出存储在excel文件中
答案 0 :(得分:1)
在SQlTip文章中,有人建议采用以下方法。您可以找到原始文章here.
可以通过多种方式将数据从SQL Server导出到Excel。其中一些选项包括数据转换服务(DTS),SQL Server集成服务(SSIS)和批量复制(BCP)。数据转换服务(SQL Server 2000)和SQL Server Integration Services(SQL Server 2005)提供了一个GUI,可以拖放窗口小部件每个选项都有优点和缺点,但都可以完成这项工作。这只是您使用工具和满足需求的最佳解决方案的舒适程度的问题。
直接通过T-SQL语言提供的另一个选项是OPENROWSET命令(SQL Server 2000和SQL Server 2005)。可以在任何存储过程,脚本或来自T-SQL的SQL Server作业中直接调用此命令。下面概述了完整的语法:
OPENROWSET
( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password'
| 'provider_string' }
, { [ catalog. ] [ schema. ] object
| 'query'
}
| BULK 'data_file' ,
{ FORMATFILE = 'format_file_path' [ <bulk_options> ]
| SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} )
<bulk_options> ::=
[ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]
[ , ERRORFILE = 'file_name' ]
[ , FIRSTROW = first_row ]
[ , LASTROW = last_row ]
[ , MAXERRORS = maximum_errors ]
[ , ROWS_PER_BATCH = rows_per_batch ]
来源 - SQL Server 2005联机丛书
以下是在SQL Server 2005或2000中将作业名称和日期写入Excel电子表格的Sheet1的简单示例:
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\testing.xls;',
'SELECT Name, Date FROM [Sheet1$]')
SELECT [Name], GETDATE() FROM msdb.dbo.sysjobs
GO
使用OPENROWSET命令会产生两个警告。第一个警告是需要使用正确的工作表和列将Excel电子表格用作所需目录中的模板。没有这个,你会收到一条错误信息。第二个警告是,必须使用SQL Server 2005表面区域配置实用程序启用OPENROWSET命令。注 - SQL Server 2000不需要此步骤。使用循环示例,您可以复制并粘贴Excel电子表格并根据需要加载数据。
虽然上面的示例非常简单,但您可以将此简单示例集成到代码中。例如,如果您需要以相同的格式写出大量报告,则可以在记录上循环(WHILE循环或Cursor),并根据名称或报告类型将它们写入不同的Excel电子表格。此外,您可以将此代码与SQL Server 2000邮件或数据库邮件(SQL Server 2005)集成,并且只需很少的工作就可以将结果邮寄给用户,并使用T-SQL完全构建该过程。
答案 1 :(得分:0)
在SQL Server 2008 Management Studio中,您可以右键单击结果窗格并选择“将结果另存为...”,然后选择“CSV - 逗号分隔值文件”。
可以在任何Excel版本中轻松打开此CSV文件。
在SQL Server Management Studio(版本2005及更高版本)中,您还可以右键单击结果窗格,选择“全选”,然后选择“复制”并将这些值粘贴到打开的Excel工作表中。
马克
答案 2 :(得分:0)
大多数数据库引擎都有导出选项 - &gt;导出为CVS文件。
Excel可以读取csv个文件,您可以使用“另存为”按钮轻松地将此csv文件转换为Excel文件。
但是,像mysql这样的数据库并直接输出excel文件。
如果你想从你的sql输出excel文件,我建议你从查询中输出一个csv文件,然后再使用excel。