2012-02-01 5 views
3

SSISを使用して、クエリ結果セットのXML表現をテキストファイルに抽出しようとしています。私のクエリは、SSMSで実行するときに必要な正確なXML出力を現在正常に抽出しています。私は、この結果セットをSSISパッケージで使用してファイルを作成するためのあらゆるトリックを試しました。SSISを使用してテーブルデータのXML表現をファイルに抽出する

XMLクエリの出力がTEXTとして扱われ、SSISがTEXT、NTEXTまたはIMAGEをファイルの宛先にプッシュできないため、OLEソースをフラットファイルに移植するためのデータフローの使用は機能しません。

SQLタスクを実行してユーザー変数を埋めるようにしてから、このユーザー変数の内容をファイル出力に書き込むためにスクリプトタスク(C#を使用して記述)を使用しましたが、ユーザー変数は常に空です。私は分かりませんが、XMLがTEXTまたはIMAGEとして扱われ、ユーザー変数がこれを処理しないため、これが再び疑わしいです。

クエリがこの形態である: はのdataTable WHERE dataTable.FIELD = '値' XML AUTO FOR * FROM を選択して、ROOT( 'RootVal')

得られたデータセットはよくXMLを形成しているが、私はどのようにファイルに結果セットから取得するかを把握することはできません。

C#4.0でこれを行うためのコンソールアプリケーションを書くのは比較的簡単な作業ですが、コンソールアプリケーションとスケジューラを作成する前に、SSISで実行できないことを少なくとも証明する必要があります。

+1

を倒すことでしょうか?それはコンソールアプリケーションで行うことができる場合は、スクリプトタスクで行うことができます... – GarethD

答えて

3

申し訳ありませんが、あなたにはSSISオプションがあります:Export Column Transformation。私は

SELECT 
    * 
FROM 
(
    SELECT * FROM dbo.spt_values FOR XML AUTO, ROOT('RootVal') 
) D (xml_node) 
CROSS APPLY 
(
    SELECT 'C:\ssisdata\so_xmlExtract.xml' 
) F (fileName) 

とOLE DBクエリを定義

これは1行とデータフローに2列になります。私はその後、エクスポート列変換を取り付け、

ほとんどが切り捨てられた結果は写真で、

より詳細な回答

<RootVal> 
    <dbo.spt_values name="rpc" number="1" type="A " status="0"/> 
    <dbo.spt_values name="dist" number="8" type="A " status="0"/> 
    <dbo.spt_values name="deferred" number="8192" type="V " low="0" high="1" status="0"/> 
</RootVal> 
に従ってください xml_node ファイルパス列として抽出カラム などとfileNameでそれを有線このQで利用可能です& A Export Varbinary(max) column with ssis

+0

魅力のように動作します。おそらく最も直感的ではないソリューションかもしれませんが、誰かがこれをやる方法を知ってうれしいです。 – urbadave

+0

質問とこの回答は、XMLデータをフラットファイルにエクスポートする方法に関係します。提供されたクエリとそれをどのように書き換えることができるのかを固定しないでください。これは、将来の読者に再現可能な参照点を与えるために存在します。 OPはクエリを提供しなかったので、これは代用として存在します。 – billinkc

0

BillInKCの答えはこれまでに見た中で最高ですが、SQLは単純化できますRクロス)が適用されます。

SELECT X.*, 'output.xml' AS filename 
FROM (SELECT * FROM #t FOR XML PATH('item'), ROOT('itemList')) AS X (xml_node) 

出力と同じ構造になります。それは完全にスクリプトタスクでそれをすべて行うために、運動のポイントを

xml_node           filename 
-------------------------------------------------- ---------- 
<itemList><item><num>1000</num></item></itemlist> output.xml 

(1 row(s) affected) 
+0

不幸なダウン・ダウン者が質問をうまくやってみましたか?問題は何でしたか? – ajeh

関連する問題