SSIS Generate XML из схемы и Excel - PullRequest
0 голосов
/ 12 марта 2020

У меня есть файл Excel с деталями заказа. Я могу получить этот файл в SSIS без проблем.

Мне нужно преобразовать переменные в этом файле в файл XML (стандарт Basda уменьшен)

Большая часть информации заголовка xml будет иметь статус c

Это новое для меня, и из того, что я прочитал, мне нужно создать схему. но как вставляются значения? если заказ состоит из 2 строк, задачу нужно будет повторить в один и тот же xml - заказы должны быть отдельными файлами

Я посчитал, что есть смысл поместить данные в таблицу sql и использовать запрос (для xml) как часть потока данных. - это лучшее решение?

XML:

<?xml version="1.0" encoding="utf-8"?>
<Order>
  <OrderHead>
    <Schema>
      <Version>3.0</Version>
    </Schema>
    <Stylesheet>
      <StylesheetOwner>BASDA</StylesheetOwner>
      <StylesheetName>eBIS-XML_simplestylesheet_schema3.00.xsl</StylesheetName>
      <Version>3</Version>
      <StylesheetType>XSL</StylesheetType>
    </Stylesheet>
    <Parameters>
      <Language>EN_GB</Language>
      <DecimalSeparator>.</DecimalSeparator>
      <Precision>20.3</Precision>
    </Parameters>
    <TestFlag />
    <OrderType Code="PUO">Purchase Order</OrderType>
    <OrderCurrency>
      <Currency Code="GBP">GBP</Currency>
    </OrderCurrency>
    <Checksum />
  </OrderHead>
  <OrderReferences>
    <CostCentre />
    <BuyersOrderNumber Preserve="true"></BuyersOrderNumber>
    <SuppliersOrderNumber Preserve="true"></SuppliersOrderNumber>
    <ProjectCode Preserve="true" />
    <ProjectAnalysisCode Preserve="true" />
  </OrderReferences>
  <OrderDate></OrderDate>
  <Supplier>
    <SupplierReferences>
      <BuyersCodeForSupplier></BuyersCodeForSupplier>
    </SupplierReferences>
    <Party></Party>
    <Address>
        <AddressLine></AddressLine>
        <AddressLine></AddressLine>
    <AddressLine></AddressLine>
      <City></City>
      <State></State>
      <PostCode></PostCode>
    </Address>
    <Contact>
      <Name />
      <Switchboard />
      <Fax />
      <Email />
    </Contact>
  </Supplier>
  <Buyer>
    <BuyerReferences>
      <SuppliersCodeForBuyer></SuppliersCodeForBuyer>
      <GLN></GLN>
    </BuyerReferences>
    <Party></Party>
    <BuyersOwnCompanyCode />
    <Address>
      <AddressLine></AddressLine>
      <Street></Street>
      <City></City>
      <State></State>
      <PostCode></PostCode>
    </Address>
    <Contact>
      <Name></Name>
      <Department />
      <DDI />
      <Switchboard />
      <Fax />
      <Email />
    </Contact>
  </Buyer>
  <Delivery>
    <Carrier>
      <Party />
    </Carrier>
    <DeliverTo>
      <DeliveryReferences>
        <BuyersCodeForDelivery></BuyersCodeForDelivery>
        <GLN></GLN>
        <BuyersCodeForLocation></BuyersCodeForLocation>
      </DeliveryReferences>
      <Party></Party>
      <Address>
        <AddressLine></AddressLine>
        <AddressLine></AddressLine>
    <AddressLine></AddressLine>
        <City></City>
        <State></State>
        <PostCode>G</PostCode>
      </Address>
      <Contact>
        <Name />
        <Switchboard />
        <Fax />
      </Contact>
    </DeliverTo>
    <PreferredDate></PreferredDate>
  </Delivery>
  <InvoiceTo>
    <Party></Party>
    <Address>
        <AddressLine></AddressLine>
        <AddressLine>Ct</AddressLine>
    <AddressLine></AddressLine>
      <City></City>
      <State></State>
      <PostCode></PostCode>
    </Address>
    <Contact>
      <Name />
      <Department />
      <DDI />
      <Switchboard />
      <Fax />
      <Email />
    </Contact>
  </InvoiceTo>
 <Settlement>
        <CardDetails>
            <Issuer>Visa</Issuer>
            <Address>
                <HouseNumber />
                <PostCode />
            </Address>
            <ValidFrom>
            </ValidFrom>
            <ExpiresEnd></ExpiresEnd>
            <IssueNumber/>
            <CardNumber></CardNumber>
            <AuthorisationCode>
            </AuthorisationCode>
        </CardDetails>
    </Settlement>
  <OrderLine Action="Add">
    <LineNumber>1</LineNumber>
    <Delivery>
      <DeliverTo>
        <DeliverToReferences>
          <BuyersCodeForDelivery></BuyersCodeForDelivery>
          <BuyersCodeForLocation></BuyersCodeForLocation>
        </DeliverToReferences>
        <Party></Party> 
        <Address>
          <AddressLine></AddressLine>
          <Street></Street>
          <City></City>
          <State></State>
          <PostCode></PostCode>
          <Contact>
            <Name />
            <Switchboard />
            <Fax />
            <Email />
          </Contact>
        </Address>
      </DeliverTo>
    </Delivery>
    <OrderLineReferences>
      <BuyersOrderNumber Preserve="true"></BuyersOrderNumber>
      <ProjectCode Preserve="true" />
      <ProjectAnalysisCode Preserve="true" />
    </OrderLineReferences>
    <Product>
      <BuyersProductCode></BuyersProductCode>
      <SuppliersProductCode></SuppliersProductCode>
      <Description></Description>
    </Product>
    <Quantity UOMCode="EA" UOMDescription="Each">
      <Amount></Amount>
    </Quantity>
    <Price UOMCode="EA" UOMDescription="Each">
      <Units>1</Units>
      <UnitPrice></UnitPrice>
    </Price>
    <PercentDiscount>
      <Percentage></Percentage>
    </PercentDiscount>
    <LineTotal></LineTotal>
    <PreferredDate></PreferredDate>
    <OrderLineInformation>
      <OriginalOrderLineNumber></OriginalOrderLineNumber>
      <DistributionMethod></DistributionMethod>
    </OrderLineInformation>
  </OrderLine>
</Order>

1 Ответ

0 голосов
/ 12 марта 2020

В целом, это должен быть двухэтапный процесс.

(1) Загрузка данных из Excel в SQL промежуточные таблицы сервера.

(2) Создание a SELECT ... FOR XML .. оператор для создания желаемого XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...