【问题标题】:How do you transfer or export SQL Server 2005 data to Excel如何将 SQL Server 2005 数据传输或导出到 Excel
【发布时间】:2008-09-17 21:14:24
【问题描述】:

我有一个简单的 SQL“选择”查询,我想将结果转储到 Excel 文件中。我只能保存为 .csv 并转换为 .xls 会产生一些超级丑陋的输出。无论如何,据我所知(使用谷歌)这似乎并不那么简单。任何帮助将不胜感激。

【问题讨论】:

  • 导出到文本文件(SQL Server Management Studio 中的“将结果另存为”选项)并将该文件导入 Excel(从文本中“获取外部数据”)。我在使用 SSIS 等其他方法时遇到了问题。 “来自连接的外部数据”,因为它没有提供运行查询的选项。
  • 任何想要深入解答这个问题的人,请看这个stackoverflow.com/questions/9086880/…

标签: sql sql-server


【解决方案1】:

SSIS 做这样的事情是轻而易举的事情,而且非常直接(这正是它的用途)。

  1. 在 SQL Management Studio 中右键单击数据库
  2. 转到任务,然后导出数据,然后您将看到一个易于使用的向导。
  3. 您的数据库将是源,您可以输入您的 SQL 查询
  4. 选择 Excel 作为目标
  5. 在向导结束时运行它

如果您愿意,您也可以保存 SSIS 包(向导末尾有一个选项),以便您可以按计划或其他方式执行此操作(如果需要,甚至可以打开和修改以添加更多功能) .

【讨论】:

  • 完美!这对我帮助很大。
  • 太棒了!这应该被标记为答案。很好的解决方案。
  • 猜测 SSIS 代表 SQL Server 集成服务。如何启动此工具?程序中没有这样的东西。
  • @BetaRide 按照步骤概述的方式启动它: 1) 在 SQL Management Studio 中右键单击数据库 2) 转到任务然后导出数据,然后您将看到一个易于使用向导。
  • @RyanFarley 通过使用这个我将查询结果导入到 excel 文件中。查询结果会自动更新吗?在数据选项卡下的excel“刷新”按钮上对结果没有影响
【解决方案2】:

使用 Excel 中的“外部数据”。它可以使用 ODBC 连接从外部源获取数据:数据/获取外部数据/新数据库查询

这样,即使数据库中的数据发生变化,也可以轻松刷新。

【讨论】:

  • 如果运行excel的电脑无权访问数据库,这个就不行了。
  • @Shane,是的,打开它后一切都会好很多...... ;-)
  • 呵呵,对。我的意思是如果运行 Excel 的任何计算机都无法访问 SQL Server。在这种情况下,您需要使用 SSIS 解决方案。
  • 如果您想要来自未安装 excel 的生产数据库服务器的数据,这不是一个好方法。 SSIS 解决方案要好得多。
  • @MSleman:你不需要在数据库服务器上安装 Excel 来获取桌面上的数据
【解决方案3】:

我找到了一种将查询结果从 SQL Server Management Studio 2005 导出到 Excel 的简单方法。

1) 选择菜单项查询 -> 查询选项。

2) 在结果 -> 网格 -> 复制或保存结果时包括列标题中设置复选框。

之后,当您选择全部并复制查询结果时,您可以将它们粘贴到 Excel 中,并且会出现列标题。

