8

1 つの回答2 番目の回答、およびsqlcmdの情報ページを読んだ後でも、次の操作を実行できません。

バッチ ファイルで sqlcmd を使用して結果を xml ファイルにクエリしようとしています。

バッチファイルは次のようになります。

sqlcmd -R -d DBName -i "c:\inputquery.sql" -h-1 -y 0 -o "c:\outputfile.xml"

簡略化された SQL クエリは次のとおりです。

:XML ON
SELECT '<?xml version="1.0" encoding="UTF-8"?>' +
CAST((
SELECT Columns FROM Table
FOR XML PATH ('Product'), ROOT('Products')
) 
AS NVARCHAR(MAX))

出力は、切り捨てられた文字列を含む約 1025Kb の xml ファイルです。1MBに切り捨てられると思いますが、どうすればこれを防ぐことができますか? 目標は、完全なクエリ結果を xml ファイルに取得することです。私の知る限り、すべてのオプションはすでに使用されています。ちなみにTSQL SSMS2008を使用しています。

4

2 に答える 2

16

-y0 オプションを使用して、今日同じ問題に遭遇しました。私の出力は正しいように見えます。他の人が同じことに遭遇するのを助けるかもしれないので、私は自分の発見を投稿すると思った.

sqlcmd -Sxxxxxxx -E -dmaster -h-1 -y0 -Q" my query that produces long results in here;" > "D\:out.txt"

-h-1列ヘッダーも削除します。

于 2016-05-31T14:21:05.300 に答える
-1

XML を XML タイプとして出力する必要があります。通常、これはTYPEに加えてディレクティブを使用して行われFOR XMLます。ただし、Xml 宣言を追加する場合は、すべてを xml 変数に入れてから選択する必要があります。元:

declare @xml as xml
select @xml = cast(('<?xml version="1.0" encoding="UTF-16"?>'+cast((SELECT Columns FROM Table FOR XML PATH ('Product'), ROOT('Products')) as nvarchar(max))) as xml)

select @xml

編集:申し訳ありません。Sql はネイティブ エンコーディング (UTF-16) でストリームを XML として表示し、宣言を削除するため、Xml 宣言の追加は機能しません。

編集

于 2014-07-21T17:54:47.940 に答える