web-dev-qa-db-ja.com

SQLクエリ結果をディスク上のXMLファイルに保存する方法

SQL Server 2012からXMLファイルにテーブルをエクスポートしたいと思います。 いい答え および ここ を見つけましたが、SQL ServerデータベースクエリからXML結果を作成する方法を見つけましたが、この結果をファイルに物理的に保存する方法がまだありません。

SQLクエリは次のとおりです。

SELECT [Created], [Text]
FROM [db304].[dbo].[SearchHistory]
FOR XML PATH('Record'), ROOT('SearchHistory')

この結果を実行するには、Microsoft SQL Server Management Studioを使用します。結果ウィンドウにXMLが表示されますが、保存できません。

コンテキストメニューには[結果に名前を付けて保存]がありますが、98900行ではこのオプションで8GBのメモリが不足しています。

このクエリをディスク上のXMLファイルに直接保存する方法はありますか?

11
Tomas Kubes

SQL Serverの拡張ストアドプロシージャをXMLファイルにエクスポートすることもできます。

ただし、使用する前にSQLサーバーを構成する必要があります。

EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE

SQL Serverでxp_cmdshelが有効になったら。次のコマンドを使用して、データをXMLファイルにエクスポートできます。

EXEC xp_cmdshell 'bcp "SELECT [Created], [Text] FROM [db304].[dbo].[SearchHistory] FOR XML PATH(''Record''), ROOT(''SearchHistory'')" queryout "C:\bcptest.xml" -T -c -t,'
10
M.Ali

SSMSの[ファイルへの結果]オプションはいつでも使用できます。

enter image description here

クエリ実行の結果をディスク上のファイルに直接出力するはずです

5
marc_s

SQL Server 2012でこの仕事をするのは大変です。最後に、sqlcmdでSQL UTF-8ファイルが既にサポートされているため、最終的にSQL Server 2014に更新します。

  1. SQLクエリを作成し、ファイルに保存します。
  2. 以下を実行します:

    sqlcmd -S -U sa -P sapassword -i inputquery_file_name -C65001 -o outputfile_name

1
Tomas Kubes