将sql查询输出存储在excel文件中

时间:2009-09-15 05:14:29

标签: sql-server

将sql查询输出存储在excel文件中

3 个答案:

答案 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。