有時候需要一次性將SQL Server中的數據導出給其他部門的也許進行關聯或分析,這種需求對於SSIS來說當然是非常簡單,但很多時候僅僅需要一次性導出這些數據而建立一個SSIS包就顯得小題大做,而SQL Server的導入導出工具其中BUG還是蠻多的,最簡單的辦法是BCP。
數據導出為XML
在SQL Server 2005之後提供了一個for xml子句在關系數據庫中原生支持XML。通過該命令可以將二維關系結果集轉換為XML,通過BCP就可以將數據存為XML了。
例如下面的數據:
我們可以通過如下BCP命令(注意不能有回車)將其導出為XML文件,並保存:
BCP "SELECT TOP 30 [bom_no],[LEVEL] FROM [sqladmin].[dbo].[bom] FOR XML path,TYPE, ELEMENTS ,ROOT('RegionSales')" QUERYOUT "d:\temp\test.XML" -c -t -T -S localhost
執行完成後查看Test.XML文件,如下圖所示。可以看到文件格式非常清晰,很容易就可以導入到其他系統了。
數據導出為JSON
如果希望將SQL Server中數據導出為Json,雖然這種操作在應用程序裡已經有非常成熟的方法,但SQL Server其實並沒有原生支持這種方式(小道消息,下個版本會支持)。我推薦使用這篇帖子的方式:http://jaminquimby.com/servers/95-sql/sql-2008/145-code-tsql-convert-query-to-json來做。將該帖子所提供的存儲過程建立完成後,使用如下BCP命令:
執行完成後,得到結果如下圖: