3

SQL クエリがあり、For XML Path を使用して結果を XML として生成しています。

その XML 出力を「 a.xml」ファイルに変換し、コンピュータの特定のフォルダに保存する方法について誰か助けてくれませんか?

また知りたいのですが、これを達成するためのBCP以外の方法はありますか?

4

1 に答える 1

5

xp_cmdshell...を使用してみることができます。

-- Read your query results into an XML variable
DECLARE @xml AS XML = (SELECT * FROM YourTable FOR XML PATH)

-- Cast the XML variable into a VARCHAR
DECLARE @xmlChar AS VARCHAR(max) = CAST(@xml AS VARCHAR(max))

-- Escape the < and > characters
SET @xmlChar = REPLACE(REPLACE(@xmlChar, '>', '^>'), '<', '^<')

-- Create command text to echo to file
DECLARE @command VARCHAR(8000) = 'echo ' + @xmlChar + ' > c:\test.txt'

-- Execute the command
EXEC xp_cmdshell @command

エンコードを設定するなど、もう少し制御が必要な場合は、Powershell コマンドを試すこともできます...

DECLARE @command VARCHAR(8000) = 'powershell -Command "Set-Content -Encoding UTF8 C:\test.txt \"' + @xmlChar + '\""'

いくつかのメモ...

コマンドには 8000 文字の長さの制限があるため、大きなファイルには適していません。

マップされたドライブにファイルを保存すると、データベース サーバーでそのドライブが検索されます。したがって、C:\ は、Management Studio を実行している場所ではなく、サーバーの C:\ ドライブを参照します。

を実行するには、特別な権限が必要ですxp_cmdshell

詳細については、ここをクリックしください。

于 2013-09-13T07:56:35.877 に答える