2

複数の名前空間 XML ファイルをソースとして使用しています。すべての名前空間属性値を DW の 1 つのテーブルに格納する必要があります。

そのタイプのファイルをソースとして使用する方法を提案できる人はいますか?

4

1 に答える 1

4

最近この問題に遭遇したので、これがどのように解決されたかについていくつかのメモを投稿したいと思いました. 複数の名前空間を持つ XML ドキュメントをロードする前に、XSLT 変換を使用して変換する必要があります。SSIS は、XML タスクを介してこれを行うことができます。

ツールバーから XML タスクを取得し、それを制御フローに配置します

ここに画像の説明を入力

ファイル システムに新しい XSLT ファイルを作成し、次のコードをコンテンツとして使用します。

<?xml version="1.0" encoding="utf-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/2013/XSL/Transform"> <xsl:output method="xml" indent="no" /> <xsl:template match="/|comment()|processing-instruction()"> <xsl:copy> <xsl:apply-templates /> </xsl:copy> </xsl:template> <xsl:template match="*"> <xsl:element name="{local-name()}"> <xsl:apply-templates select="@*|node()" /> </xsl:element> </xsl:template> <xsl:template match="@*"> <xsl:attribute name="{local-name()}"> <xsl:value-of select="." /> </xsl:attribute> </xsl:template> </xsl:stylesheet>

XML タスクを開き、次のプロパティを設定します。

  • 操作タイプ = XSLT
  • SourceType = ファイル接続
  • ソース = インポート ファイル用に設定したソース用に設定されたファイル接続。
  • SaveOperationResults = True
  • DestinationType = ファイル
  • 宛先 = 宛先ファイル用に設定されたファイル接続
  • OverwriteDestination=優先として設定
  • SecondOperandType=ファイル接続
  • SecondOperand= 上記の XSLT コードを保持するように設定されたファイル

ここに画像の説明を入力

これらのアイテムがパッケージに追加されると、それを実行できるようになり、名前空間が削除された 2 番目のファイルが生成されます。

于 2013-11-24T08:08:24.783 に答える