Можно ли использовать ssis для загрузки файлов XML на сервер SQL - PullRequest
1 голос
/ 18 апреля 2019

Программное обеспечение, используемое моей компанией, генерирует тысячи файлов XML.Мне нужно загрузить данные, содержащиеся в SQL-сервере для отчетности.

Я намерен использовать SSIS для загрузки данных.Я создал цикл для каждого из них, чтобы прочитать каждый из файлов и передать имя файла в качестве переменной в задачу потока данных.DFT прочитает каждый XML и загрузит его в таблицу SQL.У меня возникли проблемы с получением DFT для чтения XML, хотя.

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

Вот XML

<SOFTWAREDATA>
  <version>4</version>
  <date>2018-04-26</date>
  <start_time>13:39:15</start_time>
  <end_time>13:40:14</end_time>
  <user>user</user>
  <group>stn</group>
  <sequence>stn</sequence>
  <line_path>company</line_path>
  <line_path>location</line_path>
  <line_path>productionline</line_path>
  <training_file>filename.txt</training_file>
  <model>model</model>
  <variant>model-RHD</variant>
  <difficulty_level>1</difficulty_level>
  <no_of_operations>1</no_of_operations>
  <no_of_overview_questions>0</no_of_overview_questions>
  <no_of_correct_operations>1</no_of_correct_operations>
  <no_of_wrong_operation>0</no_of_wrong_operation>
  <no_of_missed_operation>0</no_of_missed_operation>
  <no_of_wrong_tool>0</no_of_wrong_tool>
  <no_of_wrong_prop>0</no_of_wrong_prop>
  <no_of_wrong_answers>0</no_of_wrong_answers>  
  <no_of_wrong_overview_answers>0</no_of_wrong_overview_answers>
  <no_of_wrong_direction>0</no_of_wrong_direction>
  <no_of_tool_help>0</no_of_tool_help>
  <no_of_part_help>0</no_of_part_help>
  <no_of_show_operation_help>0</no_of_show_operation_help>
  <no_of_info_help>0</no_of_info_help>
  <no_of_navigation_help>0</no_of_navigation_help>
  <no_of_operation_list_help>0</no_of_operation_list_help>
  <was_sequence_completed_ok>true</was_sequence_completed_ok>
  <priority_mode>false</priority_mode>
  <version_info>info</version_info>
  <build>404</build>
  <revision>51</revision>
  <errors>0</errors>
</SOFTWAREDATA>

, а вот XSD

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="SOFTWAREDATA">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="version" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="date" type="xs:date" />
        <xs:element minOccurs="0" name="start_time" type="xs:time" />
        <xs:element minOccurs="0" name="end_time" type="xs:time" />
        <xs:element minOccurs="0" name="user" type="xs:string" />
        <xs:element minOccurs="0" name="group" type="xs:string" />
        <xs:element minOccurs="0" name="sequence" type="xs:string" />
        <xs:element minOccurs="0" maxOccurs="unbounded" name="line_path" type="xs:string" />
        <xs:element minOccurs="0" name="training_file" type="xs:string" />
        <xs:element minOccurs="0" name="model" type="xs:string" />
        <xs:element minOccurs="0" name="variant" type="xs:string" />
        <xs:element minOccurs="0" name="difficulty_level" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_operations" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_overview_questions" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_correct_operations" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_wrong_operation" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_missed_operation" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_wrong_tool" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_wrong_prop" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_wrong_answers" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_wrong_overview_answers" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_wrong_direction" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_tool_help" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_part_help" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_show_operation_help" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_info_help" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_navigation_help" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="no_of_operation_list_help" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="was_sequence_completed_ok" type="xs:boolean" />
        <xs:element minOccurs="0" name="priority_mode" type="xs:boolean" />
        <xs:element minOccurs="0" name="version_info" type="xs:string" />
        <xs:element minOccurs="0" name="build" type="xs:unsignedShort" />
        <xs:element minOccurs="0" name="revision" type="xs:unsignedByte" />
        <xs:element minOccurs="0" name="errors" type="xs:unsignedByte" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

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

Когда я пытаюсь прочитать файл в службах SSIS, он выбирает только столбец "line_path":

enter image description here

Можно ли сделать то, что я пытаюсь достичь, изменив пакет или XSD?

1 Ответ

0 голосов
/ 14 мая 2019

Для тех, кто может наткнуться на этот пост, я нашел решение ...

Вместо использования источника XML я создал некоторый М-код в Excel Power Query и использовал его внутри источника мощных запросов.Мне удалось получить доступ ко всем XML-файлам одновременно в таблице и загрузить их в SQL, а не циклически перебирать каждый файл по отдельности.

Не стесняйтесь обращаться ко мне, если вам нужна дополнительная информация об этом решении.

...