在SQL Server中將數(shù)據(jù)導(dǎo)出為XML和Json的方法
有時(shí)候需要一次性將SQL Server中的數(shù)據(jù)導(dǎo)出給其他部門的也許進(jìn)行關(guān)聯(lián)或分析,這種需求對(duì)于SSIS來說當(dāng)然是非常簡(jiǎn)單,但很多時(shí)候僅僅需要一次性導(dǎo)出這些數(shù)據(jù)而建立一個(gè)SSIS包就顯得小題大做,而SQL Server的導(dǎo)入導(dǎo)出工具其中BUG還是蠻多的,最簡(jiǎn)單的辦法是BCP。
數(shù)據(jù)導(dǎo)出為XML
在SQL Server 2005之后提供了一個(gè)for xml子句在關(guān)系數(shù)據(jù)庫(kù)中原生支持XML。通過該命令可以將二維關(guān)系結(jié)果集轉(zhuǎn)換為XML,通過BCP就可以將數(shù)據(jù)存為XML了。
例如下面的數(shù)據(jù):

我們可以通過如下BCP命令(注意不能有回車)將其導(dǎo)出為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

執(zhí)行完成后查看Test.XML文件,如下圖所示。可以看到文件格式非常清晰,很容易就可以導(dǎo)入到其他系統(tǒng)了。

數(shù)據(jù)導(dǎo)出為JSON
如果希望將SQL Server中數(shù)據(jù)導(dǎo)出為Json,雖然這種操作在應(yīng)用程序里已經(jīng)有非常成熟的方法,但SQL Server其實(shí)并沒有原生支持這種方式(小道消息,下個(gè)版本會(huì)支持)。我推薦使用這篇帖子的方式:http://jaminquimby.com/servers/95-sql/sql-2008/145-code-tsql-convert-query-to-json來做。將該帖子所提供的存儲(chǔ)過程建立完成后,使用如下BCP命令:

執(zhí)行完成后,得到結(jié)果如下圖:

相關(guān)文章
眾所周知,在M$sql中有個(gè)絕對(duì)是網(wǎng)絡(luò)安全中的隱患的帳號(hào)sa,系統(tǒng)管理員 (sa),默認(rèn)情況下,它指派給固定服務(wù)器角色 sysadmin,并不能進(jìn)行更改。這個(gè)sa一般情況下是既不可以更改名稱,也不可以刪除,呵呵,有點(diǎn)雞肋的味道,棄置可惜,食之無味。裝上sql2000之后,感覺怪怪的,放著這個(gè)后門在,始終都不放心,擔(dān)心有一天被人破出密碼,那偶的電腦不就完拉??赡苣慊卣f設(shè)個(gè)強(qiáng)壯點(diǎn)的密碼,這個(gè)辦法是可行,可不是長(zhǎng)久之記,所謂斬草要除根,要是把sa給刪拉就不用擔(dān)心那些"黑客"暴力破解拉。2008-04-04
SQL Server中T-SQL 數(shù)據(jù)類型轉(zhuǎn)換詳解
T-SQL提供了兩個(gè)顯示轉(zhuǎn)換的函數(shù):CAST函數(shù)和CONVERT函數(shù)。今天我們就來相信探討下2018-02-02
SQL Server ltrim(rtrim()) 去不掉空格的原因分析
這篇文章主要介紹了SQL Server ltrim(rtrim()) 去不掉空格的原因分析,原因主要是因?yàn)橹虚g存在回車符或者換行符,所以要先將此符號(hào)替換掉,具體示例代碼大家參考下本文2017-08-08
sqlserver數(shù)據(jù)庫(kù)中的表、字段sql語句
在數(shù)據(jù)庫(kù)中創(chuàng)建的每個(gè)對(duì)象(例如約束、默認(rèn)值、日志、規(guī)則以及存儲(chǔ)過程)都對(duì)應(yīng)一行。2010-06-06
SQL?Server表空間碎片化回收的實(shí)現(xiàn)
本文主要介紹了SQL?Server表空間碎片化回收的實(shí)現(xiàn),文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
SQL 外鏈接操作小結(jié) inner join left join right join
SQL 外鏈接操作小結(jié) inner join left join right join...2006-11-11

