4

データベースに静的データをロードするために使用したい XML ファイルがあります。できれば、sqlcmd ":r" を使用してテキストを置換し、SQL スクリプトで xml をハードコードされたデータとして処理できるようにしたいと考えています。

ハードコーディングされたデータを使用すると、スクリプトが機能します

--Working Code
DECLARE @XML XML
SET @XML = '
<clients>
    <client>
        <ClientNumber>ClientA</ClientNumber>
    </client>
    <client>
        <ClientNumber>ClientB</ClientNumber>
    </client>
</clients>
'

私がやりたいことは、代わりに次のようなものです:

DECLARE @XML XML
SET @XML = '
:r .\ClientData.xml
'

ClientData.xml の内容は、以前にハードコードされた xml テキストと同じです。問題は、sqlcmd パーサーがテスト置換を検出せず、代わりに値 ':r .\ClientData.xml' を xml 変数に入れていることです。

目盛りを削除しようとすると、次のエラーが発生します。

Incorrect syntax near '<'.

テキストが適切に置き換えられるように、ティック内で sqlcmd を強制的に実行する方法はありますか?

4

2 に答える 2

8

わかりました、これが私のハックです...

:setvar XMLDATA "'"

declare @mydata xml = 
$(XMLDATA)
:r "Data.xml"
$(XMLDATA)

基本的には、一重引用符をパラメーター化することでパーサーを回避するだけです。

見苦しいですが、有効な xml ファイルを持つことができます。

于 2013-08-24T06:06:38.583 に答える