SQL查詢結果匯出XML檔案簡單的方法

來源:互聯網
上載者:User

最近需要把資料導成XML,不想通過編程實現,手工使用匯入匯出工具又覺得麻煩,想想還是寫SQL語句啟動並執行好,以後擴充也方便,但Microsoft好像並沒有提供什麼SQL語句可以直接匯出方法,用bcp匯出的都是文本、EXCEL或其他什麼的,本來以為可以把查詢結果通過bcp匯出文本的形式,但經過N次實驗,匯出的XML不知道為什麼都會自動換行,一開啟就會報錯,百思不得其解,而且匯出的XML沒有一個<Root>,這也是個麻煩事。

首先要做的準備工作是啟用SQL中master資料庫中的系統擴充預存程序[master].sys.xp_cmdshell。通過如下方法開啟此預存程序:

-- 允許配置進階選項EXEC sp_configure 'show advanced options', 1GO-- 重新設定RECONFIGUREGO-- 啟用xp_cmdshellEXEC sp_configure 'xp_cmdshell', 1GO--重新設定RECONFIGUREGO--執行想要的xp_cmdshell語句Exec xp_cmdshell 'query user'GO--用完後,要記得將xp_cmdshell禁用(從安全形度安全考慮)-- 允許配置進階選項EXEC sp_configure 'show advanced options', 1GO-- 重新設定RECONFIGUREGO-- 禁用xp_cmdshellEXEC sp_configure 'xp_cmdshell', 1GO--重新設定RECONFIGUREGO

另外關於 xp_cmdshell 預存程序的介紹可以去參考一下另一篇文章:xp_cmdshell預存程序

最關鍵的就是這兩個問題:1.如何使用XML不自動換行;2.如何增加一個<Root>標籤;

查看了N篇與其相關的線上說明,一個xml的資料類型提醒了我,覺得可以把查詢結果做為一個變數儲存後再匯出,通過串連一個視圖來增加<Root>標籤,以下是範例代碼:

USE testGO--建立一個表CREATE TABLE test_blan(x VARCHAR(100),y VARCHAR(100))GO--插入資料INSERT INTO test_blan SELECT 'a','a' UNION ALLSELECT 's','s' UNION ALLSELECT 'd','d' UNION ALLSELECT 'f','f' UNION ALLSELECT 'g','g' UNION ALLSELECT 'q','q' UNION ALLSELECT 'w','w' UNION ALLSELECT 'e','e' UNION ALLSELECT 'r','r' UNION ALLSELECT 't','t' UNION ALLSELECT 'y','y' --建立一個視圖用於增加<Root>標籤CREATE VIEW test_log AS SELECT 'root' aaaa --建立一個表用於儲存產生的XML結果CREATE TABLE TT(aa XML )--定義一個XML的變數DECLARE @x XML--查詢產生XML結果並儲存到TT表中SET @x = (SELECT * FROM test_log IRoot,test_blan IData FOR XML AUTO) INSERT TT VALUES (@x)
-- 先將原先的123.xml檔案刪除exec master.dbo.xp_cmdshell 'del E:\123.xml'--通過bcp將TT中的XML結果輸出EXEC [master].sys.xp_cmdshell 'bcp Test.dbo.TT out E:/123.xml -c -T -k'--刪除表及視圖DROP TABLE TT DROP VIEW Test_Log

這樣匯出的XML就是個完整的檔案了。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.