Дублируйте процесс MS Access 2016 в Microsoft SQL Server 2016 - PullRequest
0 голосов
/ 03 июля 2019

Я разработал процесс Microsoft Access, который я использую для импорта файла XML непосредственно в таблицу Microsoft Access с использованием преобразования XSLT импорта, а затем экспортирую эти же данные в файл XML с помощью преобразования XSLT экспорта.

Этот процесс работает очень хорошо и легко.

Поскольку Microsoft Access - это, по сути, Microsoft SQL, я хотел бы разработать точно такой же процесс в Microsoft SQL Server 2016.

В принципе, я хочучтобы указать импортируемый файл XML, укажите таблицу SQL, в которую будут импортированы данные XML, укажите файл преобразования XSLT импорта и выполните процесс.

Кроме того, я хочу указать натаблицу SQL, которую нужно экспортировать, укажите файл экспорта XSLT-преобразования, укажите имя файла экспорта XML, который необходимо создать, и выполните процесс.

Я создал аналогичный процесс в SQL с использованием хранимых процедур,Процесс, который я создал, обычно работает, но я не могу получить данные для правильного форматирования.См. Вопрос Извлечение данных для XML и Вывод в файл для сохранения в папке

Это именно то, что я делаю в Microsoft Access 2016:

Импорт:

Right Click on the Table to be imported into
Choose Import, then XML File
Point to the XML File to be Imported, OK
Choose Append Data to Existing Table(s)
Choose Transform
Choose the XSLT Import XSLT File to be used
Click OK, OK, and Close

Экспорт:

Right Click on the Table to be Exported from
Choose Export, then XML File
Point to the XML File to be Exported into, OK
Choose Data (XML) and then More Options
Choose Transforms
Choose the XSLT Export XSLT File to be used
Click OK, OK, and Close

Импорт XSLT-файла:

    <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="/">
      <ServiceEvents>
        <xsl:for-each select="ServiceEvents/ServiceEvent">
        <ServiceEvent>
          <Service_SRI><xsl:value-of select="SourceRecordIdentifier"/></Service_SRI>
          <Expend_Mod_1><xsl:value-of select="ServiceEventExpenditureModifiers/ServiceEventExpenditureModifier[1]"/></Expend_Mod_1>
          <Expend_Mod_2><xsl:value-of select="ServiceEventExpenditureModifiers/ServiceEventExpenditureModifier[2]"/></Expend_Mod_2>
      </ServiceEvent>
      </xsl:for-each>
     </ServiceEvents>
    </xsl:template>
</xsl:stylesheet>

Экспорт XSLT-файла:

<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="/">
    <ServiceEvents>
      <xsl:for-each select="dataroot/ServiceEvent">
      <ServiceEvent>
        <SourceRecordIdentifier><xsl:value-of select="Service_SRI"/></SourceRecordIdentifier>
       <ServiceEventExpenditureModifiers>
               <ServiceEventExpenditureModifier><xsl:value-of select="Expend_Mod_1"/></ServiceEventExpenditureModifier>
               <ServiceEventExpenditureModifier><xsl:value-of select="Expend_Mod_2"/></ServiceEventExpenditureModifier>
        </ServiceEventExpenditureModifiers>
      </ServiceEvent>
      </xsl:for-each>
    </ServiceEvents>
    </xsl:template>
</xsl:stylesheet>

Определение таблицы доступа:

                                       Record-1      Record-2
Service_SRI         Number              1              2
Expend_Mod_1        Short Text          C1             C3
Expend_Mod_2        Short Text          C2             C4

Файл XML:

<?xml version="1.0" encoding="UTF-8"?>
<ServiceEvents>
  <ServiceEvent>
    <SourceRecordIdentifier>1</SourceRecordIdentifier>
    <ServiceEventExpenditureModifiers>
      <ServiceEventExpenditureModifier>
        <ModifierCode>C1</ModifierCode>
      </ServiceEventExpenditureModifier>
      <ServiceEventExpenditureModifier>
        <ModifierCode>C2</ModifierCode>
      </ServiceEventExpenditureModifier>
    </ServiceEventExpenditureModifiers>
  </ServiceEvent>
  <ServiceEvent>
    <SourceRecordIdentifier>2</SourceRecordIdentifier>
    <ServiceEventExpenditureModifiers>
      <ServiceEventExpenditureModifier>
        <ModifierCode>C3</ModifierCode>
      </ServiceEventExpenditureModifier>
      <ServiceEventExpenditureModifier>
        <ModifierCode>C4</ModifierCode>
      </ServiceEventExpenditureModifier>
    </ServiceEventExpenditureModifiers>
  </ServiceEvent>
</ServiceEvents>

Я ожидаю, что выходной файл XML будет выглядеть точно так же, как и представленный входной файл XML.

Я запрашиваю следующее: Код Microsoft SQL Server, который яможно использовать для выполнения того же процесса, что и в Microsoft Access, но в Microsoft SQL Server с использованием XSLT-файлов, представленных выше.

Спасибо за любые ваши предложения.

...