【讨论】:

    【解决方案4】:

    See this


    这是迄今为止从 SQL 导出到 excel 的最佳帖子:

    http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

    引用用户madhivanan,

    除了使用 DTS 和导出向导外,我们还可以使用此查询将数据从 SQL Server2000 导出到 Excel

    创建一个名为 testing 的 Excel 文件,其标题与表列的标题相同,并使用这些查询

    1 从 SQL Server 表中导出数据到现有的 EXCEL 文件

    insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
        'Excel 8.0;Database=D:\testing.xls;', 
        'SELECT * FROM [SheetName$]') select * from SQLServerTable
    

    2 将数据从 Excel 导出到新的 SQL Server 表

    select * 
    into SQLServerTable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
        'Excel 8.0;Database=D:\testing.xls;HDR=YES', 
        'SELECT * FROM [Sheet1$]')
    

    3 将数据从 Excel 导出到现有的 SQL Server 表

    Insert into SQLServerTable Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
        'Excel 8.0;Database=D:\testing.xls;HDR=YES', 
        'SELECT * FROM [SheetName$]')
    

    4 如果不想提前创建EXCEL文件,想导出数据,使用

    EXEC sp_makewebtask 
        @outputfile = 'd:\testing.xls', 
        @query = 'Select * from Database_name..SQLServerTable', 
        @colheaders =1, 
        @FixedFont=0,@lastupdated=0,@resultstitle='Testing details'
    

    (现在您可以找到带有表格格式数据的文件)

    5 要将数据导出到带有标题(列名)的新 EXCEL 文件,请创建以下过程

    create procedure proc_generate_excel_with_columns
    (
        @db_name    varchar(100),
        @table_name varchar(100),   
        @file_name  varchar(100)
    )
    as
    
    --Generate column names as a recordset
    declare @columns varchar(8000), @sql varchar(8000), @data_file varchar(100)
    select 
        @columns=coalesce(@columns+',','')+column_name+' as '+column_name 
    from 
        information_schema.columns
    where 
        table_name=@table_name
    select @columns=''''''+replace(replace(@columns,' as ',''''' as '),',',',''''')
    
    --Create a dummy file to have actual data
    select @data_file=substring(@file_name,1,len(@file_name)-charindex('\',reverse(@file_name)))+'\data_file.xls'
    
    --Generate column names in the passed EXCEL file
    set @sql='exec master..xp_cmdshell ''bcp " select * from (select '+@columns+') as t" queryout "'+@file_name+'" -c'''
    exec(@sql)
    
    --Generate data in the dummy file
    set @sql='exec master..xp_cmdshell ''bcp "select * from '+@db_name+'..'+@table_name+'" queryout "'+@data_file+'" -c'''
    exec(@sql)
    
    --Copy dummy file to passed EXCEL file
    set @sql= 'exec master..xp_cmdshell ''type '+@data_file+' >> "'+@file_name+'"'''
    exec(@sql)
    
    --Delete dummy file 
    set @sql= 'exec master..xp_cmdshell ''del '+@data_file+''''
    exec(@sql)
    

    创建过程后,通过提供数据库名、表名和文件路径来执行它:

    EXEC proc_generate_excel_with_columns 'your dbname', 'your table name','your file path'
    

    这是一个惊人的 29 页,但那是因为其他人展示了各种其他方式以及人们就如何做到这一点提出类似这样的问题。

    完全关注该主题并查看人们提出的各种问题以及如何解决这些问题。我只是略读一下就学到了很多知识,并使用其中的一部分来获得预期的结果。

    更新单个单元格

    还有一位成员 Peter Larson 发布了以下内容: 我认为这里缺少一件事。能够导出和导入 Excel 文件真是太好了,但是更新单个单元格怎么样?还是一系列单元格?

    这是你如何管理它的原则

    update OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=c:\test.xls;hdr=no', 
    'SELECT * FROM [Sheet1$b7:b7]') set f1 = -99
    

    您还可以使用以下方法将公式添加到 Excel:

    update OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=c:\test.xls;hdr=no', 
    'SELECT * FROM [Sheet1$b7:b7]') set f1 = '=a7+c7'
    

    使用 T-SQL 导出列名

    Mladen Prajdic 成员也有一篇关于如何做到这一点的博客文章here

    参考:www.sqlteam.com(顺便说一句,对于希望从 SQL Server 获得更多信息的人来说,这是一个很棒的博客/论坛)。

    【讨论】:

    【解决方案5】:

    如果您正在寻找临时项目,而不是要放入 SSIS 的项目。从 SSMS 中只需突出显示结果网格,复制,然后粘贴到 excel 中,它并不优雅,但可以工作。然后你可以保存为本机 .xls 而不是 .csv

    【讨论】:

    • 我正在滚动查看是否有人提供了此选项,因为它显然是最简单的
    【解决方案6】:

    此视频将逐步向您展示如何将数据导出到 Excel。对于需要导出到 Excel 的“一次性”问题,这是一个很好的解决方案:
    Ad-Hoc Reporting

    【讨论】:

    • 优秀的视频。非常感谢:)
    【解决方案7】:

    在 Excel 中进行操作要容易得多。!! 打开 Excel 数据>导入/导出数据>导入数据 在文件名旁边单击“新源”按钮 在欢迎使用数据连接向导中,选择 Microsoft SQL Server。 点击下一步。 输入服务器名称和凭据。 从下拉列表中,选择包含您需要的表的数据库。 选择你的桌子然后下一步..... 如果您愿意,请输入描述,然后单击完成。 完成并返回 Excel 后,只需单击“确定” 很简单。

    【讨论】:

      【解决方案8】:

      创建excel数据源并插入值,

      insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
      'Excel 8.0;Database=D:\testing.xls;', 
      'SELECT * FROM [SheetName$]') select * from SQLServerTable
      

      更多信息可在此处获得 http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

      【讨论】:

        【解决方案9】:

        您总是可以使用 ADO 将结果从记录集对象写入工作表单元格

        【讨论】:

          【解决方案10】:

          一个方便的工具Convert SQL to Excel无需编程即可将SQL表或SQL查询结果转换为Excel文件。

          主要特点 - 将 SQL 表转换/导出为 Excel 文件 - 将多个表(多个查询结果)转换/导出到多个 Excel 工作表。 - 允许灵活的 TSQL 查询,可以有多个 SELECT 语句或其他复杂的查询语句。

          B.问候, 亚历克斯

          【讨论】:

            【解决方案11】:

            有多种工具可以从 SQL Server 导出/导入到 Excel。

            Google 是你的朋友 :-)

            我们在这里使用 DbTransfer(它也是可以将完整数据库导出到 Excel 文件的一种):http://www.dbtransfer.de/Products/DbTransfer。

            我们之前用过sql server的openrowset功能,但一直不太满意,因为它不太好用,而且功能和速度都不够……

            【讨论】:

              【解决方案12】:

              试试“导入和导出数据(32 位)”工具。安装 MS SQL Management Studio Express 2012 后可用。

              使用此工具,选择数据库、表或插入您自己的 SQL 查询并选择目标(例如 MS Excel 文件)非常容易。

              【讨论】:

                【解决方案13】:

                您可以右键单击 SQL Server 中的结果网格,然后选择另存为 CSV。你可以然后你可以将它导入Excel。

                Excel 为您提供导入向导,确保您选择逗号分隔。当我需要将 50k+ 记录导入 excel 时,它对我来说很好。

                【讨论】:

                  【解决方案14】:

                  检查一下。

                  Query -> Query Options.
                  
                  Results -> Grid -> Include column headers when copying or saving the results
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2012-09-16
                    • 1970-01-01
                    • 2010-09-05
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-03-09
                    • 1970-01-01
                    相关资源
                    最近更新 更多