熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

Sql Server 數據庫表查詢結果導出為excel文件

2013-11-15 14:46:11  來源: SQL Server 

  相信大家常常會遇到將SqlServer查詢結果導出到Excel的問題如果導出的次數少直接“Save Results As”就是了;

  准備好查詢語句

  選擇數據庫啟動導入和導出向導

  選擇數據源

  選擇目標

  

  

  

  

  後續步驟不再附圖一直點“下一步”按鈕就好

  但是當要分別在每個表取樣那就相當麻煩了今天就為大家提供一個脫離office組件的可以將語句結果導出到Excel的過程希望會對大家有幫助!

  導出到Excel

  使用說明

   執行時所連接的服務器決定文件存放在哪個服務器

   遠程查詢語句中要加上數據庫名

  ALTER PROC ExportFile

  @QuerySql VARCHAR(max)

  @Server VARCHAR()

  @User VARCHAR()

  @Password VARCHAR()

  @FilePath NVARCHAR() = c:ExportFilexls

  AS

  DECLARE @tmp VARCHAR() = [##Table + CONVERT(VARCHAR()NEWID())+]

  BEGIN TRY

  DECLARE @Sql VARCHAR(max)@DataSource VARCHAR(max)=;

  判斷是否為遠程服務器

  IF @Server <> AND @Server <>

  SET @DataSource = OPENDATASOURCE(SQLOLEDBData Source=+@Server+;User ID=+@User+;Password=+@Password+)

  將結果集導出到指定的數據庫

  SET @Sql = REPLACE(@QuerySql from into +@tmp+ from + @DataSource)

  PRINT @Sql

  EXEC(@Sql)

  DECLARE @Columns VARCHAR(max) = @Data NVARCHAR(max)=

  SELECT @Columns = @Columns + + name +獲取列名(xp_cmdshell導出文件沒有列名)

  @Data = @Data + Convert(Nvarchar[ + name +])將結果集所在的字段更新為nvarchar(避免在列名和數據union的時候類型沖突)

  FROM tempdbsyscolumns WHERE object_id = OBJECT_ID(tempdb+@tmp)

  SELECT @Data = SELECT + SUBSTRING(@DataLEN(@Data)) + FROM + @tmp

  SELECT @Columns = Select + SUBSTRING(@ColumnsLEN(@Columns))

  使用xp_cmdshell的bcp命令將數據導出

  EXEC sp_configure xp_cmdshell

  RECONFIGURE

  DECLARE @cmd NVARCHAR() = bcp " + @Columns+ Union All + @Data+" queryout + @FilePath + c T

  PRINT @cmd

  exec sysxp_cmdshell @cmd

  EXEC sp_configure xp_cmdshell

  RECONFIGURE

  EXEC(DROP TABLE + @tmp)

  END TRY

  BEGIN CATCH

  處理異常

  IF OBJECT_ID(tempdb+@tmp) IS NOT NULL

  EXEC(DROP TABLE + @tmp)

  EXEC sp_configure xp_cmdshell

  RECONFIGURE

  SELECT ERROR_MESSAGE()

  END CATCH

  先不要著急使用該版本是基於xp_cmdshell的因為要創建文件所以要保證你的用戶能有文件管理的權限通常簡單點的方法就是將sql server的啟動用戶設置為本地系統用戶

  好了現在我們來執行看看

  查詢分析器連接哪個服務器文件就在哪個服務器上

  本地導出

  EXEC dboExportFile @QuerySql = select * from sysobjects varchar(max)

  @Server = varchar()

  @FilePath = Nc:objectsxls nvarchar()

  遠程導出

  EXEC dboExportFile @QuerySql = select * from mastersysobjects varchar(max)

  @Server = varchar()

  @User = sa varchar()

  @Password = sa varchar()

  @FilePath = Nc:objectsxls nvarchar()

  執行結果如下顯示導出條數就沒有報錯再看看你的C盤多了個文件就大功告成了


From:http://tw.wingwit.com/Article/program/SQLServer/201311/22304.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.