2014-09-16 3 views
1

SSIS를 사용하여 SQL Server 테이블 아래에 XML을로드하려고합니다. 원본 XML :SSIS를 사용하는 XML에서 XSD로

<RESULTS> 
    <SEARCHRESULT RECORDS="3014"> 
     <ROW ROWNUM="1" PKField="EntityCounter"> 
      <COLUMN COLNUM="1" NAME="EntityCounter" DATATYPE="number">1234</COLUMN> 
      <COLUMN COLNUM="2" NAME="Reference ID" DATATYPE="string">5678</COLUMN> 
      <COLUMN COLNUM="3" NAME="Name" DATATYPE="string">XYZ</COLUMN> 
      <COLUMN COLNUM="4" NAME="Entity Type" DATATYPE="string">LMN</COLUMN> 
     </ROW> 
    </SEARCHRESULT> 
</RESULTS> 

대상 테이블이 4 열이 있습니다 EntityCounter, ReferenceID, 이름과 EntityType을. 이러한 파일에 대해 XSD를 만들 때 예상되는 결과를 얻지 못합니다.
XML 소스는 출력에서 ​​ROW_ID, RWONUM, PKField 및 SEARCHRESULT_Id라는 네 개의 열을 생성합니다. 수정 된 XML : 나는 아래와 같은 XML 수정 때

내가 데이터를로드 할 수 있었다

<RESULTS> 
    <SEARCHRESULT RECORDS="3014"> 
     <ROW ROWNUM="1" PKField="EntityCounter"> 
      <EntityCounter>1234</EntityCounter> 
      <ReferenceID>5678</ReferenceID> 
      <Name>XYZ</Name> 
      <EntityType>LMN</EntityType> 
     </ROW> 
    </SEARCHRESULT> 
</RESULTS> 

내가 만들고 위의 파일에 대한 XSD를 사용하여 XML 소스는 출력에서 ​​일곱 열을 생성 ROWNUM을 , PKFiled, EntityCounter, ReferenceID, Name, EntityType 및 SEARCHRESULT_Id입니다.

원본 XML을 사용하여 유사한 출력을 생성 할 수 있습니까?

+0

처리하기 전에 xslt를 사용하여 xml을 수정하거나 데이터 흐름에서 피벗 변환을 사용하여 열을 열에 배치 할 수 있습니다. xsd에 익숙하지 않아 거기에서 할 수있는 마법이 있는지 알 수 없습니다. –

+0

입력 사항을 보내 주셔서 감사합니다. – Swapnil

답변

0

@MarkWojciechowicz에게 XSLT를 사용하는 옵션을 제안 해 주셔서 감사합니다 ..! 내가 필요한 XSLT 코드 아래 사용하는 형식으로 원본 XML을 변환 할 수 있었다 :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="COLUMN[@NAME]"> 
     <xsl:element name="{concat('Col_',translate(@NAME,' ',''))}"> 
      <xsl:value-of select="."/> 
     </xsl:element> 
    </xsl:template> 

</xsl:stylesheet> 

수정 된 XML이 SSIS를 사용하여로드 할 수 있습니다.