にデータを追加し、私はテーブルを持っている:私は、SSISとSFTP経由で定期的にエクスポートする必要がTSQL - XMLのルートノード
CREATE TABLE [dbo].[xdOthPay]
(
AccountNo char(10) NOT NULL,
PaymentDoneOn datetime NULL,
PaymentDoneBy char(30) NULL,
InvoiceNumber char(10) NULL,
AmountPaid decimal(12,3) NULL,
Comments char(254) NULL,
ClientID char(50) NULL,
InstallID char(50) NULL,
BatchID char(14) NOT NULL
)
。これは、その結果
SELECT
AccountNo,
PaymentDoneOn,
PaymentDoneBy,
InvoiceNumber,
AmountPaid,
Comments
FROM
xdMOBOthPay
FOR XML PATH ('Payment'), ROOT ('Payments'), ELEMENTS
::これは私のT-SQL文です
<?xml version="1.0" encoding="utf-8"?>
<Payments ClientId="10865" xmlns="http://someUrl.com/core/xml/payment">
<Payment>
<AccountNo>VALUE</AccountNo>
<PaymentDoneOn>VALUE</PaymentDoneOn>
<PaymentDoneBy>VALUE</PaymentDoneBy>
<InvoiceNumber>VALUE</InvoiceNumber>
<AmountPaid>VALUE</AmountPaid>
<Comments>VALUE</Comments>
</Payment>
</Payments>
:
<Payments>
<Payment>
<AccountNo> 972140</AccountNo>
<PaymentDoneOn>2017-06-08T00:00:00</PaymentDoneOn>
<PaymentDoneBy>R Entry BA13177 </PaymentDoneBy>
<InvoiceNumber> 3804</InvoiceNumber>
<AmountPaid>468.000</AmountPaid>
<Comments>Non-Onl Payment </Comments>
</Payment>
...
非常に近い
輸出の受信機は、この形式を指定しますしかし、私はルート要素(支払い)にデータを取得する必要があります。表ClientID
の列は、ClientID
属性としてルート要素に含める必要があります。 ClientID
は、表のすべての行で一貫しています。
私はいくつかのアプローチを検討しましたが、フォーマットが必要ではありません。
おかげ トゥリン
こんにちは@TT、私はそこに ''以下のいくつかの '' ノードも...そして、あなたはあるかもしれないことを、前提と思い質問から。もちろん、 'CHAR'は' VARCHAR'に置き換えられます。あるいは、 'RTRIM()'を使うかもしれません。 –
Shnugo
@ Shnugoああ、それは間違ったXMLを与えるかもしれない、それを指摘してくれてありがとう。 –
@ Shnugo私は支払い要素を選択するためにサブクエリを使い始めました。支払い要素も名前空間宣言も取得できることを確認するためだけに始めました。場合によっては、SQL ServerでのXML処理が混乱することがあります。 –