2013-03-14 51 views
0

想要使用T-SQL將數據從SQL Server 2008中的表導出到Windows 7上的excel文件。 通過搜索互聯網上,許多人都試圖如下:如何使用T-SQL將數據從表格導出到SQL Server 2008上的Excel?

Insert into openrowset ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=c:\MyExcel.xls;','SELECT * FROM [Sheet1$]') 
select * FROM mytab 

我想這一點。我不工作。

也可以嘗試如下:

sqlcmd -S myServer -d myDB -E -Q "select * from Tab" -o "MyData.csv" -h-1 -s"," 

還好,沒有錯誤,但沒有文件創建。也不確定這是否可以在T-SQL中運行。

這種情況下的任何更好的解決方案?

回答

0
  1. 使用導出嚮導來創建一個SSIS包。選擇[第一行是列名],Excel目標,你的源表或查詢
  2. 在最後一步中,SSIS包保存爲文件
  3. 使用sp_configure啓用xp_cmdshell的
  4. 使用T-SQL腳本來執行exec(」 dtexec/file:')
0

大容量複製程序= BCP

MSDN:http://msdn.microsoft.com/en-us/library/ms162802.aspx

用法示例:

bcp AdventureWorks2012.Sales.Currency out "Currency Types.dat" -T -c 

這是一個命令行util的,所以你需要,如果你要使用命令外殼功能從SQL Server執行此操作。我很好奇,如果您使用的sqlcmd試圖潛在地使用bcp。請注意直接從SQL創建文件,如果您發送到某些位置,SQL帳戶可能無法訪問,則您將遇到權限問題。首先要記住運行TSQL的機器不是服務器,因此使用本地路徑時所保存的位置與運行腳本的服務器相關,而不是通過TCP/IP到SQL Server運行腳本的用戶。我認爲SQL Server文件創建的默認值是服務器上SQL Server'data'位置的根安裝。喜歡的東西:

C:\Program Files\Microsoft SQL Server\(version current is: 110)\Data 
+0

謝謝。如何在TSQL中運行它,而不是在OS命令行窗口中運行? – KentZhou 2013-03-14 17:46:54

+0

在配置選項中啓用XP_Cmdshell。 http://msdn.microsoft.com/en-us/library/ms190693.aspx – djangojazz 2013-03-14 17:49:37

+0

謝謝。得到了與bcp一起工作的xp_cmdshell。但有問題:不能使用bcp生成標題(列名)。 – KentZhou 2013-03-14 18:43:11