SQL Server表中資料按條件批量導出為多個Excel檔案是本文我們主要要介紹的内容,在一次SQL Server資料庫的操作中,需要将某個有數十萬行資料的表按類别導出為xls檔案,每個類别一個xls。将資料表中的資料導出并儲存為xls簡單,用 SSIS或者查詢出來之後另存為都可以。但是,這個表中的分類有數百個,如果一個個用SSIS或者查詢另存為的話,工作量巨大。前思後想,想到了用 while循環查詢,并用bcp導出的方法。
下面是相關代碼:
--聲明需要的變量 declare @sql varchar(600),@TypeID int --确認第一個分類的ID select @TypeID=min(TypeID) from t_TestTable --當存在滿足分類ID的記錄時進行處理 while exists(select 1 from t_TestTable where [email protected]) begin --拼湊需要執行的語句 set @sql='bcp "select * from (select'+'''列名1'''+' AS 列名1,'+'''列名2'''+' AS 列名2,'+'''列名3'''+' AS 列名3'--在xls檔案中顯示列名 set @[email protected]+' union all select 列名1,列名2,列名3 from t_TestTable where TypeID='+cast(@TypeID as varchar(8))+')a" queryout "F:datafileTypeData'+cast(@TypeID as varchar(8))+'.xls" -c -q -S"ServerName" -U"sa" -P"SAPASSWORD" -d"DBName"'--查詢滿足條件的記錄并儲存到xls檔案中 --使用xp_cmdshell系統存儲過程執行拼湊好的語句(需要使用進階選項開關預先開啟cmdshell元件) exec master..xp_cmdshell @sql --獲得下一個分類的ID(分類ID是不連續的) select @TypeID=isnull(min(TypeID),@TypeID+1) from t_TestTable where TypeID>[email protected]+1 end |