sqlcmd
からXMLファイルとして保存する単一のXML列を生成するストアドプロシージャを実行しています。SQLCMDを使用してストアドプロシージャからXMLを保存するときの問題
私が抱えている問題は、たとえば、XML要素に多くの情報が含まれていて、すべての情報が要素に入る前に切り捨てられると、XMLが適切にフォーマットされていないことです。
もう1つの問題は、XMLファイル全体が十分に近いところにないことです。 XMLファイルに格納する必要がある行は約26000行あり、実行中の行には約600行しか置かれません。
これは私が実行しているストアドプロシージャです:
CREATE PROCEDURE usp_MyProc
AS
;WITH XMLNAMESPACES('Products' AS p)
SELECT
ProductID
, ProductName
, Photo
, Price
, Attribute1 AS [p:attribute/@name]
, ISNULL(p.Attribute1Value, '') AS [p:attribute]
, ''
, Attribute2 AS [p:attribute/@name]
, ISNULL(Attribute2Value, '') AS [p:attribute]
, ''
, Attribute3 AS [p:attribute/@name]
, ISNULL(Attribute3Value, '') AS [p:attribute]
, ''
, Attribute4 AS [p:attribute/@name]
, ISNULL(Attribute4Value, '') AS [p:attribute]
, ''
FROM MyDatabase.dbo.MyTable
FOR XML PATH('Item'), ROOT('Products')
そして、これは私が、コマンドプロンプトから実行していますSQLCMDです:
sqlcmd -S "MyServer" -d "MyDatabase" -E -Q "EXEC usp_MyProc" -o "C:\temp\Test.xml" -W
私は:XML ON
いくつかの場所で読んだことがありますこれを整理しますが、私はストアドプロシージャとSQLCMD
の両方に入れましたが、それを認識しません。
何か助けていただければ幸いです。
は、現時点ではこれをテストする時間がない正常に動作しますが、一般的にはプロンプト:1)純粋な読書をして行われるべきではありませんSP、XMLを返すスカラー関数を作成し、 'SELECT dbo.MyFunction()'で呼び出そうとします。 2)あなたは名前空間 "p:"を使用していますが、これはWITH XMLNAMESPACESなしではうまくいかないでしょう。 3) '、TYPE'を' ROOT() 'の後ろに設定するのに役立つかもしれません。 – Shnugo
WITH XMLNAMESPACESを使用しています。これをコピーして忘れました。私は編集して入れます。 。ありがとう – Cornflake2068